A unified project management and test case management system built with Django REST Framework and React (Vite). Both applications share a single PostgreSQL database.
root/
βββ TCM_Backend/ β AL TCMS Django backend (API on port 8001)
βββ TCM_Frontend/ β AL TCMS React frontend (Vite on port 5173)
βββ Taiga_backend/ β Taiga Django backend (API on port 8000)
βββ Taiga_frontend/ β Taiga React frontend (Vite on port 5174)
Both backends connect to the same PostgreSQL database.
| Table | Owner (runs migrations) | Mirror (managed=False) |
|---|---|---|
projects |
Taiga backend | AL TCMS backend |
issues |
AL TCMS backend | Taiga backend |
Make sure you have these installed before starting:
| Tool | Version | Download |
|---|---|---|
| Python | 3.10+ | https://www.python.org/downloads/ |
| Node.js | 18+ | https://nodejs.org/ |
| PostgreSQL | 14, 15 or 16 | https://www.postgresql.org/download/windows/ |
| Git | Latest | https://git-scm.com/ |
- Download from https://www.postgresql.org/download/windows/
- Run the installer β keep all defaults
- Set a password for the
postgresuser β remember this password - Keep port as 5432
- Press Windows key β search Environment Variables
- Click Edit the system environment variables
- Click Environment Variables button
- Under System variables β find Path β click Edit
- Click New and paste:
C:\Program Files\PostgreSQL\15\binReplace
15with your installed version number - Click OK on all windows
- Close and reopen CMD
Open CMD as Administrator and run:
psql -U postgres -h localhostType your postgres password. Then run these SQL commands one by one:
CREATE USER shared_user WITH PASSWORD 'yourpassword123';
CREATE DATABASE shared_tcms_db OWNER shared_user;
GRANT ALL PRIVILEGES ON DATABASE shared_tcms_db TO shared_user;
\qpsql -U shared_user -d shared_tcms_db -h localhostType password yourpassword123. You should see:
shared_tcms_db=>
Type \q to exit.
git clone https://github.com/YOUR_USERNAME/YOUR_REPO_NAME.git
cd YOUR_REPO_NAMEcd Taiga_backend
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txtIf there is no
requirements.txt, install manually:pip install django djangorestframework psycopg2-binary django-cors-headers python-dotenv djangorestframework-simplejwt
Create a file called .env inside Taiga_backend/ and paste:
SECRET_KEY=your-secret-key-taiga-change-this-to-random-string
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
DB_NAME=shared_tcms_db
DB_USER=shared_user
DB_PASSWORD=yourpassword123
DB_HOST=localhost
DB_PORT=5432
CORS_ORIGIN=http://localhost:5174python manage.py makemigrations
python manage.py migratepython manage.py createsuperuserpython manage.py runserver 8000Open a new CMD window:
cd TCM_Backend
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txtIf there is no
requirements.txt, install manually:pip install django djangorestframework psycopg2-binary django-cors-headers python-dotenv djangorestframework-simplejwt
Create a file called .env inside TCM_Backend/ and paste:
SECRET_KEY=your-secret-key-altcms-change-this-to-random-string
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
DB_NAME=shared_tcms_db
DB_USER=shared_user
DB_PASSWORD=yourpassword123
DB_HOST=localhost
DB_PORT=5432
CORS_ORIGIN=http://localhost:5173
INTERNAL_SYNC_TOKEN=supersecrettoken123python manage.py migrate projects --fake-initial
python manage.py makemigrations
python manage.py migratepython manage.py createsuperuserpython manage.py runserver 8001Open a new CMD window:
cd Taiga_frontend
npm install
npm run devApp runs at: http://localhost:5174
Open a new CMD window:
cd TCM_Frontend
npm install
npm run devApp runs at: http://localhost:5173
You need 4 separate CMD windows open at the same time:
| Window | Command | URL |
|---|---|---|
| 1 β Taiga Backend | cd Taiga_backend && venv\Scripts\activate && python manage.py runserver 8000 |
http://127.0.0.1:8000 |
| 2 β TCM Backend | cd TCM_Backend && venv\Scripts\activate && python manage.py runserver 8001 |
http://127.0.0.1:8001 |
| 3 β Taiga Frontend | cd Taiga_frontend && npm run dev |
http://localhost:5174 |
| 4 β TCM Frontend | cd TCM_Frontend && npm run dev |
http://localhost:5173 |
After setup, your PostgreSQL database will contain these key tables:
| Table | Owner |
|---|---|
projects |
Taiga backend |
issues |
AL TCMS backend |
suites |
AL TCMS backend |
testcases |
AL TCMS backend |
testcase_steps |
AL TCMS backend |
testplans |
AL TCMS backend |
users_user |
Taiga backend |
tasks_task |
Taiga backend |
userstories_userstory |
Taiga backend |
sprints_sprint |
Taiga backend |
| Variable | Description | Example |
|---|---|---|
SECRET_KEY |
Django secret key | Any long random string |
DEBUG |
Debug mode | True for development |
DB_NAME |
Database name | shared_tcms_db |
DB_USER |
Database user | shared_user |
DB_PASSWORD |
Database password | yourpassword123 |
DB_HOST |
Database host | localhost |
DB_PORT |
Database port | 5432 |
CORS_ORIGIN |
Allowed frontend origin | http://localhost:5174 |
| Variable | Description | Example |
|---|---|---|
SECRET_KEY |
Django secret key | Any long random string |
DEBUG |
Debug mode | True for development |
DB_NAME |
Database name | shared_tcms_db |
DB_USER |
Database user | shared_user |
DB_PASSWORD |
Database password | yourpassword123 |
DB_HOST |
Database host | localhost |
DB_PORT |
Database port | 5432 |
CORS_ORIGIN |
Allowed frontend origin | http://localhost:5173 |
INTERNAL_SYNC_TOKEN |
Internal API token | Any secret string |
Add PostgreSQL bin folder to PATH (see Step 1.2).
psql -U shared_user -d shared_tcms_db -h localhostDELETE FROM django_migrations WHERE app = 'issues';
DELETE FROM django_migrations WHERE app = 'accounts';
\qThen re-run migrations in order (Taiga first, TCM second).
cd TCM_Backend
venv\Scripts\activate
python manage.py migrateMake sure you are logged in on the frontend. The JWT token must exist in localStorage under the key access.
This field was removed in the shared DB migration. Make sure your TCM_Backend/issues/views.py uses Project.objects.get(id=taiga_project_id) not Project.objects.get(taiga_project_id=taiga_project_id).
Make sure your .gitignore includes:
# Python
venv/
__pycache__/
*.pyc
*.pyo
.env
# Node
node_modules/
dist/
.env.local
# Database
*.sqlite3
# OS
.DS_Store
Thumbs.dbMIT License β feel free to use and modify.