A comprehensive e-learning platform built with ASP.NET Core backend and React frontend.
- Docker and Docker Compose installed
- Git
-
Clone the repository
git clone <repository-url> cd ascenddev
-
Set up environment variables
cp .env.example .env
Edit the
.envfile with your specific configuration values. -
Build and start all services
docker-compose up -d --build
Note: Use
--buildflag to ensure Docker images are rebuilt with the latest changes, especially for Node.js version updates.This will start:
- PostgreSQL Database (port 5432)
- Redis Cache (port 6379)
- Backend API (port 5171)
- Frontend App (port 3000)
- Configuration Upload Service (runs once to populate database)
-
Access the application
- Frontend: http://localhost:3000
- Backend API: http://localhost:5171
- API Documentation: http://localhost:5171/swagger
The Docker Compose setup is configured for development with:
- Hot reload for frontend changes
- Volume mounts for live code updates
- Development environment settings
docker-compose downTo also remove volumes (database data):
docker-compose down -v- Technology: ASP.NET Core 8
- Database: PostgreSQL
- Cache: Redis
- Features: JWT Authentication, OAuth, Code Execution, Course Management
- Technology: React 18 + TypeScript
- Build Tool: Vite 7.1.6 (requires Node.js 20.19+ or 22.12+)
- UI Library: Mantine
- State Management: Redux Toolkit + React Query
- PostgreSQL 16 with initialization scripts
- Sample data automatically loaded on first run
Key environment variables (see .env.example for full list):
# Database
POSTGRES_PASSWORD=your_secure_password
POSTGRES_DB=ascenddev
# Redis
REDIS_PASSWORD=your_redis_password
# JWT
JwtSettings__Key=your-256-bit-secret-key
# API URL for frontend
VITE_API_URL=http://localhost:5171/apiBackend only:
docker-compose up postgres redis api -dFrontend only (after backend is running):
cd frontend
npm install
npm run devView logs for all services:
docker-compose logs -fView logs for specific service:
docker-compose logs -f frontend
docker-compose logs -f apiFor production deployment, consider:
- Using production-optimized Dockerfiles
- Setting up proper secrets management
- Configuring reverse proxy (nginx)
- Setting up SSL certificates
- Enabling New Relic monitoring (optional)
- Port conflicts: Ensure ports 3000, 5171, 5432, and 6379 are available
- Database connection: Wait for PostgreSQL to be fully initialized
- Frontend API calls: Ensure
VITE_API_URLpoints to the correct backend URL
The services include health checks. Check service status:
docker-compose psTo completely reset the application:
docker-compose down -v
docker-compose build --no-cache
docker-compose up -d