diff --git a/README.md b/README.md index 3f5b10d..fd8183d 100644 --- a/README.md +++ b/README.md @@ -47,10 +47,11 @@ openssl rand -base64 32 Üretilen secret'ı `.env.local` içindeki `BETTER_AUTH_SECRET` alanına koyun, ardından: ```bash -pnpm db:migrate pnpm dev ``` +`pnpm dev` ve `pnpm start`, Next.js başlamadan önce bekleyen SQLite migration'larını otomatik ve idempotent olarak uygular. Migration'ı uygulamadan bağımsız çalıştırmak için `pnpm db:migrate` kullanılabilir. + `http://localhost:3000/register` adresinden ilk owner hesabını oluşturun. İlk başarılı kurulumdan sonra public kayıt atomik olarak kapanır. ## Environment sözleşmesi diff --git a/package.json b/package.json index 1e688c7..bd919da 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,10 @@ "version": "0.1.0", "private": true, "scripts": { + "predev": "node scripts/migrate.mjs", "dev": "next dev", "build": "next build", + "prestart": "node scripts/migrate.mjs", "start": "next start", "lint": "eslint .", "typecheck": "tsc --noEmit", diff --git a/scripts/phase2-auth-smoke.mjs b/scripts/phase2-auth-smoke.mjs index 374480b..2552d0b 100644 --- a/scripts/phase2-auth-smoke.mjs +++ b/scripts/phase2-auth-smoke.mjs @@ -1,4 +1,5 @@ import assert from "node:assert/strict"; +import { readFileSync } from "node:fs"; import Database from "better-sqlite3"; import { ensureDataLayout } from "./lib/data-dir.mjs"; import { runMigrations } from "./migrate.mjs"; @@ -24,6 +25,20 @@ const requiredIndexes = [ async function main() { const paths = ensureDataLayout(); + const packageJson = JSON.parse( + readFileSync(new URL("../package.json", import.meta.url), "utf8"), + ); + + assert.equal( + packageJson.scripts?.predev, + "node scripts/migrate.mjs", + "pnpm dev must apply migrations before starting Next.js", + ); + assert.equal( + packageJson.scripts?.prestart, + "node scripts/migrate.mjs", + "pnpm start must apply migrations before starting Next.js", + ); runMigrations(paths.databasePath);