// Next.js 14 — Server Action + Zod validation
export async function createOrder(fd: FormData) {
'use server';
const parsed = orderSchema.safeParse(
Object.fromEntries(fd),
);
if (!parsed.success)
return { error: parsed.error.flatten() };
const order = await db.order.create({
data: { ...parsed.data, userId: session.id },
});
revalidatePath('/dashboard/orders');
return { orderId: order.id };
}
// Prisma schema — relational data model
model Project {
id String @id @default(cuid())
name String
slug String @unique
client Client @relation(fields: [clientId])
clientId String
invoices Invoice[]
createdAt DateTime @default(now())
}
// tRPC router — type-safe API layer
export const projectRouter = router({
list: protectedProcedure
.input(z.object({ cursor: z.string().optional() }))
.query(async ({ ctx, input }) => {
return ctx.db.project.findMany({
where: { userId: ctx.session.user.id },
take: 20,
cursor: input.cursor
? { id: input.cursor } : undefined,
orderBy: { createdAt: 'desc' },
});
}),
});
// Redis — cache-aside pattern
async function getUser(id: string) {
const cached = await redis.get(`user:${id}`);
if (cached) return JSON.parse(cached);
const user = await db.user.findUniqueOrThrow(
{ where: { id } },
);
await redis.setex(`user:${id}`, 300,
JSON.stringify(user),
);
return user;
}
// React Query — optimistic UI update
const mutation = useMutation({
mutationFn: (id: string) => api.delete(id),
onMutate: async (id) => {
await qc.cancelQueries({ queryKey }),
const prev = qc.getQueryData(queryKey);
qc.setQueryData(queryKey, (old) =>
old?.filter((p) => p.id !== id),
);
return { prev };
},
onError: (_, __, ctx) =>
qc.setQueryData(queryKey, ctx?.prev),
});
// Stripe webhook — payment event handler
export async function POST(req: Request) {
const sig = req.headers.get('stripe-signature')!;
const event = stripe.webhooks.constructEvent(
await req.text(), sig, process.env.STRIPE_WHK!,
);
if (event.type === 'checkout.session.completed') {
const s = event.data.object;
await db.subscription.upsert({
where: { customerId: s.customer as string },
update: { status: 'active', plan: s.metadata.plan },
create: { customerId: s.customer as string,
status: 'active', plan: s.metadata.plan },
});
}
return Response.json({ received: true });
}
// WebSocket — real-time collaboration
io.on('connection', (socket) => {
socket.on('join-room', async (roomId) => {
await socket.join(roomId);
const history = await redis.lrange(
`room:${roomId}:msgs`, 0, 49,
);
socket.emit('history', history.map(JSON.parse));
});
socket.on('message', async (msg) => {
await redis.lpush(`room:${msg.roomId}:msgs`,
JSON.stringify(msg),
);
io.to(msg.roomId).emit('message', msg);
});
});
// PostgreSQL — window function analytics
SELECT
u.name,
SUM(o.total) AS revenue,
RANK() OVER (ORDER BY SUM(o.total) DESC) AS rank,
ROUND(100.0 * SUM(o.total) /
SUM(SUM(o.total)) OVER (), 2) AS pct
FROM users u
JOIN orders o ON o.user_id = u.id
WHERE o.created_at > NOW() - INTERVAL '30 days'
GROUP BY u.id, u.name
ORDER BY revenue DESC;
// Docker — multi-stage production build
FROM node:20-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
FROM node:20-alpine AS builder
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build
FROM node:20-alpine AS runner
ENV NODE_ENV=production
COPY --from=builder /app/.next/standalone ./
EXPOSE 3000
CMD ["node", "server.js"]
// GitHub Actions — CI/CD pipeline
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci && npm run build
- run: npm test -- --coverage
- uses: vercel/action@v1
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
// TypeScript — advanced generic utility
type DeepPartial<T> = T extends object ? {
[K in keyof T]?: DeepPartial<T[K]>;
} : T;
type ApiResponse<T> =
| { ok: true; data: T; status: 200 }
| { ok: false; error: string; status: 400 | 500 };
function createClient<T extends Record<string, Fn>>(
routes: T,
): { [K in keyof T]: Promisify<T[K]> } {
return new Proxy({} as never, {
get: (_, key) => (...args: unknown[]) =>
fetch(`/api/${String(key)}`,
{ method: 'POST', body: JSON.stringify(args) }
).then(r => r.json()),
});
}
// Next.js middleware — auth + rate limiting
export function middleware(req: NextRequest) {
const token = req.cookies.get('token')?.value;
const ip = req.ip ?? '127.0.0.1';
const { success } = await ratelimit.limit(ip);
if (!success)
return NextResponse.json(
{ error: 'Too many requests' }, { status: 429 },
);
if (!token && req.nextUrl.pathname.startsWith('/app'))
return NextResponse.redirect(
new URL('/login', req.url),
);
}
// Next.js 14 — Server Action + Zod validation
export async function createOrder(fd: FormData) {
'use server';
const parsed = orderSchema.safeParse(
Object.fromEntries(fd),
);
if (!parsed.success)
return { error: parsed.error.flatten() };
const order = await db.order.create({
data: { ...parsed.data, userId: session.id },
});
revalidatePath('/dashboard/orders');
return { orderId: order.id };
}
// Prisma schema — relational data model
model Project {
id String @id @default(cuid())
name String
slug String @unique
client Client @relation(fields: [clientId])
clientId String
invoices Invoice[]
createdAt DateTime @default(now())
}
// tRPC router — type-safe API layer
export const projectRouter = router({
list: protectedProcedure
.input(z.object({ cursor: z.string().optional() }))
.query(async ({ ctx, input }) => {
return ctx.db.project.findMany({
where: { userId: ctx.session.user.id },
take: 20,
cursor: input.cursor
? { id: input.cursor } : undefined,
orderBy: { createdAt: 'desc' },
});
}),
});
// Redis — cache-aside pattern
async function getUser(id: string) {
const cached = await redis.get(`user:${id}`);
if (cached) return JSON.parse(cached);
const user = await db.user.findUniqueOrThrow(
{ where: { id } },
);
await redis.setex(`user:${id}`, 300,
JSON.stringify(user),
);
return user;
}
// React Query — optimistic UI update
const mutation = useMutation({
mutationFn: (id: string) => api.delete(id),
onMutate: async (id) => {
await qc.cancelQueries({ queryKey }),
const prev = qc.getQueryData(queryKey);
qc.setQueryData(queryKey, (old) =>
old?.filter((p) => p.id !== id),
);
return { prev };
},
onError: (_, __, ctx) =>
qc.setQueryData(queryKey, ctx?.prev),
});
// Stripe webhook — payment event handler
export async function POST(req: Request) {
const sig = req.headers.get('stripe-signature')!;
const event = stripe.webhooks.constructEvent(
await req.text(), sig, process.env.STRIPE_WHK!,
);
if (event.type === 'checkout.session.completed') {
const s = event.data.object;
await db.subscription.upsert({
where: { customerId: s.customer as string },
update: { status: 'active', plan: s.metadata.plan },
create: { customerId: s.customer as string,
status: 'active', plan: s.metadata.plan },
});
}
return Response.json({ received: true });
}
// WebSocket — real-time collaboration
io.on('connection', (socket) => {
socket.on('join-room', async (roomId) => {
await socket.join(roomId);
const history = await redis.lrange(
`room:${roomId}:msgs`, 0, 49,
);
socket.emit('history', history.map(JSON.parse));
});
socket.on('message', async (msg) => {
await redis.lpush(`room:${msg.roomId}:msgs`,
JSON.stringify(msg),
);
io.to(msg.roomId).emit('message', msg);
});
});
// PostgreSQL — window function analytics
SELECT
u.name,
SUM(o.total) AS revenue,
RANK() OVER (ORDER BY SUM(o.total) DESC) AS rank,
ROUND(100.0 * SUM(o.total) /
SUM(SUM(o.total)) OVER (), 2) AS pct
FROM users u
JOIN orders o ON o.user_id = u.id
WHERE o.created_at > NOW() - INTERVAL '30 days'
GROUP BY u.id, u.name
ORDER BY revenue DESC;
// Docker — multi-stage production build
FROM node:20-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
FROM node:20-alpine AS builder
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build
FROM node:20-alpine AS runner
ENV NODE_ENV=production
COPY --from=builder /app/.next/standalone ./
EXPOSE 3000
CMD ["node", "server.js"]
// GitHub Actions — CI/CD pipeline
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci && npm run build
- run: npm test -- --coverage
- uses: vercel/action@v1
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
// TypeScript — advanced generic utility
type DeepPartial<T> = T extends object ? {
[K in keyof T]?: DeepPartial<T[K]>;
} : T;
type ApiResponse<T> =
| { ok: true; data: T; status: 200 }
| { ok: false; error: string; status: 400 | 500 };
function createClient<T extends Record<string, Fn>>(
routes: T,
): { [K in keyof T]: Promisify<T[K]> } {
return new Proxy({} as never, {
get: (_, key) => (...args: unknown[]) =>
fetch(`/api/${String(key)}`,
{ method: 'POST', body: JSON.stringify(args) }
).then(r => r.json()),
});
}
// Next.js middleware — auth + rate limiting
export function middleware(req: NextRequest) {
const token = req.cookies.get('token')?.value;
const ip = req.ip ?? '127.0.0.1';
const { success } = await ratelimit.limit(ip);
if (!success)
return NextResponse.json(
{ error: 'Too many requests' }, { status: 429 },
);
if (!token && req.nextUrl.pathname.startsWith('/app'))
return NextResponse.redirect(
new URL('/login', req.url),
);
}