create-light-cms
v0.2.1
Published
Scaffold a Next.js project with Light CMS
Maintainers
Readme
create-light-cms
Scaffold a fresh Next.js app that is ready for light-cms.
Prompt flow
When you run create-light-cms, it asks for:
- Project name (if not passed as the first argument)
- ORM (
drizzle) - Database provider (
tursoorsupabase) - Package manager (
pnpm,npm, orbun) - default:pnpm - Admin username
- Admin password
Usage
pnpm create light-cms@latestOr pass the project name directly:
pnpm create light-cms@latest my-appCLI options:
--skip-install: scaffold the Next app and skip setup/install steps-h, --help: show help-v, --version: show version
The selected package manager is used for all scaffold commands:
pnpm+pnpm dlxnpm+npxbun+bunx
What it does
1) Creates a Next.js app
Uses create-next-app with:
- TypeScript
- Tailwind
- ESLint
- App Router
@/*import alias- pnpm
Note: it intentionally creates app/ at project root (no src/app).
It also updates next.config.ts to enable:
cacheComponents: true
2) Installs shadcn/ui and starter components
- Runs
shadcn init --defaults - Adds:
button,input,textarea,select,switch,separator,sidebar,sonner,sheet,tooltip,skeleton
3) Installs dependencies
Base dependencies:
drizzle-ormzod@tanstack/react-form
Provider-specific dependency:
- Turso:
@libsql/client - Supabase:
postgres
Dev dependency:
drizzle-kit
4) Boots light-cms via its own CLI
pnpm dlx light-cms@latest init --yes- Creates
app/(marketing) pnpm dlx light-cms@latest create about --yes
This ensures lightcms.config.ts and pageSchema.ts match the current light-cms templates.
5) Writes DB and env files
drizzle.config.ts.envdb/index.tsdb/schema.ts
Generated examples
Supabase db/index.ts
import { config } from "dotenv";
import { drizzle } from "drizzle-orm/postgres-js";
import postgres from "postgres";
config({ path: ".env" });
const client = postgres(process.env.DATABASE_URL!);
export const db = drizzle({ client });Supabase drizzle.config.ts
import { defineConfig } from "drizzle-kit";
export default defineConfig({
schema: "./db/schema.ts",
out: "./migrations",
dialect: "postgresql",
dbCredentials: {
url: process.env.DATABASE_URL!,
},
});Turso drizzle.config.ts
import { defineConfig } from "drizzle-kit";
export default defineConfig({
schema: "./db/schema.ts",
out: "./migrations",
dialect: "turso",
dbCredentials: {
url: process.env.TURSO_DATABASE_URL!,
authToken: process.env.TURSO_AUTH_TOKEN!,
},
});After scaffolding
Typical next steps:
cd <project-name>
# fill in env values
pnpm drizzle-kit generate
pnpm drizzle-kit migrate
pnpm dev