You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
apps/server - Spring Boot backend (Java 17, Ebean ORM)
tests - E2E tests (Vitest + Playwright), do not look into them, modify them, touch them at all, do not run them
Web (apps/web)
Commands
bun run build # Production build
bun fmt # Format
bun lint # Auto-fix lint
bun types # Typecheck
bun openapi:generate # Generate API client from OpenAPI spec
Code Style
Use bun/bunx instead of npm/npx
DO NOT manually format/sort imports - use oxfmt/oxlint scripts
Tabs for indentation, double quotes
Kebab-case for file/folder names
Prefer implicit return types (explicit only for complex types)
Inline types for React component props (no separate interfaces)
UI/UX
Tailwind CSS only
Dark mode only (no light mode)
Use shadcn components from src/components/ui/ (never vanilla inputs/buttons/etc)
Use motion.dev for animations
Responsive designs
Data Fetching
TanStack Query for data fetching/caching
Use generated API client from @/api-client (never direct fetch)
Mutations auto-invalidate queries
Server (apps/server)
Commands
./gradlew build # Build
just build # Same via justfile
just run # Run with dev profile
just db # Start MySQL container
./google-java-format -n $(find ./src -name "*.java")# Format check, outputs filenames that are not formatted
./google-java-format -i $(find ./src -name "*.java")# Fix formatting
./gradlew generateMigration # Generate DB migration sql file, never manually write migration files, always generate them from entity changes
Code Style
Java 17, Spring Boot 3.4
Lombok (@Getter, @Setter) on entities
Ebean ORM for database
Google Java Format for formatting
Controllers extend Controller base class
Entities in core/ package, controllers in controllers/