MCPcopy Index your code
hub / github.com/gomatcha/matcha

github.com/gomatcha/matcha @v0.2.0

repository ↗ · DeepWiki ↗ · release v0.2.0 ↗ · + Follow
5,947 symbols 12,117 edges 188 files 1,981 documented · 33% updated 7y agov0.2.0 · 2017-09-27★ 3,48433 open issues
README

Matcha - iOS and Android apps in Go

gomatcha.io

Matcha is in early development! There are many rough edges and APIs may still change. Please file issues for any bugs you find.

What is Matcha?

Matcha is a package for building iOS and Android applications and frameworks in Go. Matcha provides a UI compenent library similar to ReactNative and exposes bindings to Objective-C and Java code through reflection. The library also provides Go APIs for common app tasks.

Examples

settings-example insta-example todo-example

Installation

Matcha requires the following components to be installed. Unfortunately only macOS is supported at this time.

  • Go 1.8
  • Xcode 8.3
  • Android Studio 2.3
  • NDK
  • Protobuf 3.3 - ObjC and Java

To start, fetch the project and install the matcha command.

go get gomatcha.io/matcha/...

We build the Go standard library for iOS and Android with the following command. This may take awhile. The output is installed at $GOPATH/pkg/matcha. If your path doesn't contain $GOPATH/bin, you may need to replace these calls with $GOPATH/bin/matcha.

matcha init

Now build the example project. The output is installed at $GOPATH/src/gomatcha.io/matcha/ios/MatchaBridge/MatchaBridge/MatchaBridge.a and $GOPATH/src/gomatcha.io/matcha/android/matchabridge.aar.

matcha build gomatcha.io/matcha/examples

We can now open the sample iOS project.

open $GOPATH/src/gomatcha.io/matcha/examples/ios-app/SampleApp.xcworkspace

Set the Development Team in Xcode under General > Signing and select SampleApp in the target dropdown in the upper right. Then run the App!

For Android simply open the sample Android Studio project and hit run!

open -a /Applications/Android\ Studio.app $GOPATH/src/gomatcha.io/matcha/examples/android-app/SampleApp

You can try out other examples by replacing "gomatcha.io/matcha/examples/settings New" in AppDelegate.m and MainActivity.java with the name of the example.

Try it out!

Contact us

Extension points exported contracts — how you extend this code

PointNotifier (Interface)
PointNotifier wraps the comm.Notifier interface with an additional Value() method which returns a Point. [7 implementers]
layout/geometry.go
Layouter (Interface)
Layouter ... TODO(KD):... [12 implementers]
layout/layouter.go
FloatInterpolater (Interface)
ColorInterpolater represents an object that interpolates between floats given a float64 between 0-1. [7 implementers]
animate/float.go
ColorInterpolater (Interface)
ColorInterpolater represents an object that interpolates between colors given a float64 between 0-1. [7 implementers]
animate/color.go
Notifier (Interface)
Notifier is the interface the wraps the Notify and Unnotify methods. Notify stores the function f, and calls in the fut [28 …
comm/notify.go
ViewFactory (Interface)
(no doc) [13 implementers]
android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/MatchaView.java
Option (Interface)
(no doc) [7 implementers]
view/view.go
ViewOrBuilder (Interface)
(no doc) [6 implementers]
examples/customview/android/CustomViewLib/customview/src/main/java/io/gomatcha/customview/proto/CustomViewProto.java

Core symbols most depended-on inside this repo

get
called by 180
cmd/Bridge.java
Add
called by 136
layout/table/table.go
setMessage
called by 91
android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/proto/view/PbAlert.java
Width
called by 82
layout/layouter.go
Left
called by 81
layout/layouter.go
Height
called by 70
layout/layouter.go
LeftEqual
called by 62
layout/constraint/constraint.go
mergeFrom
called by 61
android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/proto/pointer/PbPointer.java

Shape

Method 5,063
Function 316
Struct 248
Class 190
Interface 84
TypeAlias 34
Enum 12

Languages

Java71%
Go28%
Python1%

Modules by API surface

android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/proto/pointer/PbPointer.java542 symbols
android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/proto/text/PbText.java503 symbols
android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/proto/view/android/PbStackView.java395 symbols
android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/proto/view/PbView.java375 symbols
android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/proto/view/PbTextInput.java272 symbols
android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/proto/Proto.java247 symbols
android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/proto/layout/PbLayout.java246 symbols
android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/proto/view/android/PbPagerView.java172 symbols
android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/proto/view/PbAlert.java144 symbols
android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/proto/view/PbScrollView.java126 symbols
android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/proto/paint/PbPaint.java122 symbols
android/MatchaLib/matcha/src/main/java/io/gomatcha/matcha/proto/app/PbApp.java116 symbols

For agents

$ claude mcp add matcha \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact