# Developer documentation

Build, extend and operate the Cloudflare web and Expo mobile template.

The template combines a server-rendered web app, an Expo mobile app and shared domain packages. One Cloudflare Worker handles web rendering, authenticated APIs, files, agent tools and scheduled work. Postgres stores application state; R2 stores private objects.

<Cards>
<Card title="Start locally" href="/docs/development/setup">Configure identity, environment and a development database.</Card>
<Card title="Understand the architecture" href="/docs/architecture">Follow a request and learn the server boundary.</Card>
<Card title="Extend a feature" href="/docs/features">Find ownership, key files and failure cases.</Card>
<Card title="Read the changelog" href="/docs/changelog">See what landed and why it matters.</Card>
</Cards>

## Quickstart [#quickstart]

```sh
git clone https://github.com/CarlosZiegler/doro.git
cd doro
pnpm install
pnpm setup
pnpm dev
```

Setup configures project identity and local environments, and guides database and provider configuration. The web defaults to `http://localhost:3005`; Expo starts separately through the workspace dev task. See [local setup](/docs/development/setup) before connecting a shared database. Apply reviewed migrations; never push the schema.

## Stack at a glance [#stack-at-a-glance]

| Layer | Choice |
| --- | --- |
| Web | TanStack Start 1.0, React, Vite, Tailwind CSS and shadcn/Base UI |
| Native | Expo, Expo Router and React Native |
| API and contracts | oRPC, Zod and TanStack Query |
| Identity | Better Auth with Organizations, passkeys and two-factor |
| Data | Drizzle, Postgres/Neon and Cloudflare Hyperdrive |
| Background work | Stable Effect APIs and durable Drizzle leases |
| Agents | Shared tool catalog, TanStack AI and MCP OAuth |
| Documentation | Headless Fumadocs MDX/core, static highlighting and server-rendered articles |

The [library reference](/docs/libraries) records pinned versions and upgrade policy.

## What is included [#what-is-included]

Authentication and account security, Organization-scoped Todos and files, saved views, JSON imports, admin management, audit and activity records, feature flags, three-language app chrome, transactional email, provider-gated payments, AI approvals, MCP tools, OG images and agent-readable pages. Native purchases, widgets and ads have explicit activation paths; installed code does not imply configured providers.

## Repository map [#repository-map]

<FileTree>{`apps/web/          Web routes, hooks, content and Worker entry
apps/mobile/       Expo screens, hooks and native registration
packages/          Shared domain and platform packages
docs/              ADRs, operations guides and measurements
scripts/           Verification, migrations and deployment helpers
.agents/skills/    Project workflows for contributors`}</FileTree>

Docs articles are written in English. Navigation controls follow the app language (English, German or French). Architectural decisions are [rendered from their original files](/docs/adr), so there is one source of truth.

