adrianbonpin
5dd30665f7
feat(api): add upvote/downvote and best-entry endpoints to performance entries
2026-04-25 18:55:48 +08:00
adrianbonpin
c3a85d1336
refactor: remove structured settings tables, use freeform JSON for presets and entries
2026-04-25 18:51:10 +08:00
adrianbonpin
bc6fc493f6
fix: resolve build, lint, and type errors - add paramName support to CRUD builder
2026-04-25 18:36:52 +08:00
adrianbonpin
1b92aecdb8
feat(db): seed settingCategories and settingDefinitions with graphics/display/audio/controls/gameplay
2026-04-25 18:32:31 +08:00
adrianbonpin
b6eb005c73
feat(api): wire all CRUD routes into Elysia server
2026-04-25 18:31:26 +08:00
adrianbonpin
eebafa12b9
feat(api): add game comments CRUD with threading, upvote, and soft delete
2026-04-25 18:30:45 +08:00
adrianbonpin
8004baf5bc
feat(api): add community presets CRUD with upvote and nested preset settings
2026-04-25 18:29:44 +08:00
adrianbonpin
2228c433b2
feat(api): add settings categories/definitions CRUD with combined full endpoint
2026-04-25 18:29:00 +08:00
adrianbonpin
128e668e01
feat(api): add performance entries CRUD with verify and stats endpoints
2026-04-25 18:28:36 +08:00
adrianbonpin
083b871842
feat(api): add hardware CRUD routes (admin-only writes)
2026-04-25 18:27:53 +08:00
adrianbonpin
3c7283382b
feat(api): add games and game versions CRUD routes
2026-04-25 18:27:36 +08:00
adrianbonpin
b606b3afeb
feat(api): add reusable CRUD route factory with auth, pagination, search, and filtering
2026-04-25 18:26:46 +08:00
adrianbonpin
bd55c1d696
feat(schema): add barrel exports for all tables, generate migration
2026-04-25 18:24:12 +08:00
adrianbonpin
1412807a04
feat(schema): add gameComments table with threading and upvotes
2026-04-25 18:21:18 +08:00
adrianbonpin
7e9dc88a49
feat(schema): add presetSettings join table
2026-04-25 18:20:58 +08:00
adrianbonpin
51e3f51846
feat(schema): add communityPresets table
2026-04-25 18:20:39 +08:00
adrianbonpin
a60be8c0a4
feat(schema): add settingDefinitions table with input type and impact level enums
2026-04-25 18:20:19 +08:00
adrianbonpin
5f71ed93cc
feat(schema): add settingCategories table
2026-04-25 18:19:57 +08:00
adrianbonpin
34b75da04d
feat(schema): add sortOrder column to hardware table
2026-04-25 18:19:42 +08:00
adrianbonpin
a31b5ea130
feat(schema): replace FSR/FrameGen booleans with enums, add verification fields to performanceEntries
2026-04-25 18:19:20 +08:00
adrianbonpin
3da593e619
feat(schema): add source enum, nullable steamAppId, onlineMultiplayerStatus to games table
2026-04-25 18:18:48 +08:00
adrianbonpin
a7cafe7ae5
fix: resolve all build errors and ensure clean build
2026-04-25 14:51:06 +08:00
adrianbonpin
86d9c9b1fa
fix: resolve all lint errors
2026-04-25 14:46:40 +08:00
adrianbonpin
d6dc701e3f
feat(api): add user profile routes (public profile, me, sessions)
2026-04-25 14:43:32 +08:00
adrianbonpin
3ef9649322
feat(api): add application-level rate limiting middleware with IP-based tracking
2026-04-25 14:34:24 +08:00
adrianbonpin
d1e2a8f281
test(auth): add test-only auth instance with testUtils plugin and initial tests
2026-04-25 14:14:23 +08:00
adrianbonpin
a9cb8a328c
feat(db): add lastLoginMethod field to user table for last-login-method plugin
2026-04-25 14:07:45 +08:00
adrianbonpin
c0d2c8b137
feat(auth): configure Email OTP, Passkey, Last Login Method, and Admin with RBAC
2026-04-25 13:55:51 +08:00
adrianbonpin
c404e93fb0
feat(auth): define RBAC with user, contributor, and admin roles
2026-04-25 13:47:47 +08:00
adrianbonpin
f8aa64bd32
feat(auth): mount Better-Auth on Elysia server with session macro and role guards
2026-04-25 13:42:07 +08:00
adrianbonpin
8d058f02dd
fix(eden): resolve server/client detection and bundler issues
...
- Use typeof window === undefined for standard Next.js server detection
- Use NEXT_PUBLIC_SITE_URL env var instead of hardcoded localhost:3000
- Use require() for server branch to prevent Elysia from entering client bundle
- Add type assertion on require() to preserve Eden Treaty types
2026-04-25 13:25:38 +08:00
adrianbonpin
b2a9094819
feat(api): add isomorphic Eden Treaty client for end-to-end type safety
2026-04-25 13:17:59 +08:00
adrianbonpin
a3cba6950e
feat(api): set up Elysia server with health check on Next.js catch-all route
2026-04-25 13:04:41 +08:00
adrianbonpin
18888eb57e
feat: initial setup of database and auth
2026-04-25 12:31:42 +08:00
adrianbonpin
78079779c9
feat(db): move auth schema into Drizzle structure and add user FK
...
- Move auth schema from auth-schema.ts to lib/db/schema/auth.ts
- Export auth tables (user, session, account, verification, passkey) via barrel
- Add FK from performanceEntries.userId to user.id
- Generate and apply migration for auth tables + user FK
- Remove unused echarts dependency
2026-04-25 12:29:42 +08:00
adrianbonpin
ab0fe349a1
fix: remove unused import, ignore drizzle meta files
2026-04-25 12:06:41 +08:00
adrianbonpin
65d13933bf
feat(db): add hardware seed script, db:seed command, and initial migration
...
- Create lib/db/seed.ts with idempotent hardware seeding
- Add db:seed script and fix db:* scripts to load .env.local via bun --env-file
- Generate initial Drizzle migration (0000_crazy_nick_fury)
- Apply migration and seed 3 hardware devices (steamdeck-oled, steamdeck-lcd, steam-machine)
2026-04-25 11:53:10 +08:00
adrianbonpin
50f737f686
feat(db): add performance entries and game platform support schemas
...
- Create performanceEntries table with FPS metrics, environment details,
feature flags (FSR, frame gen), load times, settings JSON, and moderation
- Create gamePlatformSupport table with Proton/anti-cheat status enums
and composite unique constraint on (gameId, hardwareSlug)
- Update schema barrel export to include both new tables
2026-04-25 11:45:49 +08:00
adrianbonpin
63a6e8b7d6
fix(db): comment out forward schema exports to prevent build errors
2026-04-25 11:42:57 +08:00
adrianbonpin
89cb385e33
feat(db): add core Drizzle schema tables (hardware, games, gameVersions)
...
- Create lib/db/schema/ directory with barrel export index.ts
- Add hardware table with device_type enum (handled/console)
- Add games table with Steam metadata, sync fields, and JSON genres
- Add game_versions table with composite unique (gameId, buildId) and cascade delete
Refs: Chunk 2 of database schema implementation
2026-04-25 11:39:20 +08:00
adrianbonpin
ad3fd31feb
feat(db): setup drizzle config, client and package scripts
...
- Add drizzle.config.ts with PostgreSQL dialect configuration
- Create lib/db/index.ts with Drizzle ORM client and pg Pool
- Add db:generate, db:migrate, db:studio, db:push scripts to package.json
Part of Chunk 1: Drizzle Config & DB Client setup
2026-04-25 11:32:13 +08:00