sankalp d66e03c0ce feat(src/projects): add ProjectNoteInline to ProjectAdmin
Add ProjectNoteInline to allow inline note management in project admin.
Restrict queryset to users with appropriate project memberships.
2026-06-28 15:45:47 +05:45
2026-06-25 22:58:45 +05:45
2026-06-25 22:58:45 +05:45
2026-06-28 15:25:21 +05:45
2026-06-28 15:00:47 +05:45
2026-06-25 22:58:45 +05:45

Project Management

A full-featured Django project management tool with Kanban boards, ticket tracking, epics, notifications, and external access sharing.

Tech Stack

  • Backend — Django 6, Django REST Framework, JWT Auth
  • Frontend — HTMX, Tailwind CSS v4 (via django-tailwind-cli)
  • Database — SQLite (dev) / MySQL (prod)
  • Task Queue — Django Q2
  • API Docs — drf-spectacular (Swagger UI)
  • Package Manager — uv

Features

  • Projects — create, manage, pin projects with colour labels and member roles
  • Tickets — full CRUD, bulk ops, Excel import/export, priority & status management
  • ️ Epics — group tickets into epics with progress tracking
  • ️ Kanban Board — drag-and-drop ticket status columns per project
  • Notifications — in-app + email notifications on ticket events
  • User Management — role-based access (superadmin / manager / member)
  • External Access — share a read-only dashboard link with external users via a token
  • Project Notes — attach notes to projects
  • Google OAuth — sign in with Google
  • Dark / Light Mode — per-user UI preferences

Quick Start

1. Clone & install

git clone https://github.com/S4NKALP/project-managment.git
cd project-managment
uv sync

2. Configure environment

cp .env.sample .env
# Edit .env with your values

Required .env keys:

DJANGO_SETTINGS_MODULE=config.settings.development
SECRET_KEY=your-secret-key
BASE_URL=http://localhost:8000
SITE_NAME=Project Management

# Google OAuth (optional)
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_REDIRECT_URI=http://localhost:8000/api/auth/google/callback/

3. Run migrations & create superuser

uv run python manage.py migrate
uv run python manage.py createsuperuser

4. Start development server

uv run python manage.py runserver

Visit http://localhost:8000 → redirects to the dashboard automatically.


Install just, then:

just setup # install deps + migrate + createsuperuser
just dev # run dev server
just migrate # run migrations
just test # run tests
just lint # ruff lint
just format # ruff format
just ci # lint + format check + django check

Run just with no arguments to see all available commands.


Project Structure

project-managment/
├── config/ # Django config package
│ ├── settings/
│ │ ├── base.py # Shared settings
│ │ ├── development.py # Dev overrides (SQLite)
│ │ └── production.py # Prod overrides (MySQL)
│ ├── urls.py # Root URL conf
│ ├── wsgi.py
│ └── asgi.py
│
├── src/ # Application code
│ ├── accounts/ # User model, auth, Google OAuth
│ ├── projects/ # Projects & members (API)
│ ├── tickets/ # Tickets, statuses, priorities (API)
│ ├── epics/ # Epics
│ ├── notes/ # Project notes
│ ├── notifications/ # In-app & email notifications
│ ├── external/ # External token-based access
│ └── dashboard/ # All HTML-rendering views
│ ├── views/ # Dashboard widgets & charts
│ ├── list_views/ # Project/ticket list views
│ ├── page_views/ # CRUD page views
│ ├── board_views/ # Kanban board views
│ └── context_processors.py
│
├── templates/ # Jinja/Django HTML templates
├── static/ # Static files (CSS, JS)
├── manage.py
├── pyproject.toml # Dependencies & ruff config
├── justfile # Task runner shortcuts
├── Dockerfile
├── Procfile
└── .env.sample

API Documentation

Running in development mode:

Endpoint Description
http://localhost:8000/api/docs/ Swagger UI
http://localhost:8000/api/schema/ OpenAPI schema

Key API routes

Method Endpoint Description
POST /api/auth/login/ JWT login
POST /api/auth/token/refresh/ Refresh token
GET/POST /api/projects/ List / create projects
GET/POST /api/tickets/ List / create tickets
GET/POST /api/notifications/ Notifications

CI / CD

GitHub Actions workflow (.github/workflows/ci.yml) runs three jobs on every push/PR to main and develop:

Job Steps
Lint ruff check + ruff format --check
Test Django system check → migration check → manage.py test
Security manage.py check --deploy

Environment Variables Reference

Variable Default Description
DJANGO_SETTINGS_MODULE — config.settings.development or production
SECRET_KEY — Django secret key
BASE_URL http://localhost:8000 Used for email links
SITE_NAME Project Management Displayed in UI & emails
GOOGLE_CLIENT_ID "" Google OAuth client ID
GOOGLE_CLIENT_SECRET "" Google OAuth secret
GOOGLE_REDIRECT_URI — OAuth callback URL
DB_NAME / DB_USER / DB_PASSWORD / DB_HOST / DB_PORT — MySQL (production only)
EMAIL_HOST / EMAIL_PORT / EMAIL_HOST_USER / EMAIL_HOST_PASSWORD — SMTP (production only)
FRONTEND_URL — Allowed CORS origin (production)
S
Description
A full-featured, open-source project management system built with Django
Readme
828 KiB
0 Stars 1 Watchers 0 Forks
Languages
HTML 66.1%
Python 33.1%
Just 0.6%
JavaScript 0.1%
Dockerfile 0.1%