A comprehensive game backlogging application that helps you track your gaming collection, manage your backlog, and discover new games to play.
- Game Collection Management: Track your owned games with custom statuses (backlog, playing, completed, wishlist)
- Steam Integration: Import your Steam library and sync game data
- Game Reviews: Write and share reviews with ratings for games you've played
- Backlog Organization: Organize your gaming backlog with filtering and search capabilities
- Game Discovery: Browse and discover new games with detailed information from IGDB
- Progress Tracking: Monitor your gaming progress with completion statistics
- Wishlist Management: Keep track of games you want to play in the future
- Achievement Tracking: View Steam achievements for your games
- Social Features: Share your wishlist and view other users' backlogs
- Next.js 15 - React framework with App Router
- React 19 - UI library
- TypeScript - Type safety
- Prisma - Type-safe database ORM
- PostgreSQL - Primary database
- shadcn/ui - Modern UI component library
- Tailwind CSS - Utility-first CSS framework
- Radix UI - Primitive UI components
- Lucide React - Icon library
- NextAuth.js v5 - Authentication system
- Steam OpenID - Steam integration
- IGDB API - Game metadata
- TanStack Query - Data fetching and caching
- next-safe-action - Type-safe server actions
- Zod - Schema validation
- Vitest - Testing framework
- ESLint - Code linting
- Prettier - Code formatting
- Bun - Package manager and runtime
βββ app/ # Next.js App Router pages
βββ features/ # Feature-specific code (components, server actions, types)
β βββ add-game/ # Game addition functionality
β βββ dashboard/ # User dashboard
β βββ steam-integration/ # Steam API integration
β βββ view-collection/ # Collection management
β βββ ...
βββ shared/ # Shared utilities and components
β βββ components/ # Reusable UI components
β βββ lib/ # Shared utilities and repositories
β β βββ repository/ # Data access layer
β βββ types/ # Shared type definitions
βββ prisma/ # Database schema and migrations
βββ test/ # Test setup and utilities
- Bun (recommended) or Node.js 18+
- PostgreSQL database
- Steam API key (optional, for Steam integration)
- IGDB API credentials
- Clone the repository:
git clone https://github.com/yourusername/play-later-v2.git
cd play-later-v2
- Install dependencies:
bun install
- Set up environment variables:
cp .env.example .env.local
- Configure your database and run migrations:
bun postinstall
- Start the development server:
bun dev
Visit http://localhost:6060 to see the application.
# Run all tests
bun test
# Run unit tests (fast, mocked database)
bun test:unit
# Run integration tests (real database)
bun test:integration
# Run tests with coverage
bun test:coverage
# Watch mode
bun test:unit:watch
bun test:integration:watch
For integration tests, start the test database:
# Start test database
bun test:db:setup
# Stop test database
bun test:db:teardown
bun dev # Start development server on port 6060
bun build # Build the application
bun start # Start production server
bun preview # Build and start production server
bun lint # Run ESLint
bun lint:fix # Fix ESLint errors
bun typecheck # TypeScript type checking
bun format:write # Format code with Prettier
bun format:check # Check code formatting
bun code-fix # Run format:write and lint:fix
bun code-check # Run format:check, lint, and typecheck
The application uses a repository pattern for data access, providing a clean separation between business logic and data persistence.
Data Flow: Next.js App Router β Server Actions β Repository Layer β Prisma β PostgreSQL
- Authentication: NextAuth.js with Prisma adapter
- Database: PostgreSQL with Prisma ORM
- Steam Integration: OAuth flow with Steam Web API
- Game Data: IGDB API for comprehensive game metadata
- UI Components: shadcn/ui built on Radix UI primitives
- State Management: React Server Components with TanStack Query for client state
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes and add tests
- Run the test suite:
bun test
- Run code quality checks:
bun code-check
- Commit your changes using conventional commits (see examples below)
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
This project uses Conventional Commits with commitlint to ensure consistent commit messages. Here are some examples:
Features:
feat: add Steam library import functionality
feat(auth): implement Steam OAuth integration
Bug Fixes:
fix: resolve game search API timeout issue
fix(ui): correct modal overlay z-index problem
Documentation:
docs: update API integration guide
docs(readme): add development setup instructions
Refactoring:
refactor: migrate from domain services to repository pattern
refactor(components): extract reusable game card component
Performance:
perf: optimize database queries with indexes
perf(ui): implement virtual scrolling for game lists
Other Types:
chore: update dependencies to latest versions
style: fix code formatting issues
test: add integration tests for Steam API
ci: add automated deployment workflow
build: configure build optimization settings
This project is licensed under the MIT License - see the LICENSE file for details.