Files
slot/next-app/tsconfig.base.json
chpark 980d7d905d Add Next.js + PostgreSQL rewrite scaffold with 4-theme system
Stack
- Next.js 15 (App Router) + TypeScript + Drizzle ORM + postgres-js
- Node scrypt for password hashing; PBKDF2 verifier for legacy gnuboard5 hashes
- pnpm workspace monorepo: apps/web + packages/{db,auth,themes,...}

Themes (admin-selectable at /admin/themes)
- basic     : 그누보드 default reproduction (light, blue accent)
- eyoom     : eb4_maga_005 매거진 reproduction (dark, orange accent, ranking sidebar)
- amina     : Aminam Builder reproduction (light, violet gradient, card grid)
- youngcart : 영카트 shop reproduction (red accent, search bar, category nav)

DB
- New schema (12 tables) pushed to PG via drizzle-kit: members, sessions, boards,
  posts, point_ledger, app_settings, bacara_*, lottery_tickets, roulette_spins,
  game_points, board_groups
- Legacy data still readable from inspection2 schema via @slot/db/legacy

Verified end-to-end against the migrated DB on localhost:3000:
- Home renders with active theme tokens injected as CSS variables
- /free lists 442K real posts from inspection2.g5_write_free
- Login (testlogin/test1234) issues session cookie, header switches to
  "테스트님 환영합니다 / 로그아웃"
- Switching app_settings.theme.global from eyoom → amina swaps colors,
  layout, and Korean nav labels site-wide on next request

Migration docs added: 03-migration-plan, 04-theme-architecture,
05-local-dev-setup, 06-feature-inventory.
2026-04-27 18:51:32 +09:00

36 lines
1.1 KiB
JSON

{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"lib": ["ES2022", "DOM", "DOM.Iterable"],
"moduleResolution": "Bundler",
"strict": true,
"noUncheckedIndexedAccess": true,
"esModuleInterop": true,
"skipLibCheck": true,
"resolveJsonModule": true,
"isolatedModules": true,
"verbatimModuleSyntax": false,
"jsx": "preserve",
"incremental": true,
"baseUrl": ".",
"paths": {
"@slot/db": ["packages/db/src"],
"@slot/db/*": ["packages/db/src/*"],
"@slot/auth": ["packages/auth/src"],
"@slot/auth/*": ["packages/auth/src/*"],
"@slot/themes": ["packages/themes/src"],
"@slot/themes/*": ["packages/themes/src/*"],
"@slot/ui": ["packages/ui/src"],
"@slot/ui/*": ["packages/ui/src/*"],
"@slot/shop": ["packages/shop/src"],
"@slot/shop/*": ["packages/shop/src/*"],
"@slot/games": ["packages/games/src"],
"@slot/games/*": ["packages/games/src/*"],
"@slot/shared": ["packages/shared/src"],
"@slot/shared/*": ["packages/shared/src/*"]
}
},
"exclude": ["node_modules", "dist", ".next", "build"]
}