A full-stack e-learning application powered by ieServices, built with Django backend and React frontend, using GraphQL for communication.
.
├── backend/ # Django application
│ ├── courses/ # Courses app with models, views, and GraphQL schema
│ ├── elearn/ # Main Django project settings
│ └── setup.py # Python package configuration
└── frontend/ # React application
├── src/
│ ├── components/ # React components
│ ├── graphql/ # GraphQL queries
│ └── apollo-client.js # Apollo Client setup
└── package.json
The backend is a Django application with GraphQL API and REST API endpoints.
- Navigate to the backend directory:
cd backend- Install dependencies using setup.py:
pip install -e .
# For development dependencies
pip install -e .[dev]- Run migrations:
python manage.py migrate- (Optional) Load demo data:
python manage.py seed_demo- Start the development server:
python manage.py runserverThe backend will be available at http://localhost:8000
- REST API:
http://localhost:8000/api/courses/ - GraphQL:
http://localhost:8000/graphql - GraphiQL Interface:
http://localhost:8000/graphql(interactive GraphQL explorer)
type Course {
id: ID!
title: String!
description: String!
isActive: Boolean!
createdAt: DateTime!
}
type Query {
courses: [Course]
course(id: ID!): Course
}The frontend is a React application using Apollo Client for GraphQL communication.
- Navigate to the frontend directory:
cd frontend- Install dependencies:
npm install- Start the development server:
npm startThe frontend will be available at http://localhost:3000
- Start the Django backend:
cd backend
python manage.py runserver- In a new terminal, start the React frontend:
cd frontend
npm start- Open your browser to
http://localhost:3000to see the application
- Django 4.2+ with REST Framework
- GraphQL API using graphene-django
- CORS support for frontend communication
- SQLite database
- Course model with admin interface
- Test suite with pytest
- React 18 with hooks
- Apollo Client for GraphQL
- Responsive design with ieServices branding
- Loading and error states
- Interactive course listing with expandable descriptions
- Click-to-reveal course details
cd backend
pytest# Format code
black .
# Lint
ruff check .
# Type checking
mypy .DJANGO_SECRET_KEY: Django secret key (default: "dev-secret")DEBUG: Debug mode (default: "1")ALLOWED_HOSTS: Comma-separated allowed hosts (default: "*")
- Django 4.2+
- Django REST Framework
- graphene-django
- django-cors-headers
- React 18
- Apollo Client
- GraphQL
The project includes comprehensive Terraform configurations for two deployment options:
Perfect for local development and testing on your machine.
Located in backend/terraform/podman/:
- Infrastructure: Kubernetes Namespace, PostgreSQL Pod with PVC, Django on ECS-like pods
- Features: Init containers, health checks, automatic migrations, ConfigMaps & Secrets
- Cost: Free (runs locally)
- Documentation: See
backend/terraform/podman/README.md
Quick start:
# Build backend image
cd backend
podman build -t localhost/ieservices-elearn-backend:latest -f terraform/aws/Dockerfile .
# Deploy with Terraform
cd terraform/podman
cp terraform.tfvars.example terraform.tfvars
terraform init
terraform apply
# Access at http://localhost:30800Located in frontend/terraform/podman/:
- Infrastructure: React + Nginx in Pods, custom Nginx config for SPA routing
- Features: Health checks, resource limits, optional HPA
- Cost: Free (runs locally)
- Documentation: See
frontend/terraform/podman/README.md
Quick start:
# Build frontend image
cd frontend
podman build -t localhost/ieservices-elearn-frontend:latest .
# Deploy with Terraform
cd terraform/podman
cp terraform.tfvars.example terraform.tfvars
terraform init
terraform apply
# Access at http://localhost:30300Production-ready cloud deployment with managed services.
Located in backend/terraform/aws/:
- Infrastructure: VPC, ECS Fargate, RDS PostgreSQL, Application Load Balancer
- Features: Auto-scaling, CloudWatch logging, Multi-AZ deployment
- Cost: ~$40-60/month for dev environment
- Documentation: See
backend/terraform/aws/README.md
Quick start:
cd backend/terraform/aws
cp terraform.tfvars.example terraform.tfvars
# Edit terraform.tfvars with your values
terraform init
terraform applyLocated in frontend/terraform/aws/:
- Infrastructure: S3 static hosting, CloudFront CDN, optional Route53
- Features: Global CDN, HTTPS, automatic cache invalidation
- Cost: ~$5-15/month for dev environment
- Documentation: See
frontend/terraform/aws/README.md
Quick start:
cd frontend/terraform/aws
cp terraform.tfvars.example terraform.tfvars
# Edit terraform.tfvars with your backend API URL
terraform init
terraform applyDeploy the frontend:
cd frontend
chmod +x deploy.sh
./deploy.sh dev| Feature | Podman Kubernetes | AWS Cloud |
|---|---|---|
| Cost | Free | ~$45-75/month |
| Setup | Local machine | AWS account required |
| Database | PostgreSQL in Pod | RDS PostgreSQL |
| Scaling | Manual/HPA | Auto-scaling |
| Availability | Single machine | Multi-AZ |
| Best For | Development, Testing | Production, Staging |
For detailed deployment instructions, cost estimates, and troubleshooting, refer to the README files in each terraform directory.
ieServices is a leading provider of innovative technology solutions, specializing in educational platforms and enterprise software services.
This project is for educational purposes.