You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+22-5Lines changed: 22 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,14 +2,26 @@
2
2
3
3
## A zero-cost, zero-framework, dynamic Farcaster Frame template
4
4
5
+
This is the "simplest" version of a Frame that can do all of the things a Frame should be able to do. It may be more than you need. It may be less. But it's a great place to start, IMHO.
6
+
5
7
### My needs for starting this were:
6
8
7
-
1.**🚱 Zero Framework:** Didn't want a framework baked in, and most options default to Next.js/React
9
+
1.**🚱 Zero Framework:** Didn't want a framework baked in, and most options default to Next.js/React. No offense, but those seem like overkill.
8
10
2.**🆓 Zero Cost:** Frames are for experiments! Experimenting is more fruitful when it's free.
9
11
3.**🧱 Stable:** The domain and its attached state should be reasonably stable over the horizon of an experiment. Replit can only give you this at cost (see above)
10
-
4.**🤸 Dynamic Generation:** You can get all the above pretty easy with static files, but let's be real: we want dynamism!
11
-
5.**🤤 Small:** and hopefully easy. Nobody to impress here.
12
-
6.**😎 Cool Tech:** We want to be at the 🤬 edge here, people!
12
+
4.**🤸 Dynamic:** You can get all the above pretty easy with static files, but let's be real: we want dynamism or something! And, as social animals, we want to act and react.
13
+
5.**🤤 Small:** and hopefully easy. Nobody to impress here. If my quite smooth brain can write this, your quite prune-like brain can understand it to.
14
+
6.**😎 Cool Tech:** We want to be at the 🤬 edge here, people! I admit this is somewhat in tension with "simplest".
15
+
16
+
### Features
17
+
18
+
+**⑃ Flow Definition**: Define button & input behaviour within each frame file.
19
+
+**🎇 Static & Dynamic Images**: Support for both static & dynamic frame images.
20
+
+**🧐 Validate trustedData**: Verify the current payload's `trustedData` via Farcaster Hubs (eg. wield.co), to protect against tomfoolery.
21
+
+**⌨️ Text inputs**: Accept that UGC with byte-level protection. Our `safeDecode` function leverages `dompurify` to give you a literal, and *helpful* purity test. The judgement of whether the content meets your standards is still up to you, though.
22
+
+**↗️ Redirect Support:** Because frames can't do everything ... yet! And, doggonit, there's a whole *world*~~*wide**web*~~ out there for y'all to explore.
23
+
+**🎟️ Mint from frame (COMING SOON):** Using Syndicate + Base, this boilerplate gives you what you need to make random interactions with your frame *unforgettable*. Is that a good idea? That sounds like a you problem.
24
+
+**🔐 Anti-theft:** Don't bet the engagement farm! Bind your Frame to a specific cast or account so nobody else can get your likes, follows, recasts ... and respect. Capisci?
1. Run `netlify dev --live` will give [proxy your local machine](https://docs.netlify.com/cli/local-development/#share-a-live-development-server) to the *world**wide**web*.
31
44
2. Test that link in the Warpcast Embed UI: https://warpcast.com/~/developers/embeds
32
45
33
46
### Defining your Frame
34
47
35
-
We'll update with a proper docs soon, but you'll find everything you need in the `public` and `src` directories.
48
+
We'll update with a proper docs soon*, but you'll find everything you need in the `public` and `src` directories.
36
49
37
50
To add a new frame, create a `{frameName}.js` file in `/src/frames` and add it as an import to `/src/frames/index.js`. You'll find examples of dynamic (eg. rendered HTML) and static (eg. served from the public folder) frames in that directory.
38
51
52
+
*Y'all are welcome to help me write them.
53
+
39
54
### Deploying
55
+
40
56
This should be as simple as [watching a git repo for commits](https://docs.netlify.com/site-deploys/create-deploys/).
41
57
42
58
You may encounter a 502 gateway error after deployment on the `/og-image` endpoint. This is a known issue with the `sharp` module this repo relies upon. We'll hopefully have this fixed by default, but for now there are workarounds. Follow this thread for fixes:
@@ -48,6 +64,7 @@ I am a designer larping as a dev. I invite your collaboration and feedback. Plea
48
64
And please! Can we make it simpler?
49
65
50
66
### Roadmap
67
+
51
68
1. Less bad
52
69
2. More better
53
70
3. Migration to the [everywhere.computer](https://everywhere.computer)
0 commit comments