Case study · Blockchain / web3
Curator
A production Web3 data-curation platform for the Geo / The Graph ecosystem. Communities run bounties, host live video community calls, track attendance, and publish curated records on-chain to a decentralized knowledge graph, wrapped in a polished React app with wallet-based auth.
Architecture
A pnpm monorepo of five apps
Two of them, rapporteur and rendezvous, are independently deployable microservices, repository-pattern abstracted (Neo4j now, Postgres-ready) and communicating over HTTP.
-
curator-frontendReact 19 app with React Query, Tailwind v4 and a Storybook-documented design system (Base UI + Framer Motion). File-based routing, complex dynamic forms and custom hooks.
-
curator-backendEffect-TS Platform HTTP API over a Neo4j graph database. Repository-pattern abstracted, Postgres-ready.
-
rapporteurAutonomous on-chain publishing agent. Owns a smart-account and publishes to the GRC-20 knowledge graph as a space editor.
-
rendezvousStandalone calendar & RSVP service. Sends iCalendar (iMIP) invites over SMTP and ingests RSVP replies via an inbox webhook.
-
curator-metricsStandalone quality-metrics dashboard built with Recharts.
-
shared packagesTransactional email, curator-utils and a shared design-system consumed across the apps.
What it demonstrates
Depth across the stack
Functional architecture with Effect-TS
- Effect-TS across the stack, @effect/platform, @effect/rpc, @effect/sql, @effect/cluster, @effect/opentelemetry.
- Strict TypeScript with exactOptionalPropertyTypes, branded domain types, Data.TaggedError typed errors and discriminated-union state.
- Spec-driven backend workflow: instructions → requirements → design → plan → implementation.
Web3 & decentralized systems
- GRC-20 on-chain publishing via the protocol SDK and @graphprotocol/hypergraph.
- Smart-account abstraction with Permissionless + viem; Privy wallet authentication.
- Designed and deployed a custom ontology, call events, attendance, post-call assets, with verified property / relation IDs.
Real-time & communications
- LiveKit live video for community calls, including Krisp noise filtering and track processors.
- iCalendar generation with stable updates, and a full RSVP round-trip, SMTP out, webhook in.
Frontend craft
- React 19 with file-based routing and a shared design system (Base UI + Framer Motion) documented in Storybook with a11y addons.
- Complex forms, a dynamic bounty editor with difficulty-based validation, and custom hooks such as usePollUntilFound.
Engineering rigor
- Biome lint/format, full TypeScript project-references build, Vitest + @effect/vitest.
- Playwright E2E with Privy test accounts, Knip dead-code analysis, Sentry, OpenTelemetry and coverage gating.
Role & context
Curator is a client / team project. I worked as lead engineer and its single largest contributor, over 1,200 commits across two identities, out of roughly 3,000 total, over a ~10-month span, alongside a small team of other contributors.
Building something on-chain?
Let's talk