Webb, API och bakgrundsjobb, i ett repo.
En pnpm-monorepo för en SaaS: webbapp, API och bakgrundsjobb som tre appar, och ett delat paket med databasschemat som alla tre använder.
Använd den när
Du bygger en SaaS som behöver ett separat API och bakgrundsjobb bredvid webbappen redan från dag ett, med inloggning via Clerk.
Räcker det med en Next.js-app och jobb? template-next-supabase i stället →Det här ingår
Färdigt från start.
Webbappen
Clerk-inloggning, en skyddad panel, sidor för integritet och villkor, mörkt läge och säkerhetsrubriker.
API:t
Express 5 med Clerk, begränsning av anrop i Redis, Zod-validering och ett exempel på en komplett resurs.
Användarsynk
En Clerk-webhook som för över användare till databasen.
Bakgrundsjobb
Inngest med ett exempel i tre steg och ett dagligt städjobb.
Delat schema
Ett paket med Drizzle-schema, migreringar och testdata som alla appar importerar.
Docker
En Dockerfile i flera steg för varje app.
Kom igång
pnpm install
cp .env.example .env
pnpm --filter @ketryon/database build
pnpm --filter @ketryon/database db:generate
pnpm --filter @ketryon/database db:migrate
pnpm --filter web dev
pnpm --filter backend dev
pnpm --filter worker devStruktur
apps/
web/ Next.js 15 frontend (port 3000)
backend/ Express 5 API server (port 3001)
worker/ Inngest background jobs (port 3005)
packages/
database/ Drizzle schema, types and db clientMiljövariabler
- DATABASE_URL
- REDIS_URL
- CLERK_SECRET_KEY
- NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY
- CORS_ORIGINS
- NEXT_PUBLIC_API_URL
Stripe-, S3- och OpenAI-variablerna i .env.example är platshållare för sådant du kopplar in själv.
Bra att veta
- Signaturkontrollen för Clerk- och Stripe-webhooks är TODO i koden.
- Databaspaketet byggs en gång innan API:t startar.
- Lint saknar konfiguration i API:t och ett paket i webbappen — det fanns redan före uppdateringen.
Byggd med
- Next.js 15
- React 19
- Clerk
- Express 5
- Inngest
- PostgreSQL
- Drizzle
- Redis
- Zod
Fler mallar
template-next-supabase
MITNext.js och Supabase, där ett typat datalager äger varje fråga och varje behörighetskontroll.
Next.js 16 · React 19 · Supabase
Läs mer →template-next-mongo
MITNext.js och MongoDB, där ett delat datalager äger klienten, scheman, frågor och behörighet.
Next.js 16 · React 19 · MongoDB driver 7
Läs mer →template-backend
MITEtt REST-API i Express och TypeScript med inloggning, Postgres, Redis och validering på plats.
Express 5 · TypeScript · Clerk
Läs mer →template-gateway
MITEtt lager i Next.js mellan dina appar och ett befintligt API, där API-nyckeln stannar på servern.
Next.js 15 · React 19 · TypeScript
Läs mer →template-react-native
MITEn app för iOS och Android i Expo med navigering, ljust och mörkt tema och en typad API-klient.
Expo SDK 54 · React Native 0.81 · React 19
Läs mer →
Låt oss bygga
nästa sak.
Du pratar med mig, inte med en säljare. Första samtalet är gratis.
— Kenny
psst, det tar 15 min
Skriver du svarar jag samma vardag.