Glicemia in tempo reale · Time in Range · Insulina & Carboidrati · Pattern predittivi · Telegram Alerts
Vue 3 + Express + MySQL. Zero dipendenze cloud: i tuoi dati rimangono solo nel tuo server.
cp .env.example .env
$EDITOR .env
docker compose up -d --build ┌───────────────────────────────────┐
│ Docker Network (internal) │
│ │
Cloudflare Tunnel │ ┌─────────────┐ ┌─────────────┐│
──────────────────▶│ │ Frontend │ │ Backend ││
│ │ (nginx) │───▶│ (Express) ││
Browser (SPA) ───▶│ │ :80 │ │ :3001 ││
│ └─────────────┘ └─────────────┘│
│ │ │ │
│ ▼ ▼ │
│ Static assets REST API + cron │
└───────────────────────────────────┘
│
▼
MySQL ESTERNO
- Frontend pubblico: Cloudflare Tunnel punta a nginx (
:80). - Backend privato: le API non sono esposte. Tutto il traffico passa per nginx.
- Proxy:
/api/*→http://backend:3001(rete Docker interna).
| Layer | Tool |
|---|---|
| Frontend | Vue 3, Vite, Pinia, Tailwind 3, DaisyUI, Chart.js, jsPDF |
| Backend | Express 4, mysql2, node-cron, axios, cors |
| Proxy | nginx Alpine (/api/ → backend) |
| Infra | Docker Compose, Cloudflare Tunnel |
| DB | MySQL 8 esterno al container |
GliceChart/
├── backend/
│ ├── server.js Express + API + cron
│ ├── db.js MySQL pool + queries
│ ├── gluroo.js Integrazione Gluroo/Nightscout
│ ├── Dockerfile Node 20 Alpine
│ └── package.json
├── frontend/
│ ├── src/ Vue 3 + Vite + Pinia
│ ├── nginx.conf Proxy /api/ → backend
│ ├── Dockerfile nginx Alpine
│ └── package.json
├── docker-compose.yml Due servizi: frontend + backend
├── .env Variabili d'ambiente (NON commitare)
├── .env.example Template
└── cloudflared.example.yml Template tunnel Cloudflare
| Servizio | Porta host | Descrizione |
|---|---|---|
| Frontend | 8080/tcp |
SPA Vue + proxy API |
| Backend | non esposta | Solo rete Docker interna |
| MySQL | 3306/tcp |
Esterno alla macchina host |
- Supporto Nightscout self-hosted oltre a Gluroo
- Tema WCAG AAA
- Share-link caregiver
- Annotazioni eventi
- Export A1C via email/Telegram
⚠️ Strumento di supporto personale. Non sostituisce il parere medico specialista.
MIT © Made with ❤️ from the community