A social network for gamers - Think Letterboxd, but for video games.
Questlog is a comprehensive social platform where gamers can discover games, write reviews, connect with fellow players, and build personalized gaming profiles. Built with modern web technologies and designed for scalability, it features a static-first architecture that combines optimal performance with selective interactivity for dynamic user experiences.
Last Updated: November 4, 2025
- Secure JWT Authentication with refresh tokens and role-based access control
- User Profiles with customizable avatars, bios, and gaming statistics
- Role-Based Permissions supporting User, Moderator, and Admin roles
- Persistent Sessions with automatic token refresh
- Comprehensive Game Catalog with detailed information, covers, and metadata
- Advanced Search & Filtering by genre, platform, developer, and more
- Game Details Pages with aggregated reviews and related games
- External API Integration ready for RAWG, IGDB, and Steam APIs
- Rich Review Creation with ratings, content, and spoiler warnings
- Social Interactions including likes, comments, and sharing
- Review Moderation tools for community management
- Personalized Feeds showing reviews from followed users
- User Following system with activity feeds
- Social Statistics tracking followers, reviews, and engagement
- Activity Streams showcasing user interactions and achievements
- Community Features for discovering new users and content
- Admin Dashboard for platform management
- Content Moderation tools for reviews and user-generated content
- User Management with role assignment and account controls
- Analytics & Insights for platform health monitoring
- Hybrid Architecture with static generation and dynamic components
- Type-Safe API with comprehensive shared types across the stack
- Modern Development Stack with hot reload and optimized builds
- Comprehensive Testing suite with unit, integration, and E2E tests
Questlog uses a modern PNPM monorepo architecture designed for scalability and developer productivity:
- Astro 5.x with static output by default for excellent SEO and performance
- React 19.x Islands for selective interactivity and optimal JavaScript delivery
- Tailwind CSS v4 with @tailwindcss/vite plugin and custom design system
- Radix UI primitives for accessible, unstyled component foundations
- Nanostores for lightweight, efficient state management
- NestJS 11.x framework with modular, domain-driven architecture
- Prisma ORM v6.14.0 with PostgreSQL for type-safe database operations
- JWT Authentication with HTTP-only cookies and role-based access control
- Comprehensive REST API with Swagger/OpenAPI documentation
- Docker Compose for development environment consistency
- PostgreSQL 13+ as primary database
- Redis for caching and session management (planned)
- MinIO for S3-compatible file storage (planned)
- Prometheus monitoring and centralized logging (planned)
questlog-app/
βββ apps/
β βββ backend/ # NestJS API server
β βββ frontend/ # Astro + React frontend
β βββ e2e/ # End-to-end tests
βββ packages/
β βββ shared-types/ # TypeScript type definitions
β βββ ui-components/ # Shared React components
β βββ utils/ # Utility functions
β βββ config/ # Shared configurations
β βββ game-apis/ # External API integrations
βββ docker/ # Docker configurations
- Node.js 18+ (Download)
- PNPM 8+ (Installation)
- Docker & Docker Compose (Get Docker)
-
Clone the repository
git clone https://github.com/dracudev/questlog-app.git cd questlog-app -
Install dependencies
pnpm install
-
Set up environment variables
cp .env.example .env.local # Edit .env.local with your configuration -
Start development services
pnpm docker:dev # Start PostgreSQL, Redis, MinIO, etc. -
Set up the database
pnpm db:migrate # Run database migrations pnpm db:seed # Seed with sample data
-
Start development servers
pnpm dev # Start both backend and frontend
- Frontend: http://localhost:4321
- Backend API: http://localhost:3000
- API Documentation: http://localhost:3000/api
- Prisma Studio: Run
pnpm db:studioto open database admin interface
Comprehensive documentation is available in the /docs directory:
- System Design - Design system, components, and patterns
- Development Guide - Detailed development workflow and requirements
- Frontend TCD - Frontend technical context and architecture
- Backend TCD - Backend technical context and API design
- Project Structure - Codebase organization and monorepo structure
pnpm dev # Start both backend and frontend
pnpm build # Build all applications
pnpm test # Run all tests
pnpm lint # Lint all packages
pnpm type-check # Type check all packagespnpm dev:backend # Start backend with hot reload
pnpm build:backend # Build backend for production
pnpm test:backend # Run backend testspnpm dev:frontend # Start frontend with hot reload
pnpm build:frontend # Build frontend for production
pnpm test:frontend # Run frontend testspnpm db:migrate # Create and run migrations
pnpm db:seed # Seed database with sample data
pnpm db:studio # Open Prisma Studio GUI
pnpm db:reset # Reset database (destructive)pnpm docker:dev # Start development containers
pnpm docker:dev:down # Stop development containers
pnpm docker:dev:logs # View container logs
pnpm docker:dev:build # Rebuild and start containersQuestlog includes comprehensive testing across all layers:
- Unit Tests: Jest with React Testing Library
- Integration Tests: Supertest for API testing
- E2E Tests: Cypress for end-to-end workflows
- Type Checking: TypeScript strict mode across all packages
pnpm test # Run all tests
pnpm test:backend # Backend tests only
pnpm test:frontend # Frontend tests only
pnpm test:e2e # End-to-end tests- Backend: Local development with hot reload
- Frontend: Astro dev server with React Fast Refresh
- Database: PostgreSQL via Docker Compose
- Frontend: Vercel with automatic deployments
- Backend: Railway/Render with Docker containers
- Database: Neon/Supabase with automated backups
- CDN: Cloudflare for static assets and performance
- Project architecture and monorepo setup
- Authentication system with JWT and roles
- Complete backend API with all domains
- Frontend architecture with Astro + React
- Comprehensive state management
- Type-safe API integration
- Radix UI integration for accessibility
- Design system with CSS custom properties
- Core layout refactoring with Radix UI (Navbar, Footer, ThemeToggle)
- User profile feature implementation (complete 3-layer architecture)
- Authentication pages (login, register)
- Mobile-first responsive design patterns
- Optimistic UI updates with automatic rollback
- Games catalog and filtering interface
- Review creation and editing UI
- Advanced search interface
- Activity feed implementation with real-time updates
- Enhanced mobile responsive improvements
- Real-time activity feed with polling
- Comment system for reviews
- Enhanced user discovery and recommendations
- Notification center UI
- Advanced social interactions (mentions, shares)
- RAWG API integration for game data
- Steam OAuth and library sync
- Achievement tracking system
- Personal game lists (wishlist, playing, completed, backlog)
- IGDB integration for enhanced metadata
- Developer portal and registration
- Game submission system
- Demo hosting and embedding
- Developer analytics dashboard
- Featured indie games section
- AI-powered game recommendations
- Mobile applications (React Native)
- Real-time chat and messaging
- WebSocket integration for live updates
- Advanced analytics and insights
- Multi-language support (i18n)
We welcome contributions from the gaming and development community! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes with proper tests and documentation
- Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Code Style: We use Prettier and ESLint for consistent formatting
- Type Safety: All code must be fully typed with TypeScript
- Testing: New features require comprehensive test coverage
- Documentation: Update relevant documentation for new features
- Commits: Use conventional commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
- Letterboxd for inspiration on social media for media consumption
- RAWG API and IGDB for comprehensive game databases
- NestJS and Astro communities for excellent frameworks
- The gaming community for feedback and feature requests
- Documentation: Check the docs folder for detailed guides
- Issues: Report bugs or request features via GitHub Issues
- Discussions: Join community discussions in GitHub Discussions
Built with care for the gaming community
Website β’ Documentation β’ API Docs β’ Contributing