--- inclusion: auto --- # Session Context — Next Session Priorities ## Immediate Tasks 1. **Verify Jury-Voting** — `unikat.andreknie.de` is live and working 2. **Verify NoteGraph browse** — `notes.andreknie.de/browse?token=...` (clear SB service worker first) 3. **KIQ Docker deploy** — Docker not set up on KIQ VPS yet. Need someone with root to install Docker or find alternative 4. **Rechnungen prüfen** — 8 receipts labeled in OrgMyLife, forward to rechnungen@d-hive.de ## Key Technical Notes ### Git on this machine - Git path: `C:\Users\AndreKnie\AppData\Local\GitHubDesktop\app-3.5.8\resources\app\git\cmd\git.exe` - Always use: `$gitExe = "C:\Users\AndreKnie\AppData\Local\GitHubDesktop\app-3.5.8\resources\app\git\cmd\git.exe"` then `& $gitExe ` - `gh` CLI is NOT available ### OrgMyLife API - Endpoint: `https://api.andreknie.de` - Auth: `Authorization: Bearer !Z5l5vUcm!&qfhUuE=Nf` - Projects board: `GET/PUT /api/projects`, `POST /api/projects/create` - Tasks: `GET /api/tasks`, agent-ready filter: `?filter_agent=true` ### NoteGraph - SilverBullet: `https://notes.andreknie.de` (now serves browse UI as primary) - Browse: `https://notes.andreknie.de/browse?token=PASSWORD` - Upload: `https://notes.andreknie.de/upload?token=PASSWORD` - Ingestion uses Mistral (`mistral-small-latest`) for enrichment and Vision OCR - Repo: `NoteGraph/` with `ingestion/` Python package - Docker on VPS: Ingestion (8001), SilverBullet (3000, internal only) - **When creating notes for the user, always add `AI-Source` to the tags array in frontmatter** ### Jury-Voting App - Repo: `Jury-Voting/` (private, GitHub: DoctoDre/Jury-Voting) - URL: `https://unikat.andreknie.de` (password: `UNIKAT_jury`) - Stack: React 19 + Vite frontend, Express.js backend, JSON file persistence, SSE real-time - Port: 3002 on VPS, systemd service `jury-voting` - Caddy config: in `NoteGraph/Caddyfile` (block for `unikat.andreknie.de`) - Event: 15. UNIKAT Ideenwettbewerb, 19. Mai 2026, Science Park Kassel - 6 jurors, 11 teams, 5 criteria (1-10 scale) - Admin: `/admin`, Results/Beamer: `/results` - Future: move to `unikat.d-hive.de` (add DNS + Caddy block on KIQ VPS) ### Repos in workspace - `OrgMyLife/` — Personal task/coordination system (FastAPI + PostgreSQL) - `AI-Orchestrator/` — Agent orchestration (Python) - `NoteGraph/` — Knowledge base (SilverBullet + ingestion pipeline) - `Confluence_Bot/` — Confluence automation (PowerShell) - `Projekt-KIQ-HP/` — KIQ homepage (React/Vite, currently uses Supabase) - `Jury-Voting/` — UNIKAT Jury Voting (React/Vite + Express) - `project-audit/` — DB enterprise project audit data (GitLab) ### Deploy pattern - Push to main → GitHub Actions → SSH to VPS → deploy - Secrets via GitHub repo secrets - Caddy reverse proxy managed via `NoteGraph/Caddyfile` ### Deploy pattern for private repos (no git on VPS) - Build in GitHub Actions (checkout → npm ci → npm run build) - Create tar.gz archive of built artifacts - Upload via `appleboy/scp-action` to VPS `/tmp/` - Extract via `appleboy/ssh-action`, install deps, restart systemd service - This avoids needing git credentials on the VPS ### VPS (217.160.174.2) - Caddy handles HTTPS for all domains (auto Let's Encrypt) - OrgMyLife on port 8000 (`api.andreknie.de`) - SilverBullet on port 3000 (`notes.andreknie.de`) - Ingestion on port 8001 (`notes.andreknie.de/upload`) - Jury-Voting on port 3002 (`unikat.andreknie.de`) - SSH: root@217.160.174.2, key stored as `DEPLOY_SSH_KEY` in GitHub repos - Node.js 20 installed via nodesource - No rsync installed — use tar+scp for file transfer - No docker on this VPS for Jury-Voting (runs as systemd service with tsx) ### Projekt-KIQ-HP (separate VPS: projekt-kiq.d-hive.de) - Deploy user: `github-deploy` - Static site deployed via rsync to `/opt/projekt-kiq/site` - Caddy config at `/etc/caddy/Caddyfile` (managed by KIQ deploy workflow) - Has rsync available - SSH key: `DEPLOY_SSH_KEY` in KIQ GitHub repo ### Express 5 Gotchas - Do NOT pass `app` to functions typed as `Express` — route registration silently fails at runtime - Use `Router()` and `app.use(router)` pattern instead - The `Express` type from `@types/express` doesn't match Express 5 runtime correctly - SPA catch-all: use middleware (`app.use`) not `app.get('/{*splat}')` — the splat syntax can interfere ### DB GitLab (project-audit) - Requires `scm-info.yaml` in repo root for security scans - Format: `version: v3`, `license: LicenseRef-DBISL`, `contacts:`, `confidentiality: internal`, `reference-ids: none` - GitLab URL: `git.tech.rz.db.de/AndreKnie/project-audit` ### DNS - `andreknie.de` DNS managed externally (takes ~5 min to propagate new subdomains) - Add A record pointing to 217.160.174.2 for new subdomains - Caddy auto-provisions HTTPS certificates once DNS resolves