Now with Next.js 16, Expo SDK 54, and Hono

The modern monorepo
template

Ship web, mobile, and API from a single codebase. Type-safe from database to device, with shared packages that keep your team moving fast.

9:41
Monorepo Template
Monorepo Template
A modern monorepo with Next.js, Expo, Hono, and oRPC
Next.js
Web application
Expo
Mobile application
Hono + oRPC
Type-safe API

Built with

Next.jsExpoReact NativeHonooRPCTailwind CSSTypeScriptTurborepo

One codebase for web, mobile, and API. A production-ready monorepo template with shared packages, type-safe APIs, and platform-specific apps that deploy independently.

FIG 0.1

Shared by Default

Design tokens, navigation, utilities, and UI components live in shared packages. Write once, use everywhere.

FIG 0.2

Type-Safe End to End

oRPC contracts generate typed clients automatically. Catch errors at compile time, not in production.

FIG 0.3

Zero Config DX

Turborepo caching, Biome linting, React Compiler, and pnpm workspaces. Everything just works out of the box.

1.0

Web

Next.js 16 with App Router, React Compiler, and shadcn/ui components built on Base UI primitives. Server components by default with streaming and partial prerendering.

App RouterReact Compilershadcn/uiTailwind v4Server Components
apps/web/app/page.tsx
import { Button } from "@infrastructure/ui-web";

export default function Home() {
  return (
    <main className="min-h-screen p-8">
      <h1>Ship faster</h1>
      <Button>Get Started</Button>
    </main>
  );
}
2.0

Mobile

Expo SDK 54 with React Native 0.81 and UniWind for Tailwind-style styling. Shared navigation and design tokens keep mobile and web in sync.

Expo RouterUniWindReact Native 0.81Web ExportReusables
apps/mobile/app/(tabs)/index.tsx
import { Link } from "@infrastructure/navigation";
import { View, Text } from "react-native";

export default function Home() {
  return (
    <View className="flex-1 p-4">
      <Text className="text-2xl font-bold">
        Hello from mobile
      </Text>
      <Link href="/settings">Settings</Link>
    </View>
  );
}
3.0

API

Hono server with oRPC for end-to-end type safety. Define contracts once, get typed clients for free. Zod validation at the boundary, TypeScript everywhere else.

HonooRPCZod ValidationType-Safe ClientReact Query
packages/infrastructure/api-client/src/contract.ts
import { os } from "@orpc/server";
import { z } from "zod";

const pub = os.$context<{ requestId?: string }>();

export const router = {
  users: {
    list: pub.output(z.array(UserSchema))
      .handler(() => { /* ... */ }),
    get: pub.input(z.object({ id: z.string() }))
      .output(UserSchema)
      .handler(({ input }) => { /* ... */ }),
  },
};
4.0

Infrastructure

Shared packages for navigation, UI tokens, utilities, and TypeScript configs. Feature packages for isolated business logic. Clean dependency boundaries enforced by convention.

Design TokensNavigationUtilitiesTypeScript ConfigsUI Components
packages/infrastructure/
infrastructure/
├── api-client/     # oRPC contracts + client
├── navigation/     # Platform-agnostic nav
├── ui/             # Design tokens, cn()
├── ui-web/         # shadcn/ui components
├── utils/          # Cross-platform helpers
└── typescript-config/
    ├── base.json
    ├── library.json
    ├── nextjs.json
    └── react-native.json
This template cut our setup time from weeks to hours. The shared package architecture is exactly right.
AAlex ChenSenior Engineer
Finally, a monorepo template that treats mobile as a first-class citizen. The UniWind integration is seamless.
SSarah ParkMobile Lead

Built for the future.
Available today.

Clone the template and start shipping in minutes. MIT licensed, forever free.