A modern, full-stack adaptive testing platform built with Django and React. Aztec Assess provides intelligent, personalized testing experiences designed for educational institutions, with initial focus on San Diego State University (SDSU).
Currently in Development - We are actively working on this project. The basic authentication system is complete with user registration and login. Docker support has been added for consistent development environments. Course management features are implemented and functional. Student/instructor dashboards and quiz creation are in development.
- Multi-role Support: Admin, Instructor, and Student roles
- Email-based Authentication: Secure login with email verification
- Google OAuth: Sign up and log in with Google accounts
- Microsoft OAuth: Sign up and log in with Microsoft accounts
- JWT Token Management: Stateless authentication with refresh tokens stored in HTTP-only cookies
- Auto Token Refresh: Automatic token refresh for seamless user experience
- Course Lifecycle: Create, activate, archive, and delete courses
- Status Management: Draft, Active, and Archived states with role-based access
- Join Code System: Generate, enable/disable, rotate, and copy join codes for student enrollment
- Member Management: Add/remove members by email, view member roles and details
- Role-Based UI: Different interfaces and permissions for Owners, Instructors, TAs, and Students
- Student Dashboard: Personalized learning experience with adaptive quizzes
- Instructor Dashboard: Course and quiz management tools with AI assistance
- Adaptive Testing: Dynamic difficulty adjustment and format adaptation based on learning styles
- AI-Powered Features: Question generation and content assistance (instructor-controlled)
- Real-time Analytics: Performance tracking and learning insights
- Django 5.2 - Web framework
- Django REST Framework - API development
- Neon PostgreSQL - Hosted database service
- JWT Authentication - Secure token-based auth
- Poetry - Dependency management
- React 19 - UI framework
- TypeScript - Type safety
- Tailwind CSS - Styling
- React Router - Client-side routing
- Axios - HTTP client
- Vite - Build tool
- Docker - Containerization for development and production
- ESLint & Prettier - Code formatting
- Pytest - Testing framework
- MyPy - Type checking
- Ruff - Python linting
- Frontend: Serverless platform (TBD)
- Backend: Cloud hosting platform (TBD)
- Database: Neon PostgreSQL (hosted)
- Docker Desktop installed and running (Download Docker)
- Neon PostgreSQL account (Sign up for free)
- Git (for cloning the repository)
Note
If you prefer not to use Docker, you'll also need Python 3.11+, Node.js 18+, and Poetry. See Manual Setup section below.
git clone https://github.com/adaptive-testers/aztec-assess
cd aztec-assess- Sign up at neon.com and create a new project
- Get your connection string:
- In your Neon dashboard β Project β "Connect"
- Copy the connection string (format:
postgresql://user:pass@host/dbname?sslmode=require)
Create a .env file in the root directory:
# Database (Neon PostgreSQL - required)
DATABASE_URL=postgresql://username:[email protected]/dbname?sslmode=require
# Django Settings (required)
SECRET_KEY=your-secret-key-here-make-it-long-and-random
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1,backend
CORS_ALLOWED_ORIGINS=http://localhost:5173,http://127.0.0.1:5173,http://localhost:80
# Google OAuth (optional - for Google sign-in)
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_REDIRECT_URI=http://localhost:5173Quick Setup:
- SECRET_KEY: Generate one with:
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())" - Google OAuth: Optional - only needed if you want Google sign-in. Leave blank if not using.
- Never commit the
.envfile to version control
docker-compose up --build frontend-dev backendThis builds the containers and starts both services. The first build may take a few minutes.
In a new terminal (while Docker is running):
# Create database tables
docker-compose exec backend /app/.venv/bin/python manage.py migrate
# Create admin account (you'll be prompted for email and password)
docker-compose exec backend /app/.venv/bin/python manage.py createsuperuserOpen your browser to:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- Admin Panel: http://localhost:8000/admin (optional)
First Time:
- Sign up for a new account or use your superuser credentials
- Select your role (Student or Instructor) when prompted
# Start services
docker-compose up frontend-dev backend
# Stop services
docker-compose down
# View logs
docker-compose logs -f
# Run backend commands
docker-compose exec backend /app/.venv/bin/python manage.py <command>
# Rebuild after dependency changes
docker-compose up --build frontend-dev backendDatabase Connection:
- Verify
DATABASE_URLin.envincludes?sslmode=require - Check Neon dashboard to ensure database is active (not paused)
Port Conflicts:
- Ports 5173 or 8000 in use? Stop conflicting services or modify
docker-compose.yml
Build Issues:
- Ensure Docker Desktop is running
- Try:
docker-compose build --no-cache - Check logs:
docker-compose logs backend
If you prefer not to use Docker, you can set up the project manually. This requires installing Python, Node.js, and their dependencies directly on your system.
- Python 3.11+ installed and accessible in your PATH
- Node.js 18+ and npm installed
- Poetry for Python dependency management:
pip install poetryor follow Poetry installation guide - Neon PostgreSQL account and database (same as Docker setup)
-
Clone the repository (if you haven't already)
git clone https://github.com/adaptive-testers/aztec-assess cd aztec-assess/backend -
Install Python dependencies
poetry install poetry shell # Activates the virtual environment -
Create
.envfile in the backend directory (seebackend/.env.examplefor all options)DATABASE_URL=postgresql://username:[email protected]/dbname?sslmode=require SECRET_KEY=your-secret-key-here DEBUG=True ALLOWED_HOSTS=localhost,127.0.0.1 CORS_ALLOWED_ORIGINS=http://localhost:5173,http://127.0.0.1:5173 GOOGLE_CLIENT_ID=your-google-client-id GOOGLE_CLIENT_SECRET=your-google-client-secret GOOGLE_REDIRECT_URI=http://localhost:5173 MICROSOFT_CLIENT_ID=your-microsoft-client-id MICROSOFT_TENANT_ID=common MICROSOFT_REDIRECT_URI=http://localhost:5173/auth-callback.html
Create
frontend/.envwithVITE_GOOGLE_CLIENT_ID,VITE_MICROSOFT_CLIENT_ID,VITE_MICROSOFT_TENANT_ID(seefrontend/.env.example). -
Run database migrations
python manage.py migrate
-
Create a superuser account
python manage.py createsuperuser
You'll be prompted for:
- Email address
- Password (enter twice)
-
Start the development server
python manage.py runserver
The backend API will be available at: http://localhost:8000
-
Open a new terminal and navigate to the frontend directory
cd aztec-assess/frontend -
Install Node.js dependencies
npm install
-
Start the development server
npm run dev
The frontend will be available at: http://localhost:5173
Note
Docker is recommended for consistent development environments. Manual setup is useful for debugging or if you prefer working directly with the tools.
Python/Poetry:
- Install Poetry:
curl -sSL https://install.python-poetry.org | python3 - - Activate shell:
poetry shell
Node.js:
- Verify version:
node --version(needs 18+) - If install fails:
npm install --legacy-peer-deps
cd backend
poetry run pytest
poetry run pytest --cov=apps --cov-report=htmlcd frontend
npm run test
npm run test:coverageaztec-assess/
βββ backend/ # Django backend
β βββ adaptive_testing/ # Main Django project
β β βββ settings/ # Environment-specific settings
β β βββ ...
β βββ apps/ # Django applications
β β βββ accounts/ # User management and authentication
β β βββ courses/ # Course management and enrollment
β βββ Dockerfile # Backend container configuration
β βββ .dockerignore # Files excluded from Docker build
β βββ manage.py
β βββ pyproject.toml
βββ frontend/ # React frontend
β βββ src/
β β βββ features/ # Feature-based components
β β β βββ Course/ # Course management (detail page, join page)
β β β βββ CourseCreation/ # Course creation page
β β β βββ Dashboard/ # Dashboard layout
β β β βββ LogIn/ # Login page
β β β βββ Profile/ # User profile page
β β β βββ SignUp/ # Sign up page
β β βββ components/ # Reusable components
β β β βββ Sidebar/ # Navigation sidebar
β β β βββ Toast.tsx # Toast notifications
β β β βββ ProtectedRoute.tsx
β β β βββ PublicRoute.tsx
β β βββ context/ # React context providers
β β βββ api/ # API client configuration
β β βββ test/ # Test files
β β βββ types/ # TypeScript type definitions
β βββ Dockerfile # Multi-stage frontend container
β βββ .dockerignore # Files excluded from Docker build
β βββ nginx.conf # Nginx config for production
β βββ package.json
βββ docker-compose.yml # Docker Compose configuration
βββ .env # Environment variables (create this)
βββ README.md
The project uses Docker for consistent development environments. The setup includes:
- Multi-stage builds: Optimized Docker images for development and production
- Hot reload: Code changes are automatically reflected in development containers
- Volume mounting: Source code is mounted for instant updates
- Isolated dependencies: Node modules and Python virtual environments are containerized
- Python: Ruff for linting, MyPy for type checking
- TypeScript: ESLint for linting, strict type checking
- Pre-commit hooks: Automated code formatting and linting
This project is licensed under the MIT License - see the LICENSE file for details.
We welcome contributions! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
If you have any questions or need help, please open an issue in the repository.
Note: This project is currently in active development and is initially designed for San Diego State University (SDSU). Features and documentation may change as we continue to build and improve the platform.
Aztec Assess is designed to revolutionize how educational institutions conduct assessments by providing adaptive testing capabilities that adjust to individual student learning styles and performance. The platform emphasizes instructor control while leveraging AI as a supportive tool for content generation and analysis.
This project is being developed as part of a capstone project class, demonstrating real-world software development practices and modern web technologies in an educational context.
- Instructor-Centric: AI serves as an assistant, not a replacement for instructor expertise
- Adaptive Learning: Questions and formats adapt to accommodate different learning styles
- Educational Focus: Built specifically for educational institutions with SDSU as the initial deployment target