30e9b7a8ee
After the initial scaffold the site was missing most of the production
surface (회원가입/마이페이지/메가메뉴 카테고리/관리자/게임/포인트존/...).
This commit closes that gap and verifies every route end-to-end with
playwright screenshots (27/27 pass).
## Theme system
- Replaced eyoom theme with a higher-fidelity reproduction of the
production eb4_maga_005 layout: top utility bar (북마크/회원가입/구매내역
/추가메뉴), brand row with 로그인/내글반응/쪽지 icon stack with badges,
purple gradient mega-menu carrying 10 categories with submenus, dark
mode toggle, sticky LOGIN box + 텔레그램CS box + 태그 클라우드 + 회원
랭킹 + 방문자 stats in the sidebar, and a footer with 이용약관/개인정보
처리방침/이메일무단수집거부.
- Added IndexHome slot to the theme contract; basic/amina/youngcart got
matching implementations so theme switching keeps working.
- Layout now consistently provides the right-rail sidebar on public pages
and hides it on /login, /register, /mypage and /admin (admin uses its
own left rail).
## Pages added
- Auth: /register (with API-backed insert into the new members table),
/auth/recover (id+password recovery shells).
- /mypage dashboard with 12 sub-routes.
- /memo, /bookmarks, /new, /tags, /tag/[tag], /profile/[nick].
- 10 mega-menu landing pages: /guarantee, /guarantee/apply, /mukti,
/complaint, /inspection, /fakesite, /event, /lottery_ticket,
/gift_coupons, /gift_exchanges, /notice; /games (bacara, fortunes,
fivetreasures, slot, roulette, ranking); /wallet (+ exchange,
point-exchange, slotbuff); /tv; /guide (+ community/pointgame/mukti/tv);
/help/qa, /help/faq.
- Static pages: /page/provision, /page/privacy, /page/noemail,
/page/aboutus, /page/manual, /page/attendance.
- Per-board: /[slug]/write, /[slug]/[wrId]/edit, /[slug]/search.
## Post interactions (wired against legacy g5_* tables)
- POST /api/posts/create — insert into inspection2.g5_write_<slug>
- POST /api/posts/[id]/comment — insert is_comment row + bump wr_comment
- POST /api/posts/[id]/good|bad — bump wr_good/wr_nogood + g5_board_good
- POST /api/posts/[id]/scrap — insert g5_scrap
- POST /api/posts/[id]/report — write into writing_activity
- POST /api/posts/[id]/delete — owner+admin gate, soft-delete row
- POST /api/ui/dark-mode — flip slot_dark cookie
## Admin
- /admin layout with left nav (10 sections) gated by member level >= 10.
- /admin — dashboard with live counts pulled from PG
- /admin/members — searchable member list with status badges
- /admin/boards — board roster with post/comment counts
- /admin/betting — bacara/swiun/game-point counters + recent feed
- /admin/stats — 14-day visit chart + top boards + level histogram
- /admin/themes — 4-theme picker (already existed, now polished)
- /admin/{menu,permissions,points,games} — stubs for M5
## Infra fixes
- Postgres pool hoisted onto globalThis so HMR doesn't leak connections
("sorry, too many clients already" 500s).
- Removed broken Next.js redirects() entry that prevented dev from booting.
## Verification
- scripts/screenshot.mjs: pre-logs-in as admin/test1234, then captures 27
pages + 4 theme variants of /. All 200, all rendered. PNGs committed
under next-app/screenshots/ for review.
25 lines
692 B
JSON
25 lines
692 B
JSON
{
|
|
"name": "slot-monorepo",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "concurrently -n web,api \"pnpm --filter @slot/web dev\" \"pnpm --filter @slot/api dev\"",
|
|
"dev:web": "pnpm --filter @slot/web dev",
|
|
"dev:api": "pnpm --filter @slot/api dev",
|
|
"build": "pnpm -r build",
|
|
"lint": "pnpm -r lint",
|
|
"db:push": "pnpm --filter @slot/db drizzle:push",
|
|
"db:studio": "pnpm --filter @slot/db drizzle:studio",
|
|
"db:seed": "pnpm --filter @slot/db seed"
|
|
},
|
|
"devDependencies": {
|
|
"concurrently": "^9.0.1",
|
|
"playwright": "^1.59.1",
|
|
"typescript": "^5.7.2"
|
|
},
|
|
"packageManager": "pnpm@9.15.0",
|
|
"engines": {
|
|
"node": ">=20.0.0"
|
|
}
|
|
}
|