2.4 KiB
2.4 KiB
Project Tracker
A self-hosted project tracking web app. Dark-themed, minimal, fast.
Built with Node.js, Express, SQLite, and vanilla JS/CSS. No database server, no framework, no build step.
Tech Stack
- Backend: Node.js + Express + better-sqlite3
- Frontend: Vanilla JS + CSS (no framework, no build step)
- Web Server: nginx (reverse proxy + static files)
- Database: SQLite (single file, no server process)
- Deploy: Docker Compose (2 containers: backend + nginx)
Features
- List all projects with priority badges
- Filter by status: All / Active / Backlog / On Hold / Completed
- Drill-down detail panel — click any project to view/edit
- Create new projects via modal form
- Fields: Name, Priority, URL, Notes, Status, Owner, Tags
- Fully responsive sidebar layout
- Dark GitHub-inspired theme
API
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/projects |
List all projects |
| GET | /api/projects/:id |
Get single project |
| POST | /api/projects |
Create project |
| PUT | /api/projects/:id |
Update project |
| DELETE | /api/projects/:id |
Delete project |
Body (POST/PUT)
{
"name": "Project Name",
"priority": "High|Med-High|Medium|Low",
"url": "https://...",
"notes": "Description...",
"status": "Active|Backlog|On Hold|Completed",
"owner": "Admin",
"tags": "tag1,tag2"
}
Deploy
See deploy/README.md for full deployment instructions.
Quick start (one command on fresh Debian/Ubuntu):
curl -sL https://gitea.ledrew.me/ledadmin/project-tracker/raw/branch/master/deploy/setup.sh -o setup.sh && bash setup.sh
Manual Docker install:
git clone https://gitea.ledrew.me/ledadmin/project-tracker.git
cd project-tracker/deploy
docker compose up -d --build
File Structure
project-tracker/
├── deploy/
│ ├── docker-compose.yml # Services (backend + nginx)
│ ├── Dockerfile # Node.js backend image
│ ├── Dockerfile.nginx # nginx + frontend image
│ ├── nginx.conf # Reverse proxy config
│ ├── setup.sh # One-shot deploy script
│ ├── www/ # Frontend (baked into nginx image)
│ └── README.md # Full deployment guide
└── backend/
├── server.js # Express API
└── package.json