https://github.com/reiver/go-frameproto
Package frameproto provides tools for the Frame Protocol — which is also known as Farcaster Frames, for the Go programming language.
https://github.com/reiver/go-frameproto
farcaster farcaster-frames
Last synced: about 1 year ago
JSON representation
Package frameproto provides tools for the Frame Protocol — which is also known as Farcaster Frames, for the Go programming language.
- Host: GitHub
- URL: https://github.com/reiver/go-frameproto
- Owner: reiver
- License: mit
- Created: 2024-02-13T16:50:09.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-07-10T13:36:50.000Z (almost 2 years ago)
- Last Synced: 2025-02-02T05:44:42.439Z (about 1 year ago)
- Topics: farcaster, farcaster-frames
- Language: Go
- Homepage:
- Size: 43.9 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# go-frameproto
Package **frameproto** provides tools for the **Frame Protocol** — which is also known as **Farcaster Frames**, for the Go programming language.
The specification for the **Frame Protocol** is at:
https://docs.farcaster.xyz/reference/frames/spec
## Documention
Online documentation, which includes examples, can be found at: http://godoc.org/sourcecode.social/reiver/go-frameproto
[](https://godoc.org/sourcecode.social/reiver/go-frameproto)
## Explanation
The **Frames Protocol**, also known **Farcaster Frames**, is a simple web-based technology used for making applications.
It uses HTML without really using HTML, so that **Frames Protocol** applications work with clients that don't support the **Frames Protocol**.
The fall-back being OpenGraph.
Really, a **Frames Protocol** application is mostly made up of **images** and **buttons** on the client-side (that are specified using HTML `` element) with a back-end that gets HTTP `POST`ed to, which can return a new "page" with an **image** and **buttons**, and so on and so on.
This choice of just being mostly **images** and **buttons** actually makes the **Frames Protocol** simpler to create a viewer from scatch.
No need to implement all Web technologies.
No need to worry about security and privacy holes that Web technologies introduce.
Although the **Frames Protocol** _could_ be used outside of **Farcaster**, at the time of writing, **Farcaster** clients (such as **Warpcast**) are the only major (client-side) platform to support it.
(The server-side of the Frames Protocol, which is called a Frame Server, is an just HTTP resource — which some might loosely call an HTTP (or HTTPS) URL.)
Enough talking — let's look at some code.
Here is the client-side of a **Frames Protocol** application:
```html
```
It is just HTML.
Although this would need to be embedded into an HTML document, so really it would be something more like this:
```html
```
This package provides you tools for creating this.
For example:
```golang
func ServeHTTP(responseWriter http.ResponseWriter, request *http.Request) {
// ...
frameproto.WriteFrame(responseWriter, frameproto.VersionVNext)
frameproto.WriteFrameImage(responseWriter, frameImageURL)
// ...
}
```
## Import
To import package **frameproto** use `import` code like the follownig:
```
import "sourcecode.social/reiver/go-frameproto"
```
## Installation
To install package **frameproto** do the following:
```
GOPROXY=direct go get https://sourcecode.social/reiver/go-frameproto
```
## Author
Package **frameproto** was written by [Charles Iliya Krempeaux](http://reiver.link)