innercontext/README.md
Piotr Oleszczyk a2500a919b docs: update Node.js to 24 LTS, switch to nvm + corepack
- Use nvm v0.40.4 + nvm install 24 (24.14.0 LTS) instead of nodesource
- Use corepack enable pnpm instead of npm install -g pnpm
- Add symlink step: ln -sf \$(nvm which current) /usr/local/bin/node so
  systemd service can reference a stable path
- Update ExecStart in innercontext-node.service: /usr/bin → /usr/local/bin
- Update Node.js version references in README.md (22 → 24 LTS)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 20:24:38 +01:00

110 lines
3 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, MCP, and a web UI to an LLM agent.
## Repository layout
```
backend/ Python backend — FastAPI REST API + MCP server + 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 |
| `/health-check` | Liveness probe |
## MCP server
innercontext exposes 14 tools via [FastMCP](https://github.com/jlowin/fastmcp) at the StreamableHTTP endpoint `http://localhost:8000/mcp/mcp`.
Tools include: `get_products`, `get_product`, `get_open_inventory`, `get_recent_routines`, `get_latest_skin_snapshot`, `get_skin_history`, `get_medications`, `get_expiring_inventory`, `get_grooming_schedule`, `get_recent_lab_results`, and more.
Connect an MCP-compatible LLM agent by pointing it at `http://<host>/mcp/mcp`.
## 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 |
## 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)
- **MCP:** FastMCP 3.0.2 (StreamableHTTP transport)
- **Frontend:** SvelteKit 2, Svelte 5 (Runes), TypeScript, Tailwind CSS v4, shadcn-svelte
## Deployment
See [docs/DEPLOYMENT.md](docs/DEPLOYMENT.md) for a step-by-step guide for a Proxmox LXC setup (Debian 13, nginx, systemd services).