# 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) ```json { "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](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):** ```bash curl -sL https://gitea.ledrew.me/ledadmin/project-tracker/raw/branch/master/deploy/setup.sh -o setup.sh && bash setup.sh ``` **Manual Docker install:** ```bash 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 ```