README: rewrite as clean overview — tech stack, features, API reference, link to deploy/README for install
This commit is contained in:
70
README.md
70
README.md
@@ -2,16 +2,17 @@
|
|||||||
|
|
||||||
A self-hosted project tracking web app. Dark-themed, minimal, fast.
|
A self-hosted project tracking web app. Dark-themed, minimal, fast.
|
||||||
|
|
||||||
**Live:** https://projects.ledrew.me
|
Built with Node.js, Express, SQLite, and vanilla JS/CSS. No database server, no framework, no build step.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Stack
|
## Tech Stack
|
||||||
|
|
||||||
- **Backend:** Node.js + Express + better-sqlite3
|
- **Backend:** Node.js + Express + better-sqlite3
|
||||||
- **Frontend:** Vanilla JS + CSS (no framework, no build step)
|
- **Frontend:** Vanilla JS + CSS (no framework, no build step)
|
||||||
- **Web Server:** nginx (reverse proxy + static files)
|
- **Web Server:** nginx (reverse proxy + static files)
|
||||||
- **Database:** SQLite (single file, no server process)
|
- **Database:** SQLite (single file, no server process)
|
||||||
|
- **Deploy:** Docker Compose (2 containers: backend + nginx)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -30,7 +31,7 @@ A self-hosted project tracking web app. Dark-themed, minimal, fast.
|
|||||||
## API
|
## API
|
||||||
|
|
||||||
| Method | Endpoint | Description |
|
| Method | Endpoint | Description |
|
||||||
|--------|----------|-------------|
|
|---|---|---|
|
||||||
| GET | `/api/projects` | List all projects |
|
| GET | `/api/projects` | List all projects |
|
||||||
| GET | `/api/projects/:id` | Get single project |
|
| GET | `/api/projects/:id` | Get single project |
|
||||||
| POST | `/api/projects` | Create project |
|
| POST | `/api/projects` | Create project |
|
||||||
@@ -46,7 +47,7 @@ A self-hosted project tracking web app. Dark-themed, minimal, fast.
|
|||||||
"url": "https://...",
|
"url": "https://...",
|
||||||
"notes": "Description...",
|
"notes": "Description...",
|
||||||
"status": "Active|Backlog|On Hold|Completed",
|
"status": "Active|Backlog|On Hold|Completed",
|
||||||
"owner": "Ada",
|
"owner": "Admin",
|
||||||
"tags": "tag1,tag2"
|
"tags": "tag1,tag2"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -55,32 +56,19 @@ A self-hosted project tracking web app. Dark-themed, minimal, fast.
|
|||||||
|
|
||||||
## Deploy
|
## Deploy
|
||||||
|
|
||||||
|
See [deploy/README.md](deploy/README.md) for full deployment instructions.
|
||||||
|
|
||||||
|
**Quick start (one command on fresh Debian/Ubuntu):**
|
||||||
```bash
|
```bash
|
||||||
# 1. Install Node.js 20
|
curl -sL https://gitea.ledrew.me/ledadmin/project-tracker/raw/branch/master/deploy/setup.sh -o setup.sh && bash setup.sh
|
||||||
wget -q https://nodejs.org/dist/v20.18.0/node-v20.18.0-linux-x64.tar.gz
|
|
||||||
tar -xzf node-v20.18.0-linux-x64.tar.gz
|
|
||||||
mv node-v20.18.0-linux-x64 /usr/local/node
|
|
||||||
ln -sf /usr/local/node/bin/{node,npm} /usr/bin/
|
|
||||||
|
|
||||||
# 2. Install nginx
|
|
||||||
apt-get update && apt-get install -y nginx
|
|
||||||
|
|
||||||
# 3. Copy files
|
|
||||||
mkdir -p /opt/project-tracker/{backend,data,frontend}
|
|
||||||
cp backend/* /opt/project-tracker/backend/
|
|
||||||
cp frontend/* /opt/project-tracker/frontend/
|
|
||||||
cp nginx.conf /etc/nginx/sites-available/project-tracker
|
|
||||||
|
|
||||||
# 4. Install deps
|
|
||||||
cd /opt/project-tracker/backend && npm install
|
|
||||||
|
|
||||||
# 5. Start services
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable project-tracker nginx
|
|
||||||
systemctl start project-tracker nginx
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Or run `deploy.sh` on a fresh Debian system.
|
**Manual Docker install:**
|
||||||
|
```bash
|
||||||
|
git clone https://gitea.ledrew.me/ledadmin/project-tracker.git
|
||||||
|
cd project-tracker/deploy
|
||||||
|
docker compose up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -88,21 +76,15 @@ Or run `deploy.sh` on a fresh Debian system.
|
|||||||
|
|
||||||
```
|
```
|
||||||
project-tracker/
|
project-tracker/
|
||||||
├── backend/
|
├── deploy/
|
||||||
│ ├── server.js # Express API + SQLite
|
│ ├── docker-compose.yml # Services (backend + nginx)
|
||||||
│ └── package.json
|
│ ├── Dockerfile # Node.js backend image
|
||||||
├── frontend/
|
│ ├── Dockerfile.nginx # nginx + frontend image
|
||||||
│ ├── index.html # SPA (dark theme)
|
│ ├── nginx.conf # Reverse proxy config
|
||||||
│ └── favicon.png
|
│ ├── setup.sh # One-shot deploy script
|
||||||
├── nginx.conf # Reverse proxy
|
│ ├── www/ # Frontend (baked into nginx image)
|
||||||
└── deploy.sh # One-shot deploy script
|
│ └── README.md # Full deployment guide
|
||||||
|
└── backend/
|
||||||
|
├── server.js # Express API
|
||||||
|
└── package.json
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Notes
|
|
||||||
|
|
||||||
- API runs on port 3000, nginx proxies `/api/` and serves static files on port 80
|
|
||||||
- Database file: `/opt/project-tracker/data/projects.db`
|
|
||||||
- No authentication on the API — intended for internal use behind a reverse proxy
|
|
||||||
- CORS is open for development; restrict in production if needed
|
|
||||||
|
|||||||
Reference in New Issue
Block a user