Infinitely growing Frames builder with integrated Farcaster Hub APIs and Revenue Sharing.
https://github.com/FTCHD/frametrain/assets/144691102/6c901347-1a28-4a25-93f5-c6bc54076d5a
This repository is mostly geared towards template artists. If you're looking to create and posts Frames, visit FrameTrain.
Templates live in the @/templates
folder. Each template follows a clear folder structure:
handlers
ā a collection of 1 or more functions, used as controllers for displaying the views
. Must contain at least an initial
handler.views
ā a collection of 1 or more React components, rendered as the Framesā image using satori
. Must contain at least a Cover
view.Inspector
ā a React component displayed in the Frame Editor. Used to get input from the user, transform it as needed and saving it as the Frameās config. This config will be used by the handlers
to properly display the views
.cover
ā a cover image for the template, displayed in the template selection screen.Everything else is completely up to you. You can have a hooks
, types
, utils
, or an assets
folder if you want.
FT validates each message without requiring template creators to integrate external APIs. In order to enable message validation for your template, just set the requireValidation
flag in the template config.
Right now, the API provider used is Neynar. Neynar requests seem cheap at first, but having hundreds or thousands of Frames making requests hasn't been tested.
The choice stands between an internal Hub run by FT, continuing to use Neynar, or switching to Airstack. Itās not clear right now which option is the right one. Reach out if you have any suggestions!
Hosting Frames is currently free, however that will change.
Soon you will be able to subscribe and host your Frames with no imposed limits (as opposed to the always free tier which would have some limits). The revenue from subscriptions will be shared with template creators, depending on usage.
Usage is counted as calls coming from a Farcaster client to any of the templateās handlers
. The more Farcaster users interact with a Frame, the more its template creator earns.
At the end of the month, costs are subtracted, the number of calls are added to calculate a ratio, and each creator is rewarded.
This part is still a WIP, and the train has to run for a bit in order to make further decisions on the exact mechanism.
The FrameTrain Frames SDK includes many useful Functions, Hooks, and UI Components. View the full documentation here.
useFarcasterName
useFarcasterId
useFrameId
useFrameConfig
useFrameStorage
useFramePreview
useResetPreview
useUploadImage
Thank you for considering making FrameTrain better.
The project currently needs help with:
For a good experience, please install the Biome extension. This repository uses Biome, not ESLint.
FrameTrain either uses, has used, or got inspired by the following libraries:
We are very grateful for their contributions to the Frames ecosystem!