Files
project-managment/README.md
T
sankalp 9d5ebcfcde feat(root): add project management features and dependencies
Add Kanban board, epics, notifications, external sharing, and related API endpoints; update README and install required packages such as django‑q2, openpyxl, and others.
2026-06-28 14:15:00 +05:45

183 lines
5.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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](https://github.com/astral-sh/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
```bash
git clone https://github.com/S4NKALP/project-managment.git
cd project-managment
uv sync
```
### 2. Configure environment
```bash
cp .env.sample .env
# Edit .env with your values
```
Required `.env` keys:
```ini
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
```bash
uv run python manage.py migrate
uv run python manage.py createsuperuser
```
### 4. Start development server
```bash
uv run python manage.py runserver
```
Visit **http://localhost:8000** → redirects to the dashboard automatically.
---
## Using `just` (Recommended)
Install [just](https://github.com/casey/just), then:
```bash
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) |