chpark 30e9b7a8ee Build out the user-facing site to match production scope
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.
2026-04-27 20:20:49 +09:00

slot — 슬롯 커뮤니티 마이그레이션 워크스페이스

원본 사이트(slot-ss.com, 그누보드5 + 이윰빌더 + 영카트)를 Next.js + Node.js + PostgreSQL 스택으로 재구축하기 위한 작업 공간.

디렉토리

경로 내용
src/ 원본 PHP 소스 사본 (서버 /var/www/slot-ss.com 에서 rsync, 206MB / 11,652개 파일). 사용자 업로드(data/editor, data/filevendor/·db100up/·캐시·세션·로그는 제외
db/ MariaDB → PostgreSQL 마이그레이션 산출물. dump 파일과 pgloader 설정
docker/ 원본 사이트를 로컬에서 그대로 띄우기 위한 PHP+Apache 도커 스택
docs/ 마이그레이션 분석·계획·설계 문서 (MD)
samples/ 업로드 파일 샘플 (필요 시 추가)

진행 상태 (2026-04-27)

  • 서버 소스 → 로컬 (206MB / 11,652 파일)
  • MariaDB 두 DB(inspection, inspection2) → 서버에서 dump → 로컬
  • 임시 MariaDB 10.5 (Docker) 에 dump 복원
  • pgloader 로 PostgreSQL 마이그레이션 (slot, slot_legacy DB, 165 테이블 / 1,820만 행 / 2.3GB)
  • 🔄 PHP 컨테이너로 원본 사이트 로컬 실행 (port 8088)
  • 로그인 검증 → git push (git.junggomoa.com/chpark/slot.git)
  • Next.js + Node.js + PostgreSQL 신규 시스템 설계
  • 4종 테마 (기본 / 이윰빌더 / 아미나빌더 / 영카드) 빌트인 아키텍처

빠른 사용

원본 사이트 로컬 띄우기

# (사전조건) Docker Desktop 실행 중
cd docker && docker compose up -d
open http://localhost:8088/        # 그누보드 사이트
open http://localhost:8088/adm/    # 관리자

PostgreSQL 접속

psql -h localhost -d slot          # main DB (운영 = inspection2)
psql -h localhost -d slot_legacy   # legacy = inspection
# 데이터는 schema "inspection2" / "inspection" 안에 있음
psql -h localhost -d slot -c "SELECT count(*) FROM inspection2.g5_member;"

MariaDB 임시 인스턴스 (분석/검증용)

docker exec -it slot-mariadb mariadb -uroot -prootpass inspection2
# host: localhost, port: 33306

문서

파일 내용
docs/01-source-inventory.md 원본 그누보드/이윰/플러그인 구조
docs/02-database-schema.md DB 테이블 분류, 핵심 스키마
docs/03-migration-plan.md Next.js + Node.js + PostgreSQL 마이그레이션 전략
docs/04-theme-architecture.md 4종 테마 빌트인 아키텍처 (기본/이윰/아미나/영카드)
docs/05-local-dev-setup.md 로컬 개발 환경 셋업 가이드
docs/06-feature-inventory.md 슬롯/카지노 도메인 기능 인벤토리

보안 참고

  • 이 저장소에는 운영 DB 패스워드(data/dbconfig.phpiiOii5*^^*)와 토큰 키(G5_TOKEN_ENCRYPTION_KEY = ac57f676fe741f0ab3471d81dbee3bf1)가 원본 그대로 들어 있습니다. 신규 시스템으로 이전 후에는 반드시 회전하세요.
  • 운영 서버 SSH 패스워드(eoqkrskwk!@!@)는 이 저장소에 저장하지 않았습니다.
S
Description
No description provided
Readme 99 MiB
Languages
PHP 74.1%
JavaScript 12.6%
CSS 7.5%
HTML 4.1%
TypeScript 1.7%