Every module is scaffolded but disabled by default. Activate them via AI tools or manually.
Better Auth
Per-user login with sessions. Supports Magic Link (passwordless email), OTP, and TOTP (authenticator app).
Key files
lib/auth/app/login/proxy.tsEnvironment variables
AUTH_SECRETEMAIL_HOSTEMAIL_USEREMAIL_PASSEMAIL_FROMHow to activate
During setup: select this module in the /new-tool questionnaire — activated automatically.
After generation: run /add-feature and describe what you want to build — the AI activates the required modules.
Remove [FEATURE: AUTH] comment wrappers in lib/auth/ and proxy.ts. Add AUTH_SECRET and email credentials to .env.
// lib/auth/index.ts (after activation)
import { betterAuth } from 'better-auth'
export const auth = betterAuth({
emailAndPassword: { enabled: false },
plugins: [magicLink({ sendMagicLink: sendEmail })],
})
// Check session in API routes:
const session = await auth.api.getSession({ headers: req.headers })
if (!session) return Response.json({ error: 'Unauthorized' }, { status: 401 })Prisma + SQLite
Relational database with type-safe ORM. SQLite by default (no server needed). Easy to swap to Postgres.
Key files
lib/db/prisma/schema.prismaEnvironment variables
DATABASE_URLHow to activate
During setup: select this module in the /new-tool questionnaire — activated automatically.
After generation: run /add-feature and describe what you want to build — the AI activates the required modules.
Remove [FEATURE: DATABASE] wrappers in lib/db/. Define your models in prisma/schema.prisma, then run npm run db:push.
// prisma/schema.prisma
model User {
id String @id @default(cuid())
email String @unique
name String?
createdAt DateTime @default(now())
}
// lib/db/index.ts
import { db } from '@/lib/db'
const users = await db.user.findMany()
const user = await db.user.create({ data: { email, name } })node-cron
Scheduled background tasks running inside the Next.js process. No external services or credentials required.
Key files
lib/jobs/instrumentation.tsEnvironment variables
None — no credentials required
How to activate
During setup: select this module in the /new-tool questionnaire — activated automatically.
After generation: run /add-feature and describe what you want to build — the AI activates the required modules.
Remove [FEATURE: JOBS] wrappers in lib/jobs/ and instrumentation.ts. Define your cron expressions and task logic.
// lib/jobs/cleanup.ts
import cron from 'node-cron'
export function startCleanupJob() {
cron.schedule('0 2 * * *', async () => {
// runs every day at 2 AM
await db.session.deleteMany({
where: { expiresAt: { lt: new Date() } },
})
})
}Express.js + SSE
Server-Sent Events for live updates. Replaces the Next.js dev server with a custom Express server.
Key files
server.tsEnvironment variables
None — no credentials required
How to activate
During setup: select this module in the /new-tool questionnaire — activated automatically.
After generation: run /add-feature and describe what you want to build — the AI activates the required modules.
Remove [FEATURE: SSE] wrappers in server.ts. Use npm run dev:sse instead of npm run dev. Push events via the /api/sse endpoint.
// Push an event from any API route:
import { sseEmitter } from '@/lib/sse'
sseEmitter.emit('update', { type: 'task_done', id: '123' })
// Subscribe on the client:
const es = new EventSource('/api/sse')
es.onmessage = (e) => {
const data = JSON.parse(e.data)
console.log('Live update:', data)
}Vercel AI SDK
Streaming AI chat and completions. Supports Anthropic (Claude), OpenAI, and the local Claude CLI.
Key files
lib/ai.tsapp/api/chat/Environment variables
AI_PROVIDERANTHROPIC_API_KEYOPENAI_API_KEYHow to activate
During setup: select this module in the /new-tool questionnaire — activated automatically.
After generation: run /add-feature and describe what you want to build — the AI activates the required modules.
Remove [FEATURE: AI] wrappers in lib/ai.ts. Set AI_PROVIDER in .env (anthropic, openai, or claude-cli) and add the corresponding API key.
// .env
AI_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-...
// app/api/chat/route.ts (after activation)
import { streamText } from 'ai'
import { model } from '@/lib/ai'
export async function POST(req: Request) {
const { messages } = await req.json()
const result = streamText({ model, messages })
return result.toDataStreamResponse()
}Nodemailer + SMTP
Transactional email sending via SMTP. Used by the Auth module for Magic Links, or standalone.
Key files
lib/email.tsEnvironment variables
EMAIL_HOSTEMAIL_PORTEMAIL_USEREMAIL_PASSEMAIL_FROMHow to activate
During setup: select this module in the /new-tool questionnaire — activated automatically.
After generation: run /add-feature and describe what you want to build — the AI activates the required modules.
Remove [FEATURE: EMAIL] wrappers in lib/email.ts. Add your SMTP credentials to .env.
// lib/email.ts (after activation)
import { sendEmail } from '@/lib/email'
await sendEmail({
to: 'user@example.com',
subject: 'Your report is ready',
html: '<p>Click <a href="...">here</a> to download.</p>',
})