97 lines
2.5 KiB
Markdown
97 lines
2.5 KiB
Markdown
# 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
|
|
```
|