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.

Resource requirements:

  • RAM: 512 MB minimum, 1 GB recommended
  • CPU: 1 vCPU
  • Disk: 2 GB
  • Ports: 80 (HTTP)

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
Description
No description provided
Readme 196 KiB
Languages
HTML 71.9%
Shell 14%
JavaScript 13.7%
Dockerfile 0.4%