Odel
Drafto

Drafto

@jakubanderwaldProductivity1TypeScriptGPL-3.0Updated 1w ago

Create, read, search, and organize your Drafto notes and notebooks.

Server endpointStreamable HTTP

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

Drafto

A note-taking app with notebooks, rich text editing, and auto-save. Available as a web app, iOS + Android apps, and a macOS desktop app — all with offline support.

Live: drafto.eu

Features

  • Notebooks — flat list of notebooks to organize notes
  • Notes — rich text with auto-save (BlockNote on web, TenTap on mobile/desktop)
  • Offline support — mobile and desktop use WatermelonDB locally and sync to Supabase when online
  • Authentication — email/password with email confirmation, plus Google and Apple OAuth; admin approval gates new accounts
  • Dark mode — system-aware theme toggle, persisted in localStorage
  • Evernote import — import notes from .enex files with full content and attachment support
  • MCP server — expose your notes to Claude Desktop, Claude Cowork, and other MCP clients via eu.drafto/mcp on the MCP Registry
  • Real-time support pipeline — mail to support@drafto.eu is polled every 5 minutes by a Mac-mini-resident agent, classified by Claude Code, and synced bidirectionally with GitHub issues; see docs/features/support-agent.md

See docs/features/ for one brief per functional area (code paths, ADRs, testing).

Tech Stack

AreaStack
WebNext.js 16 (App Router, Turbopack), React 19, TypeScript, Tailwind CSS v4, BlockNote
MobileExpo 55, React Native 0.84, expo-router, TenTap editor, WatermelonDB
DesktopReact Native macOS 0.81.5, TenTap editor, WatermelonDB (shared with mobile)
BackendSupabase (Postgres + Auth + Storage + RLS)
HostingVercel (web), Fastlane → App Store / Play Store / Mac App Store
MonitoringSentry (errors), PostHog (analytics)
TestingVitest, Testing Library, Playwright, Jest, Maestro
Monorepopnpm workspaces + Turborepo

Architecture deep-dive: docs/architecture/overview.md.

Getting Started

Prerequisites

For mobile dev: Expo CLI, Android SDK, Xcode. For desktop dev: Xcode, CocoaPods (gem install cocoapods), Ruby 3.3.7 via rbenv.

Full first-time setup guide: docs/operations/local-dev-setup.md.

Setup

git clone https://github.com/JakubAnderwald/drafto.git
cd drafto
pnpm install

# Configure web env
cp apps/web/.env.local.example apps/web/.env.local
# Fill in NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY

# Push schema to your Supabase project
supabase link --project-ref <your-project-ref>
supabase db push

# Run the dev server
pnpm dev

Open http://localhost:3000.

Scripts

Dev commands live here. Build / release / deployment commands live in docs/operations/builds-and-releases.md.

CommandDescription
pnpm devStart dev server (all apps)
pnpm buildProduction build
pnpm lintESLint (all packages)
pnpm format:checkPrettier check
pnpm testUnit + integration tests
pnpm typecheckTypeScript check
pnpm migration:checkCheck migrations for destructive SQL

Per-app test commands: docs/architecture/testing.md.

Project Layout

apps/
  web/       Next.js web app (App Router)
  mobile/    Expo + React Native iOS/Android
  desktop/   React Native macOS
packages/
  shared/    TypeScript types + constants (@drafto/shared)
supabase/
  migrations/
docs/
  features/       Per-area briefs (auth, notes, editor, sync, search, MCP, …)
  architecture/   System shape (overview, environments, testing)
  operations/     Runbooks (local-dev-setup, builds-and-releases, migrations)
  adr/            Architecture Decision Records
  archive/        Historical plans (not source of truth)

Full index: docs/README.md.

Contributing

All work goes through branches + PRs — see CLAUDE.md for the project conventions (worktree workflow, SOLID, testing requirements, production safety rails). Decisions are recorded in docs/adr/.

License

Private project.