Prepare. Practice. Succeed.
Trivia MORE is a comprehensive quiz application designed to enhance learning and prepare students for university exams through structured practice and assessment.
Visit the application at trivia-more.it
Trivia MORE transforms the way students prepare for university exams by providing an interactive, structured learning environment. Built with modern web technologies, it offers a comprehensive quiz platform that adapts to different learning styles and academic needs.
The application serves as a bridge between traditional study methods and digital learning, offering features like real-time progress tracking, adaptive questioning, and collaborative learning tools. Whether you're a student looking to test your knowledge, an educator wanting to create engaging content, or an administrator managing academic programs, Trivia MORE provides the tools you need to succeed.
- ποΈ Architecture Overview
- π Getting Started
- π³ Docker Commands
- ποΈ Database Management
- π Documentation
- π€ Contributing
- π Issue Reporting
- π License
Trivia MORE is built with a modern, scalable architecture designed for performance and maintainability:
graph TD
A[π₯οΈ Frontend - Next.js 15] --> B[π API Routes]
B --> C[π NextAuth.js v5]
B --> D[ποΈ Prisma ORM]
D --> E[π PostgreSQL]
F[π Vercel Edge] --> A
G[π Neon Database] --> E
H[π± Client Components] --> A
I[β‘ Server Components] --> A
J[π― TanStack Query] --> B
K[π¨ Radix UI + Tailwind] --> A
For detailed architecture documentation, see docs/ARCHITECTURE.md
Our technology choices are specifically selected to support the architecture above:
- App Router for server-side rendering and optimal performance
- Server & Client Components for hybrid rendering
- Type safety across the entire application
- Utility-first styling for rapid development
- Accessible components foundation
- Smooth animations and transitions
- Server state management and caching
- API Routes with file-based routing
- Authentication with hybrid edge approach
- Type-safe ORM with migration support
- Robust database with full ACID compliance
- Runtime validation and type inference
- Edge deployment with global CDN
- Local development environment
- Code quality and consistency
- Code formatting standards
- Docker and Docker Compose (recommended for local development)
- Node.js (18+ recommended)
-
Clone the repository
git clone https://github.com/MarinCervinschi/TriviaMore.git cd TriviaMore
-
Configure environment variables
Copy the example environment file and configure it:
cp .env.example .env
Edit the
.env
file with your specific configuration. The default database URL for local Docker development is already set up. -
Install dependencies
npm install
The easiest way to run the application locally is using Docker for the database:
-
Start the PostgreSQL database
docker-compose up -d postgres
-
Set up the database
# Generate Prisma client and push schema to database npm run db:push # Seed the database with sample data npm run db:seed
-
Start the development server
npm run dev
-
Open the application
Navigate to http://localhost:3000 in your browser.
# Start the database
docker-compose up -d postgres
# Stop the database
docker-compose down
# View database logs
docker-compose logs postgres
# Access PostgreSQL shell
docker-compose exec postgres psql -U postgres -d triviamore
# Restart the database
docker-compose restart postgres
# Generate Prisma client
npx prisma generate
# Push schema changes to database (development)
npx prisma db push
# Create and apply migrations (production)
npx prisma migrate dev --name "migration_name"
# Apply pending migrations
npx prisma migrate deploy
# Reset database and apply all migrations
npx prisma migrate reset
# Open Prisma Studio
npx prisma studio
# Check migration status
npx prisma migrate status
- ποΈ Architecture Guide - System design and technical decisions
- π API Reference - Complete API documentation
- π Authentication Guide - Authentication system overview
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Run tests and linting
npm run lint npm run format:check
- Commit your changes
git commit -m 'Add some amazing feature'
- Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow the existing code style and patterns
- Write meaningful commit messages
- Test your changes thoroughly
- Update documentation when necessary
- Ensure all linting and formatting checks pass
Found a bug or have a feature request? Please use our issue templates:
- Bug Report - Report bugs or unexpected behavior
- Feature Request - Suggest new features or improvements
When reporting issues, please include:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Screenshots (if applicable)
- Environment details (browser, OS, etc.)
This project is licensed under the MIT License - see the LICENSE file for details.
Marin Cervinschi - @MarinCervinschi
β If you find this project helpful, please consider giving it a star!