A modern task management application built with Angular frontend and Django REST Framework backend.
- Frontend: Angular 19.2.x (TypeScript, Angular Material, Angular CDK)
- Backend: Django 5.2.x with Django REST Framework 3.16.x
- API: RESTful API for authentication, tasks, and contacts management
For production deployment with Docker and Traefik reverse proxy with HTTPS support:
π Documentation:
- Quick Reference Guide - Commands and common operations
- Full Deployment Guide - Complete setup and configuration
π Quick start with HTTPS:
cp .env.example .env
# Edit .env with your configuration
# Deploy (HTTPS enabled by default with Traefik's self-signed certificate)
docker compose up -d --build
# Or use the helper script
./deploy.shAccess your application at https://localhost
- Frontend: https://localhost
- Backend API: https://localhost/api/
- Django Admin: https://localhost/admin/
Note: Browser will show a security warning (expected for Traefik's default certificate in development)
For local development without Docker, follow the instructions below.
Before you begin, ensure you have the following installed on your system:
- Node.js (v18.x or higher) and npm (v9.x or higher)
- Python (v3.10 or higher)
- pip (Python package manager)
- Git
node --version # Should be v18.x or higher
npm --version # Should be v9.x or higher
python3 --version # Should be v3.10 or higher
pip3 --versiongit clone https://github.com/pirus99/join.git
cd joincd backend# On Linux/macOS
python3 -m venv venv
source venv/bin/activate
# On Windows
python -m venv venv
venv\Scripts\activatepip install -r requirements.txtThe backend uses the following key packages:
- Django 5.2.8
- djangorestframework 3.16.1
- django-cors-headers 4.9.0
python manage.py migratepython manage.py createsuperuserFollow the prompts to create an admin account for accessing the Django admin panel.
python manage.py runserverThe backend API will be available at http://localhost:8000/
Important API Endpoints:
- Authentication:
http://localhost:8000/api/v1/auth/ - Tasks:
http://localhost:8000/api/v1/task/ - Contacts:
http://localhost:8000/api/v1/contact/
Open a new terminal window/tab (keep the backend server running).
cd frontendnpm installThis will install all required Angular packages including:
- Angular Core & Common modules
- Angular Material & CDK
- RxJS
- And other dependencies
npm start
# or
ng serveThe frontend application will be available at http://localhost:4200/
The app will automatically reload when you make changes to the source files.
For full-stack development, you need both servers running:
-
Terminal 1 - Backend:
cd backend source venv/bin/activate # On Windows: venv\Scripts\activate python manage.py runserver
-
Terminal 2 - Frontend:
cd frontend npm start -
Open your browser and navigate to
http://localhost:4200/
cd frontend
npm run build -- --configuration developmentcd frontend
npm run buildBuild artifacts will be stored in the frontend/dist/ directory.
cd backend
python manage.py testcd frontend
npm testjoin/
βββ backend/ # Django REST Framework backend
β βββ core/ # Django project settings
β βββ contacts_app/ # Contacts management app
β βββ tasks_app/ # Tasks management app
β βββ user_auth_app/ # User authentication app
β βββ manage.py # Django management script
β βββ requirements.txt # Python dependencies
β
βββ frontend/ # Angular frontend
β βββ src/
β β βββ app/
β β β βββ features/ # Feature modules (pages)
β β β βββ shared/ # Shared components & services
β β β βββ ...
β β βββ ...
β βββ package.json # Node dependencies
β βββ angular.json # Angular configuration
β
βββ README.md # This file
Generate a new component:
ng generate component component-nameFor a complete list of available schematics:
ng generate --helpng e2eNote: Angular CLI does not include an e2e testing framework by default. You can choose one that suits your needs.
If you get a "port already in use" error:
Backend (port 8000):
# Find and kill the process
lsof -ti:8000 | xargs kill -9 # On Linux/macOS
# On Windows, use Task Manager or:
netstat -ano | findstr :8000
taskkill /PID <PID> /FFrontend (port 4200):
# The Angular dev server will automatically try port 4201 if 4200 is busy
# Or you can specify a different port:
ng serve --port 4201If you have issues with the virtual environment:
# Deactivate current environment
deactivate
# Remove the old virtual environment
rm -rf venv
# Create a new one
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtIf you encounter frontend dependency issues:
cd frontend
rm -rf node_modules package-lock.json
npm installThis project is for educational purposes.