Daniel Volz 9ccb5b1f0f Add past days toggle and update terminology for blisters
- Added translations for showing/hiding past days and past days count in German and English.
- Renamed "slices" to "blisters" in both translation files.
- Updated CSS styles to reflect the change from slices to blisters, including layout and hover effects.
- Introduced new styles for past days toggle button and past day blocks.
2025-12-27 15:01:54 +01:00
2025-12-19 13:09:53 +01:00
2025-12-19 13:09:53 +01:00
2025-12-19 13:09:53 +01:00

MedAssist-ng

📊 Medication tracking and planning app with stock monitoring, intake reminders, and email notifications.

Quick Start (Production)

# 1. Clone and configure
git clone https://github.com/your-username/medassist-ng.git
cd medassist-ng
cp .env.example .env

# 2. Generate secure secrets (required!)
# Edit .env and replace CHANGE_ME values with output of:
openssl rand -hex 32

# 3. Start
docker compose up -d

# App runs on http://localhost:4174 (frontend) and http://localhost:4000 (API)

Development

# Start dev environment with hot-reload
docker compose -f docker-compose.dev.yml up

# Frontend: http://localhost:5173
# Backend:  http://localhost:3000

Architecture

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│  Frontend       │    │  Backend        │    │  SQLite             │
└─────────────────┘    └─────────────────┘    └─────────────────┘
  • Frontend: React 18 + Vite + TypeScript, nginx-unprivileged (prod)
  • Backend: Fastify 5 + TypeScript + SQLite (Drizzle ORM)
  • Security: Non-root containers, read-only filesystem, no-new-privileges

Features

  • 📦 Medication Inventory - Track packs, blisters, loose pills
  • 📅 Intake Scheduling - Multiple daily schedules with reminders
  • 📊 Stock Monitoring - Automatic low-stock detection
  • 📧 Notifications - Email (SMTP) and Push (ntfy, Discord, Telegram)
  • 🌍 i18n - German and English
  • 🌙 Dark/Light Mode

Configuration

Copy .env.example to .env and configure:

Variable Required Description
JWT_SECRET Access token signing (min 10 chars)
REFRESH_SECRET Refresh token signing
`COOKIE_SECional)

File Structure

medassist-ng/
├── backend/           # Fastify API
│   ├── src/
│   │   ├── db/       # Schema + migrations
│   │   ├── routes/   # API endpoints
│   │   └── services/ # Business logic
│   └── Dockerfile
├── frontend/          # React SPA
│   ├── src/
│   │   ├── App.tsx   # Main application
│   │   └── i18n/     # Translations
│   └── Dockerfile
├── docker-compose.yml      # Production (default)
├── docker-compose.dev.yml  # Development
└── .env.example

Reverse Proxy (Caddy example)

med.example.com {
    reverse_proxy localhost:4174
}

License

MIT

Languages
TypeScript 94.4%
CSS 5.4%
Dockerfile 0.1%