Estimated time: 10 minutes
By the end of this step, you'll:
You've completed the tutorial! You now know how to:
You've created a fully functional decentralized app that:
Here are some ideas for what to build next:
Personal Blog on Arkiv
Decentralized Todo App
Public Guestbook
Decentralized Social Feed
On-Chain Voting App
Decentralized Marketplace
Multi-Space App
Encrypted Private Data
Arkiv + IPFS Integration
You now have one app working end to end. Below are the patterns to learn next, any one of which turns a workshop project into something that could ship. The optional step 12 in this tutorial walks through five of them with working code snippets you can copy.
subscribeEntityEvents. Six event types: created, updated, deleted, expired, expires-in-extended, owner-changed.expiresIn and you get auto-revoking access.expiresIn, aggregated entities with longer expiresIn. Use mutateEntities to batch creates.$creator, retrieve by tag or time window. Memory survives the model, the chat session, and the tool that wrote it.Then go build something with at least two entity types, parent and child relationships, differentiated expiration, and one of the patterns above. That is the shape of every real Arkiv app.
@arkiv-network/sdk on npm: the TypeScript client libraryArkiv-Network/arkiv-sdk-js: SDK source and sample/ directory with canonical patterns (current Braga build)Arkiv-Network/dashboard-demo: Bun/Hono streaming-ingestion patternArkiv-Network/builders-challenge-online-forum-example: full Next.js + RainbowKit + wagmi reference. Pre-Braga, still imports the deprecated kaolin chain. Use it for the wagmi + EIP-1193 patterns, but swap the chain import to braga and bump the SDK to ^0.6.8 locally before runningInstall Arkiv's official agent skill once and your AI assistant (Claude Code, Cursor, Copilot, Cline, Windsurf) stops inventing SDK calls:
npx skills add https://github.com/arkiv-network/skills --skill arkiv-best-practicesPair it with the feedback skill so you can file issues directly from your AI agent when something does not match the docs:
npx skills add https://github.com/arkiv-network/skills --skill arkiv-feedbackThen invoke /arkiv-feedback in your agent.
Your data lives on-chain, independent of your hosting provider, your server infrastructure, and any single service.
Arkiv data is public on-chain by default. For confidentiality, encrypt payload bytes client-side before calling createEntity and combine with expiresIn for auto-revoking access. There is no public/private toggle at the protocol level.
PROJECT_ATTRIBUTE on every entity and every querycreateEntity, updateEntity (full replace), deleteEntity, extendEntity, mutateEntities (batch)$owner controls writes (mutable); $creator proves attribution (immutable)PROJECT_ATTRIBUTE on every entity and every queryexpiresIn per entity type with ExpirationTime.fromDays/fromHoursEntityMutationError, NoMoreResultsError)subscribeEntityEvents instead of pollingPROJECT_ATTRIBUTE and that the value matches what you write.npm run typecheck. The SDK ships typed; if your call does not match the signature, the typechecker will tell you why.arkiv-feedback skill: best for reporting something brokenThank you for completing the Serverless DApp 101 tutorial!
You've taken your first steps into decentralized app development. The concepts you've learned apply to:
Keep building! The best way to learn is by building. Start with a simple project and iterate.
Happy building! 🚀