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,16 @@
---
title: Cookie Policy
description: Our cookie policy explains how we use cookies and similar technologies to improve your experience on our website and services. Learn about the types of cookies we use and how you can manage them.
status: published
---
{/* 💡 You can use one of the following ChatGPT prompts to generate this 💡 */}
{/* 1 */}
{/* Write a cookie policy for a <your saas details>. Explain what cookies are, how they are used, and how users can manage them. */}
{/* 2 */}
{/* Create a comprehensive cookie policy for a <your saas details>. Explain the types of cookies used, their purpose, and how users can manage their cookie preferences. */}
{/* 3 */}
{/* Write a detailed cookie policy for a <your saas details>. Explain the different types of cookies used, their functions, and how users can control their cookie settings. */}

View File

@@ -0,0 +1,16 @@
---
title: Privacy Policy
description: Our privacy policy outlines how we collect, use, and protect your personal information when you use our website and services. Learn about your rights and our commitment to data security.
status: published
---
{/* 💡 You can use one of the following ChatGPT prompts to generate this 💡 */}
{/* 1 */}
{/* "Create a Privacy Policy page for a <your SaaS details>. Include a title and a description that explains the purpose of the policy. The policy should outline how personal information is collected, used, and protected when users interact with the website and services. Mention user rights and the commitment to data security." */}
{/* 2 */}
{/* "Write a Privacy Policy for a <your SaaS details>. The policy should detail how personal information is collected, used, and protected when users interact with the website and services. Include information about user rights and the commitment to data security. Make sure to provide a clear title and description for the policy." */}
{/* 3 */}
{/* "Draft a Privacy Policy for a <your SaaS details>. Explain how personal information is collected, used, and protected when users interact with the website and services. Include details about user rights and the commitment to data security. Provide a title and a description that clearly outlines the purpose of the policy." */}

View File

@@ -0,0 +1,16 @@
---
title: Terms and Conditions
description: Our terms and conditions outline the rules and regulations for the use of our website and services. Learn about your rights and obligations when you use our website and services.
status: published
---
{/* 💡 You can use one of the following ChatGPT prompts to generate this 💡 */}
{/* 1 */}
{/* Prepare a detailed terms and conditions document for a <your saas details>. Outline the terms of use, user responsibilities, and the rights of the service provider. */}
{/* 2 */}
{/* Create a comprehensive terms and conditions document for a <your saas details>. Include sections on user obligations, intellectual property rights, and dispute resolution. */}
{/* 3 */}
{/* Write a detailed terms and conditions document for a <your saas details>. Cover aspects like user conduct, data protection, and the termination of services. */}

View File

@@ -0,0 +1,32 @@
import { defineCollection } from "@content-collections/core";
import { compileMDX } from "@content-collections/mdx";
import * as z from "zod";
import { ContentStatus } from "../../types";
import { getLastModifiedAt } from "../../utils";
export const legal = defineCollection({
name: "legal",
directory: "src/collections/legal/content",
include: "**/*.mdx",
schema: z.object({
title: z.string(),
description: z.string(),
status: z.enum(ContentStatus),
}),
transform: async (document, context) => {
const mdx = await compileMDX(context, document);
const lastModifiedAt = await context.cache(
document._meta.filePath,
getLastModifiedAt,
);
return {
...document,
mdx,
lastModifiedAt,
slug: document._meta.directory,
locale: document._meta.fileName.split(".")[0],
};
},
});