Rebuild the deployment flow to prepare releases remotely, validate env/sudo prerequisites, run migrations in-release, and auto-rollback on health failures. Consolidate deployment docs and add a manual CI workflow so laptop and CI use the same push-based deploy path.
106 lines
2.7 KiB
Markdown
106 lines
2.7 KiB
Markdown
# innercontext
|
|
|
|
Personal health and skincare data hub. Collects structured data (products, routines, lab results, medications, skin snapshots) and exposes it via a REST API and a web UI to an LLM agent.
|
|
|
|
## Repository layout
|
|
|
|
```
|
|
backend/ Python backend — FastAPI REST API + SQLModel models
|
|
frontend/ SvelteKit web UI (Svelte 5, TypeScript, Tailwind CSS v4)
|
|
docs/ Deployment guides
|
|
nginx/ nginx config for production
|
|
systemd/ systemd service units
|
|
```
|
|
|
|
## Backend quick start
|
|
|
|
**Requirements:** Python 3.12+, PostgreSQL, [uv](https://docs.astral.sh/uv/)
|
|
|
|
```bash
|
|
cd backend
|
|
|
|
# Install dependencies
|
|
uv sync
|
|
|
|
# Set database URL (defaults to postgresql+psycopg://localhost/innercontext)
|
|
export DATABASE_URL=postgresql+psycopg://user:password@localhost/innercontext
|
|
|
|
# Start the API server (creates tables on first run)
|
|
uv run uvicorn main:app --reload
|
|
```
|
|
|
|
API docs available at `http://localhost:8000/docs`.
|
|
|
|
## Frontend quick start
|
|
|
|
**Requirements:** Node.js 24 LTS+, [pnpm](https://pnpm.io/)
|
|
|
|
```bash
|
|
cd frontend
|
|
|
|
# Install dependencies
|
|
pnpm install
|
|
|
|
# Start dev server (proxies API calls to localhost:8000)
|
|
pnpm dev
|
|
```
|
|
|
|
UI available at `http://localhost:5173`.
|
|
|
|
## API overview
|
|
|
|
| Prefix | Resource |
|
|
|---|---|
|
|
| `/products` | Skincare / medication products + inventory |
|
|
| `/inventory` | Individual inventory entries |
|
|
| `/health/medications` | Medication entries and usage history |
|
|
| `/health/lab-results` | Lab test results |
|
|
| `/routines` | AM/PM skincare routines and steps |
|
|
| `/routines/grooming-schedule` | Weekly grooming schedule |
|
|
| `/skincare` | Weekly skin condition snapshots |
|
|
| `/profile` | User profile (birth date, sex at birth) |
|
|
| `/health-check` | Liveness probe |
|
|
|
|
## Frontend routes
|
|
|
|
| Route | Description |
|
|
|---|---|
|
|
| `/` | Dashboard |
|
|
| `/products` | Product list |
|
|
| `/products/new` | Add product |
|
|
| `/products/[id]` | Product detail / edit |
|
|
| `/routines` | Routine list |
|
|
| `/routines/new` | Create routine |
|
|
| `/routines/[id]` | Routine detail |
|
|
| `/health/medications` | Medications |
|
|
| `/health/lab-results` | Lab results |
|
|
| `/skin` | Skin condition snapshots |
|
|
| `/profile` | User profile |
|
|
|
|
## Development
|
|
|
|
```bash
|
|
cd backend
|
|
|
|
# Lint
|
|
uv run ruff check .
|
|
|
|
# Format
|
|
uv run black .
|
|
uv run isort .
|
|
|
|
# Tests
|
|
uv run pytest
|
|
```
|
|
|
|
## Stack
|
|
|
|
- **Backend:** Python 3.12, FastAPI, Uvicorn, SQLModel 0.0.37 + SQLAlchemy, Pydantic v2, PostgreSQL (psycopg3)
|
|
- **Frontend:** SvelteKit 2, Svelte 5 (Runes), TypeScript, Tailwind CSS v4, shadcn-svelte
|
|
|
|
## Deployment
|
|
|
|
Deployments are push-based from an external machine (laptop/CI runner) to the LXC host over SSH.
|
|
|
|
- Canonical runbook: [docs/DEPLOYMENT.md](docs/DEPLOYMENT.md)
|
|
- Operator checklist: [docs/DEPLOYMENT-QUICKSTART.md](docs/DEPLOYMENT-QUICKSTART.md)
|