Personal Flisk demo
@0xHxxe's Flisk stack
Try it live now
Browser → web → api → Postgres. Workers and migrators share the same database. Traefik routes every service on *.localhost.
- This demo's repoclone it and run flisk up
- Quick startinstall, verify and boot a working stack
- service.json referenceevery field in the manifests above
- Required scriptspackage.json scripts per service type
- Agent skillslet Claude Code, Codex or Cursor drive Flisk
- Flisk on GitHubsource, issues and releases
- Tilt docsthe dev UI in the Tilt tab
Edit a service.json here. Changes stay in your browser until you reset the page. To keep a change, Edit on GitHub: GitHub asks you to sign in and commits to your own fork, not to ours.
webfrontendservices/dapp/web/service.json
apibackendservices/dapp/api/service.json
api-migratormigratorservices/dapp/api-migrator/service.json
chainbring-your-ownservices/dapp/chain/service.json
indexerworkerservices/dapp/indexer/service.json
This stack runs on a GitHub runner. Available until 22:17 UTC, then it shuts down and these links stop working. The first load can take a few minutes.
Upvoting lifts this stack toward the top of the list on the home page. One vote per browser. You can also pop a stack's bubble there to vote for it.
Progress
Live, 1h 15m left
- ✓Plan ready
- ✓Scaffolding with flisk
- ✓Repo pushed
- ✓Starting flisk up on a GitHub runnerWatch the runner log on GitHub ↗
- ✓LiveThe app is running above.
- ✓ flisk resource ×4
- ✓ flisk board
- ✓ flisk config verify
- ✓ flisk up --dry-run
Stacks people made
Most upvoted first, then newest. Open a stack, run it, and press Upvote on its page.
- @BonoDJblackweb · api · api-migrator▲ 1ready
- @example_devweb · api · api-migrator · chain · indexer▲ 1ready
- @brookserversweb · api · api-migrator▲ 1ready
- @botweb · api · api-migrator · assistant▲ 1ready
- @ada_test2web · api · api-migrator · jobs · tools · assistant▲ 1ready
- @theoweb · api · api-migrator▲ 1ready
Why this stack
- chain · solidity, contract, dapp
Run it
Fork puts this stack in your own GitHub account, ready to change. On the fork page, untick "Copy the main branch only", then open the branch demo/0xhxxe-dapp-2032de. Then flisk doctor and flisk up run it on your machine.
Or use the commands
npm install -g @flisk-sh/flisk git clone -b demo/0xhxxe-dapp-2032de https://github.com/flisk-sh/demos.git dapp-demo cd dapp-demo flisk doctor flisk up
Or scaffold it yourself
npm install -g @flisk-sh/flisk flisk doctor flisk project --yes flisk resource web --type frontend --stack dapp --framework react --yes flisk resource api --type backend --stack dapp --feature prisma --yes flisk resource chain --type bring-your-own --stack dapp --image ghcr.io/foundry-rs/foundry:stable --yes flisk resource indexer --type worker --stack dapp --feature nats --yes flisk up dapp flisk status
Open after flisk up
Click these while the live run is up:
- webhttps://questions-onion-climate-showcase.trycloudflare.com/web/
- apihttps://questions-onion-climate-showcase.trycloudflare.com/api/health
Local addresses (only on your machine, after flisk up)
- web
http://app.dapp-demo.localhost/web - api
http://api.dapp-demo.localhost/api/api/health
If port 80 is busy, Flisk picks 8080–8180; flisk status shows the exact address.
Your service.json files
One service.json each. Postgres comes from "prisma" and Traefik routing is built in, so neither needs its own file.
web ↗frontendreact app
// services/dapp/web/service.json
{
"$schema": "https://flisk.sh/schema.service.json",
"schemaVersion": 1,
"appName": "web",
"appType": "frontend",
"stack": "dapp",
"port": 3000,
"framework": "react",
"dependsOn": [
"api"
]
}api ↗backendbun + hono API
// services/dapp/api/service.json
{
"$schema": "https://flisk.sh/schema.service.json",
"schemaVersion": 1,
"appName": "api",
"appType": "backend",
"stack": "dapp",
"port": 4000,
"healthCheckPath": "/health",
"dependsOn": [
"api-migrator"
],
"featuresEnabled": [
"prisma"
]
}api-migratormigratorruns Prisma migrations against the shared Postgres before the api starts
// services/dapp/api-migrator/service.json
{
"$schema": "https://flisk.sh/schema.service.json",
"schemaVersion": 1,
"appName": "api-migrator",
"appType": "migrator",
"stack": "dapp"
}chainbring-your-ownexperimentallocal Anvil node for your contracts. Not yet run end to end with flisk up: anvil must listen on the container port Flisk routes to
// services/dapp/chain/service.json
{
"$schema": "https://flisk.sh/schema.service.json",
"schemaVersion": 1,
"appName": "chain",
"appType": "bring-your-own",
"stack": "dapp",
"port": 4100,
"image": "ghcr.io/foundry-rs/foundry:stable"
}indexerworkerreads contract events into Postgres
// services/dapp/indexer/service.json
{
"$schema": "https://flisk.sh/schema.service.json",
"schemaVersion": 1,
"appName": "indexer",
"appType": "worker",
"stack": "dapp",
"port": 4200,
"params": {
"RPC_URL": "http://chain:3000"
},
"dependsOn": [
"chain",
"api-migrator"
],
"featuresEnabled": [
"nats"
]
}Note: No frontend framework named, so this uses React. Say vue, svelte or solid to switch.
Make it yours
This stack is a plain git branch. Copy it, change any service.json or the code, and run it on your machine. Send your version back and we can show it here.
1. Copy the branch: the clone command is in Run it above.
2. Put it in your own repository (needs the GitHub CLI)
cd dapp-demo && rm -rf .git && git init -q -b main && git add -A && git commit -qm "my dapp" && gh repo create my-dapp-demo --source . --push --private
Add a badge to your README
Show that this stack is a Flisk bubble. The badge links back here and shows the upvotes.
Copy the markdown
[](https://demo.flisk.sh/d/0xhxxe-dapp-2032de)
Share it
Opens a ready-made post on X. You read it and send it yourself; nothing is posted for you.
Want one for a friend?
Ask @grok on X with their handle and what they build.