Add Windows setup (setup.ps1), expand README with cross-platform install, Claude Desktop example, backup/restore, architecture diagram, .dockerignore
This commit is contained in:
parent
e34ae36774
commit
dfc5ab3c9d
3 changed files with 133 additions and 5 deletions
7
.dockerignore
Normal file
7
.dockerignore
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
.git
|
||||
.env
|
||||
content/
|
||||
*.md
|
||||
LICENSE
|
||||
setup.sh
|
||||
setup.ps1
|
||||
106
README.md
106
README.md
|
|
@ -6,6 +6,14 @@ Built by [DiligenceWorks](https://diligenceworks.online).
|
|||
|
||||
## Quick Start
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- [Docker Desktop](https://www.docker.com/products/docker-desktop/) (Windows, macOS, or Linux)
|
||||
- That's it. No Python, Node.js, or database install needed.
|
||||
|
||||
### Install
|
||||
|
||||
**macOS / Linux:**
|
||||
```bash
|
||||
git clone https://github.com/diligenceworks/diligence
|
||||
cd diligence
|
||||
|
|
@ -13,7 +21,32 @@ cd diligence
|
|||
docker compose up -d
|
||||
```
|
||||
|
||||
Open http://localhost and create your account.
|
||||
**Windows (PowerShell):**
|
||||
```powershell
|
||||
git clone https://github.com/diligenceworks/diligence
|
||||
cd diligence
|
||||
powershell -ExecutionPolicy Bypass -File setup.ps1
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
**Windows (no script — manual):**
|
||||
```powershell
|
||||
git clone https://github.com/diligenceworks/diligence
|
||||
cd diligence
|
||||
copy .env.example .env
|
||||
# Edit .env and set SECRET_KEY to any random string (e.g. mash the keyboard)
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
Open http://localhost and create your account. First user gets admin.
|
||||
|
||||
### Verify
|
||||
|
||||
```bash
|
||||
docker compose ps
|
||||
```
|
||||
|
||||
You should see 4 containers, all healthy: `frontend`, `backend`, `mcp-connector`, `fitness-db`.
|
||||
|
||||
## Features
|
||||
|
||||
|
|
@ -28,15 +61,38 @@ Open http://localhost and create your account.
|
|||
|
||||
## Connecting an AI Agent
|
||||
|
||||
Point your agent's MCP config to `http://localhost:3001/sse` (development) or `https://your-domain/mcp` (production behind reverse proxy).
|
||||
Point your agent's MCP config at:
|
||||
|
||||
| Environment | URL |
|
||||
|-------------|-----|
|
||||
| Local (development) | `http://localhost:3001/sse` |
|
||||
| Behind reverse proxy | `https://your-domain/mcp` |
|
||||
|
||||
Works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible agent.
|
||||
|
||||
Copy the contents of [AGENT_GUIDE.md](AGENT_GUIDE.md) into your agent's system instructions for motivation-aware coaching.
|
||||
|
||||
### Claude Desktop example
|
||||
|
||||
Add to your `claude_desktop_config.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"diligence": {
|
||||
"url": "http://localhost:3001/sse"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Then paste the contents of `AGENT_GUIDE.md` into your Claude Desktop project instructions.
|
||||
|
||||
## Configuring Integrations
|
||||
|
||||
All integrations are configured through the app UI (Settings → Integrations) or through your AI agent. No `.env` file editing or container restarts needed.
|
||||
All integrations are configured through the app UI (**Settings → Integrations**) or through your AI agent. No `.env` file editing or container restarts needed.
|
||||
|
||||
Tell your agent: *"I want to connect my Strava"* — it will walk you through getting API credentials and store them encrypted.
|
||||
|
||||
## Data Sovereignty
|
||||
|
||||
|
|
@ -44,17 +100,57 @@ Diligence is self-hosted software. Your data never leaves your server. No cloud
|
|||
|
||||
Your fitness data — heart rate, body composition, food intake, GPS traces — is biometric data that deserves sovereignty.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────┐
|
||||
│ nginx │
|
||||
│ (frontend, /api proxy, /mcp proxy) │
|
||||
├──────────┬─────────────────┬────────────────────┤
|
||||
│ React │ FastAPI │ MCP Connector │
|
||||
│ SPA │ Backend │ (14 tools) │
|
||||
│ │ │ port 3001 │
|
||||
│ ├──────────────────┤ │
|
||||
│ │ PostgreSQL 16 │ │
|
||||
│ │ (internal only) │ │
|
||||
└──────────┴──────────────────┴────────────────────┘
|
||||
```
|
||||
|
||||
## Stack
|
||||
|
||||
- Python 3.12, FastAPI, SQLAlchemy
|
||||
- Python 3.12, FastAPI, SQLAlchemy (async)
|
||||
- React 18, Vite
|
||||
- PostgreSQL 16
|
||||
- FastMCP (Streamable HTTP/SSE)
|
||||
- Docker Compose
|
||||
|
||||
## Updating
|
||||
|
||||
```bash
|
||||
git pull
|
||||
docker compose build
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
Database migrations run automatically on startup. Your data is preserved.
|
||||
|
||||
## Backing Up
|
||||
|
||||
Your data lives in the `fitness_db_data` Docker volume:
|
||||
|
||||
```bash
|
||||
docker compose exec fitness-db pg_dump -U fitness fitness_rewards > backup.sql
|
||||
```
|
||||
|
||||
To restore:
|
||||
|
||||
```bash
|
||||
docker compose exec -i fitness-db psql -U fitness fitness_rewards < backup.sql
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions welcome. Open an issue to discuss before submitting a PR.
|
||||
Contributions welcome. Please open an issue to discuss before submitting a PR.
|
||||
|
||||
## License
|
||||
|
||||
|
|
|
|||
25
setup.ps1
Normal file
25
setup.ps1
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# Diligence — Windows Setup
|
||||
Write-Host "`n`e[36m💪 Diligence — Setup`e[0m`n"
|
||||
|
||||
if (Test-Path .env) {
|
||||
Write-Host "`e[33m.env already exists. Delete it first to regenerate.`e[0m"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Generate random SECRET_KEY (64 hex chars)
|
||||
$bytes = New-Object byte[] 32
|
||||
[System.Security.Cryptography.RandomNumberGenerator]::Fill($bytes)
|
||||
$secret = ($bytes | ForEach-Object { $_.ToString("x2") }) -join ""
|
||||
|
||||
# Create .env from template
|
||||
Copy-Item .env.example .env
|
||||
(Get-Content .env) -replace "^SECRET_KEY=.*", "SECRET_KEY=$secret" | Set-Content .env
|
||||
|
||||
Write-Host "`e[32m✅ .env created with random SECRET_KEY`e[0m"
|
||||
Write-Host ""
|
||||
Write-Host "Next steps:"
|
||||
Write-Host " docker compose up -d"
|
||||
Write-Host " Open http://localhost"
|
||||
Write-Host " Register your account"
|
||||
Write-Host " Configure integrations via Settings or your AI agent"
|
||||
Write-Host ""
|
||||
Loading…
Add table
Add a link
Reference in a new issue