🇺🇸🇭🇳
https://alexvipond.dev
https://baleada.dev
// Get a list of the user's active games
relatedResources.get({
from: { kind: 'user', id: 'ABC' },
kind: 'is-playing',
to: { kind: 'game' },
})
// Get a list of the user's active games
relatedResources.get({
from: { kind: 'user', id: 'ABC' },
kind: 'is-playing',
to: { kind: 'game' },
})
You never have to design custom API payloads, write custom schemas, or sync custom TS types.
You never have to design custom API payloads, write custom schemas, or sync custom TS types.
Re-render optimistically. Locally, store events that describe the changes. Depending on your needs, store graph snapshots.
Send the updated graph to your API to sync the backend.
Re-render optimistically. Locally, store events that describe the changes. Depending on your needs, store graph snapshots.
Send the updated graph to your API to sync the backend.
On the frontend, write utility functions so you can walk/parse/read/render the graph more ergonomically.
On the frontend, write utility functions so you can walk/parse/read/render the graph more ergonomically.
Resources' profile data is denormalized—I duplicate it and store in a JSON column as needed to support access patterns.
DB writes are complex, but my reads seem cheap and extremely easy so far.
Resources' profile data is denormalized—I duplicate it and store in a JSON column as needed to support access patterns.
DB writes are complex, but my reads seem cheap and extremely easy so far.