Wiki source code of Tools Decisions
Version 1.1 by Robert Schaub on 2025/12/25 20:31
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | = Tools Decisions = | ||
| 2 | |||
| 3 | == Purpose == | ||
| 4 | This page documents the **deliberate tool choices** for FactHarbor POC → Beta. | ||
| 5 | The goal is **low friction now**, **no rewrites later**, and **clear upgrade paths**. | ||
| 6 | |||
| 7 | ---- | ||
| 8 | |||
| 9 | == Phase 1 — POC1 (Local, Low Infrastructure) == | ||
| 10 | |||
| 11 | === Core Principles === | ||
| 12 | * Minimize setup and cognitive load | ||
| 13 | * Avoid infrastructure that is not strictly required | ||
| 14 | * Keep architecture identical to Beta where possible | ||
| 15 | |||
| 16 | === Selected Tools === | ||
| 17 | |||
| 18 | ==== Backend ==== | ||
| 19 | * **ASP.NET Core (.NET 8)** | ||
| 20 | ** Role: system of record (jobs, status, results, events) | ||
| 21 | ** Reason: strong typing, long-term maintainability, C# expertise | ||
| 22 | |||
| 23 | * **SQLite (EF Core provider)** | ||
| 24 | ** Role: local persistence | ||
| 25 | ** Reason: zero setup, file-based, easy Postgres transition | ||
| 26 | |||
| 27 | ==== Frontend & Orchestration ==== | ||
| 28 | * **Next.js (TypeScript)** | ||
| 29 | ** Role: UI + AI orchestration | ||
| 30 | ** Reason: fast iteration, strong ecosystem, good AI SDK support | ||
| 31 | |||
| 32 | * **Vercel AI SDK** | ||
| 33 | ** Role: LLM abstraction layer | ||
| 34 | ** Reason: OpenAI-first, Claude-ready, clean provider switching | ||
| 35 | |||
| 36 | ==== AI Providers ==== | ||
| 37 | * **OpenAI (default)** | ||
| 38 | * **Anthropic (optional / later)** | ||
| 39 | ** Selection via environment variables | ||
| 40 | |||
| 41 | ==== Editors ==== | ||
| 42 | * **Visual Studio 2022** — primary for .NET API | ||
| 43 | * **Cursor or VS Code** — primary for Next.js / TypeScript | ||
| 44 | |||
| 45 | ---- | ||
| 46 | |||
| 47 | == Phase 2 — POC → Beta Transition == | ||
| 48 | |||
| 49 | === Changes (No Rewrite) === | ||
| 50 | * SQLite → PostgreSQL (EF Core provider switch) | ||
| 51 | * Local run → hosted environments | ||
| 52 | * Add authentication, quotas, persistence hardening | ||
| 53 | |||
| 54 | === Additional Tools Introduced === | ||
| 55 | * **Docker** (optional, for DB parity) | ||
| 56 | * **Managed Postgres** | ||
| 57 | * **CI (GitHub Actions)** | ||
| 58 | * **Hosting** | ||
| 59 | ** Next.js → Vercel | ||
| 60 | ** .NET API → Azure App Service / Container Apps | ||
| 61 | |||
| 62 | ---- | ||
| 63 | |||
| 64 | == Non-Goals (Explicitly Deferred) == | ||
| 65 | * Kubernetes | ||
| 66 | * Microservices split | ||
| 67 | * Complex queue systems | ||
| 68 | * Multi-region deployment | ||
| 69 | |||
| 70 | These are intentionally deferred to reduce early risk. | ||
| 71 | |||
| 72 | ---- | ||
| 73 | |||
| 74 | == Key Decision Summary == | ||
| 75 | * Architecture is stable from POC1 onward | ||
| 76 | * Infrastructure is phased, not front-loaded | ||
| 77 | * Tooling choices prioritize clarity over novelty |