Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/artlu99/decent-bookmarks
Decent Bookmarks, a Farcaster shared data project launched 20 May 2024
https://github.com/artlu99/decent-bookmarks
farcaster farcaster-client
Last synced: 27 days ago
JSON representation
Decent Bookmarks, a Farcaster shared data project launched 20 May 2024
- Host: GitHub
- URL: https://github.com/artlu99/decent-bookmarks
- Owner: artlu99
- License: mit
- Created: 2024-05-20T20:45:34.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-07-25T13:58:36.000Z (4 months ago)
- Last Synced: 2024-10-06T11:08:55.715Z (about 1 month ago)
- Topics: farcaster, farcaster-client
- Language: TypeScript
- Homepage: https://decent-bookmarks.artlu.xyz
- Size: 41 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Decent Bookmarks
### a Farcaster shared data project, launched in beta 20 May 2024
Works hand-in-hand with [[decent-bookmarks-cast-action](https://github.com/artlu99/decent-bookmarks-cast-action)]. Further discussion in the [[beta launch thread](https://www.supercast.xyz/c/0x0706ea2903a950e7470142fb95451191eec7fe84)]
and in the gc.## HOWTO for Users
**Decent Bookmarks** is *beta* and details are subject to change.
**ANY BOOKMARK YOU SAVE IS VISIBLE TO DEVS** but kept private with respect to the general public.
1. execute the Cast Action on any cast. [[Install here](https://warpcast.com/artlu/0x732f2bd1)].
2. execute the Cast Action on the same cast to remove. Example video [[here](https://warpcast.com/artlu/0x7f2c3cb8)].
3. view in a client that has enabled Decent Bookmarks:
- [BCBHShow Lite Client](https://client-bcbhshow.artlu.xyz) [[FOSS code](https://github.com/artlu99/pinata-lite-client/blob/main/components/bookmarks.tsx)]
- [y0bcaster](https://y0bcaster.artlu.xyz), a mobile+desktop alt clients links page and toy tribute to the artist [y0b](https://warpcast.com/y0b)
## Technical HOWTO for Client devs- see shape of GET API results
```
curl -X GET 'https://decent-bookmarks.artlu.xyz/?fid=6546'
``````
curl -X GET 'https://decent-bookmarks.artlu.xyz/?fid=6546' | jq
```- this is an **open** FID which chooses to share data unencrypted
- almost all FIDs are **closed**, that is, data is only made available to authorized clients
- example API call to get encrypted data
```
curl -X GET 'https://decent-bookmarks.artlu.xyz/?fid=391262' -H 'Authorization: Basic {secret}'
```- message [@artlu99](https://t.me/artlu99) for credentials
- show Decent Bookmarks in your FC client
- [[live](https://client-bcbhshow.artlu.xyz)] example in Next/React, sorted by time-added-to-list [[code](https://github.com/artlu99/pinata-lite-client/blob/main/components/bookmarks.tsx)]- in *beta*, all user-saved Decent Bookmarks are available to any client on the allowlist. Future development needed to allow users to opt-in to a more cumbersome flow, in order to further customize and segregate access to their data.
- Basic mental model is a shared pool of data, with a privileged gatekeeper who can rotate keys in order to cut off future access. This invalidates current/future state, but does nothing with data that already was shared broadly. Not suitable for sharing sensitive, unencrypted information.
---
### A Cloudflare Worker endpoint with 3 methods:- GET - retrieves the entire list of stored bookmarks, decrypting as necessary and as authorized
- POST - adds a cast to the bookmarks list, adding a timestamp
- DELETE - deletes a bookmark from the bookmarks list
study `types.ts`, run-time validation performed with `@cfworker/json-schema`
Data Availability is handled in *beta* by my "L4", i.e., a Cloudflare datastore. Next step is writing to Hub, L3, or L2.