feat: turbostarter boilerplate

Production-ready Next.js boilerplate with:
- Runtime env validation (fail-fast on missing vars)
- Feature-gated config (S3, Stripe, email, OAuth)
- Docker + Coolify deployment pipeline
- PostgreSQL + pgvector, MinIO S3, Better Auth
- TypeScript strict mode (no ignoreBuildErrors)
- i18n (en/es), AI modules, billing, monitoring

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Alejandro Gutiérrez
2026-02-02 17:29:12 +00:00
commit 3527e732d4
1618 changed files with 338230 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
import { headers } from "next/headers";
import { cache } from "react";
import { auth } from "@turbostarter/auth/server";
import { logger } from "@turbostarter/shared/logger";
const getHeaders = async () => {
const newHeaders = new Headers(await headers());
newHeaders.set("x-client-platform", "web-server");
return newHeaders;
};
export const getSession = cache(async () => {
const data = await auth.api.getSession({
headers: await getHeaders(),
});
return {
session: data?.session ?? null,
user: data?.user ?? null,
};
});
export const getOrganization = cache(
async ({ id, slug }: { slug?: string; id?: string }) => {
try {
return await auth.api.getFullOrganization({
query: {
organizationId: id,
organizationSlug: slug,
},
headers: await getHeaders(),
});
} catch (error) {
logger.error(error);
return null;
}
},
);
export const getInvitation = cache(async ({ id }: { id: string }) => {
try {
return await auth.api.getInvitation({
query: {
id,
},
headers: await getHeaders(),
});
} catch {
return null;
}
});
export const getUser = cache(async ({ id }: { id: string }) => {
try {
return await auth.api.getUser({
query: { id },
headers: await getHeaders(),
});
} catch {
return null;
}
});