A solar quote calculator with Django REST Framework backend and Next.js frontend.
# Start the app
docker compose up --build
# Access:
# Frontend: http://localhost:3000
# Backend: http://localhost:8000
# Admin: http://localhost:8000/adminThe project uses environment variables for configuration.
# Copy example files and adjust accordingly
cp .env.example .env
cp frontend/.env.local.example frontend/.env.localEnvironment variables are automatically set in docker-compose.yml for development.
cd backend
uv run python manage.py migrate
uv run python manage.py create_test_users
uv run python manage.py runservercd frontend
pnpm i
pnpm dev- Admin: admin@test.com / admin123
- User: user@test.com / user123
cd backend
uv run python manage.py test# Create test users (admin@test.com/admin123, user@test.com/user123)
uv run python manage.py create_test_users
# Create superuser (interactive)
uv run python manage.py create_superuser
# Create superuser (non-interactive)
uv run python manage.py create_superuser --email admin@example.com --full_name "Admin" --password admin123 --noinput
# Create app admin user
uv run python manage.py create_admin_user admin@example.com "Admin Name" password123Django REST Framework provides a browsable API interface. With the backend running:
First login at: http://localhost:8000/admin using admin credentials, then visit:
- All Quotes: http://localhost:8000/api/quotes/
- Individual Quote: http://localhost:8000/api/quotes/1/
- Create Quote: http://localhost:8000/api/quotes/ (POST form available in browser)
- Health Check: http://localhost:8000/api/health/
- User Registration: http://localhost:8000/api/auth/register/ (POST form available)
- User Login: http://localhost:8000/api/auth/login/ (POST form available)
- Interactive forms for POST/PUT requests
- JSON response formatting
- Built-in documentation
- Authentication status display
POST /api/auth/register/- Register new userPOST /api/auth/login/- Get JWT tokensPOST /api/quotes/- Create quote (auth required)GET /api/quotes/- List user quotes (auth required)GET /api/quotes/:id/- Get specific quote (auth required)GET /api/health/- Health check
- Backend: Django, Django REST Framework, JWT Authentication
- Frontend: Next.js, React, Tailwind CSS
- Database: SQLite