A gamified chemistry learning platform designed for O/A-Level students, transforming traditional chemistry education into an engaging adventure through six magical realms.
- Mathmage Trials: Master equation balancing and stoichiometry
- Memory Labyrinth: Test knowledge of chemical properties and reactions
- Virtual Apprentice: Learn laboratory techniques and procedures
- Seer's Challenge: Develop observation skills and predict outcomes
- Cartographer's Gauntlet: Analyze data and interpret chemical graphs
- Forest of Isomers: Navigate the complex world of organic chemistry
- Node.js 18+
- Docker and Docker Compose
- PostgreSQL 15+ (if running locally)
- Redis 7+ (if running locally)
-
Clone the repository
git clone <repository-url> cd chemquest-alchemist-academy
-
Start with Docker (Recommended)
# Start all services in development mode docker-compose -f docker-compose.dev.yml up -
Or run locally
# Install dependencies npm install cd client && npm install cd ../server && npm install cd .. # Set up environment variables cp server/.env.example server/.env # Edit server/.env with your database and Redis credentials # Start PostgreSQL and Redis (or use Docker) docker-compose -f docker-compose.dev.yml up postgres redis -d # Initialize database psql -h localhost -U chemquest_user -d chemquest_db -f database/init.sql # Start development servers npm run dev
-
Access the application
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- Health Check: http://localhost:5000/health
-
Set up environment variables
cp .env.example .env # Edit .env with production values -
Deploy with Docker
npm run docker:prod
chemquest-alchemist-academy/
├── client/ # React TypeScript frontend
│ ├── src/
│ ├── public/
│ ├── Dockerfile
│ └── package.json
├── server/ # Node.js Express backend
│ ├── src/
│ ├── Dockerfile
│ └── package.json
├── database/ # Database schema and migrations
│ └── init.sql
├── docker-compose.yml # Production Docker setup
├── docker-compose.dev.yml # Development Docker setup
└── README.md
npm run dev- Start both client and server in development modenpm run build- Build both client and server for productionnpm run test- Run tests for both client and serverdocker-compose -f docker-compose.dev.yml up- Start development environment with Dockernpm run docker:prod- Start production environment with Docker
- React 18 with TypeScript
- Vite for build tooling
- PWA support with offline capabilities
- Redux Toolkit for state management
- React Router for navigation
- Node.js with Express and TypeScript
- PostgreSQL for primary database
- Redis for caching and sessions
- JWT for authentication
- Comprehensive security middleware
- Docker and Docker Compose
- Multi-stage builds for optimization
- Health checks and monitoring
- Nginx for production frontend serving
- Gamified Learning: Character progression, XP, levels, and badges
- Six Unique Realms: Each focusing on different chemistry concepts
- Progressive Web App: Works offline and installable on mobile
- Real-time Leaderboards: Compete with other students
- Daily Quests: Keep students engaged with daily challenges
- Adaptive Difficulty: Adjusts to student performance
- Comprehensive Analytics: Track learning progress and weak areas
- JWT-based authentication with refresh tokens
- Rate limiting and request validation
- CORS protection and security headers
- Input sanitization and SQL injection prevention
- Password hashing with bcrypt
- Session management with Redis
The application uses PostgreSQL with the following main entities:
- Users and Characters (gamification profiles)
- Realms and Challenges (game content)
- Challenge Attempts (progress tracking)
- Badges and Achievements (rewards system)
- Daily Quests and Leaderboards (engagement features)
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions, please open an issue in the GitHub repository.