Lie Lab, Dream Club is a bilingual (Korean/English) web application archiving AI-generated fictional stories. It presents these narratives with the gravitas of sacred texts, blurring lines between truth and imagination. Users can browse, create, rate stories across plausibility, creativity, and persuasiveness, and view archive statistics. The platform's core concept treats well-crafted AI fiction as cultural artifacts, aiming to explore the boundaries of truth in the AI era. The application is designed with a multi-version skin architecture to target different user personas, starting with an "AI Generation" theme adopting a "Dark Academic Archive meets Sacred Text Library" design philosophy.
Preferred communication style: Simple, everyday language.
- Admin System Implemented: Added
isAdminfield to users table and admin role-based access control - 거짓말탐험대 (Lie Explorer): Internal admin-only page for manual story curation at
/admin/explorer - Authentication: SSO-only via Replit Auth (Google, Apple, GitHub, X, Email/Password)
- Security: Development admin promotion endpoint (
/api/dev/set-admin/:userId) secured with authentication and self-service validation
Frontend Architecture:
- Technology Stack: React 18 with TypeScript, Vite, Wouter for routing, TanStack Query for server state, shadcn/ui (Radix UI) for components, Tailwind CSS for styling.
- Design System: Custom theme with CSS variables (light/dark mode), Crimson Pro (serif) and Inter (sans-serif) typography, component variants with
class-variance-authority (CVA), elevation system, bilingual support viaLanguageContext. - State Management: React Context for global state (theme, language), TanStack Query for server data caching, Local storage for user preferences and rating deduplication.
- Key Pages: Home, Archive, Create Story, Story Detail, Stats.
Backend Architecture:
- Technology Stack: Express.js server with TypeScript, Drizzle ORM, Neon Database (PostgreSQL), in-memory fallback for development.
- API Design: RESTful endpoints (
/api/*), JSON format, Zod schema validation, error handling with HTTP status codes. - Core Endpoints:
GET /api/stories,GET /api/stories/:id,POST /api/stories,POST /api/stories/:id/rate. - Validation: Zod schemas derived from Drizzle tables for type-safe validation.
Data Storage:
- Database Schema: PostgreSQL via Drizzle.
Storiestable includesid,archiveNumber,title,content,category,imageUrl,createdAt,plausibilityScore,creativityScore,persuasivenessScore,totalRatings. - Data Access: Abstract storage interface (
IStorage) withMemStorageand Drizzle ORM implementations. Ratings are aggregated scores, not individual records.
Build and Deployment:
- Development: Vite dev server, Express middleware for API proxy,
tsxfor server. - Production Build: Vite builds frontend, esbuild bundles server. Static file serving from build output.
- UI Frameworks: Radix UI, shadcn/ui, Tailwind CSS
- Data Management: TanStack Query, Drizzle ORM, Drizzle-Zod, Zod
- Database: Neon Database (
@neondatabase/serverless) - Form Handling: React Hook Form,
@hookform/resolvers - Utilities: date-fns, clsx, tailwind-merge, nanoid, Recharts (removed from POC, but listed as dependency)
- Development Tools: Vite, esbuild, tsx, Replit plugins
- Fonts: Google Fonts (Crimson Pro, Inter)