Code Monkey home page Code Monkey logo

go-frameproto's Introduction

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

GoDoc

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 <meta> element) with a back-end that gets HTTP POSTed 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:

<meta property="fc:frame" content="vNext" />
<meta property="fc:frame:image" content="https://example.com/path/to/image.png" />
<meta property="og:image" content="https://example.com/path/to/image.png" />

It is just HTML.

Although this would need to be embedded into an HTML document, so really it would be something more like this:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charset="utf-8" />

<meta property="fc:frame" content="vNext" />
<meta property="fc:frame:image" content="https://example.com/path/to/image.png" />
<meta property="og:image" content="https://example.com/path/to/image.png" />

</head>
<body>
</body>
</html>

This package provides you tools for creating this.

For example:

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

go-frameproto's People

Contributors

reiver avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.