Wiki source code of Tools Decisions
Last modified by Robert Schaub on 2026/02/08 08:30
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
| |
1.1 | 1 | = Tools Decisions = |
| 2 | |||
| 3 | == Purpose == | ||
| 4 | |||
| 5 | This page documents the deliberate tool choices for FactHarbor from **POC1 to Beta**. The guiding principles are: | ||
| 6 | |||
| 7 | * minimal setup and cognitive load for POC1 | ||
| 8 | * no rewrites when moving to Beta | ||
| 9 | * clear, incremental upgrade paths | ||
| 10 | |||
| 11 | ---- | ||
| 12 | |||
| 13 | == Phase 1 — POC1 (Local, Low Infrastructure) == | ||
| 14 | |||
| 15 | === Principles === | ||
| 16 | |||
| 17 | * Local-first development | ||
| 18 | * No mandatory container or cloud infrastructure | ||
| 19 | * Same architectural shape as later phases | ||
| 20 | |||
| 21 | === Backend === | ||
| 22 | |||
| 23 | * ((( | ||
| 24 | **ASP.NET Core (.NET 8)** | ||
| 25 | |||
| 26 | * Role: system of record (jobs, status, results, events) | ||
| 27 | * Reason: strong typing, long-term stability, C# expertise | ||
| 28 | ))) | ||
| 29 | * ((( | ||
| 30 | **SQLite (EF Core provider)** | ||
| 31 | |||
| 32 | * Role: local persistence | ||
| 33 | * Reason: zero setup, file-based, smooth transition to PostgreSQL | ||
| 34 | ))) | ||
| 35 | |||
| 36 | === Frontend & Orchestration === | ||
| 37 | |||
| 38 | * ((( | ||
| 39 | **Next.js (TypeScript)** | ||
| 40 | |||
| 41 | * Role: UI and AI orchestration | ||
| 42 | * Reason: fast iteration, strong ecosystem, good AI tooling | ||
| 43 | ))) | ||
| 44 | * ((( | ||
| 45 | **Vercel AI SDK** | ||
| 46 | |||
| 47 | * Role: LLM abstraction | ||
| 48 | * Reason: OpenAI-first, Claude-ready, provider switching without rewrites | ||
| 49 | ))) | ||
| 50 | |||
| 51 | === AI Providers === | ||
| 52 | |||
| 53 | * OpenAI (default) | ||
| 54 | * Anthropic (optional, later) | ||
| 55 | |||
| 56 | === Editors === | ||
| 57 | |||
| 58 | * Visual Studio 2022 — primary for .NET API | ||
| 59 | * Cursor or VS Code — primary for Next.js / TypeScript | ||
| 60 | |||
| 61 | ---- | ||
| 62 | |||
| 63 | == Phase 2 — Transition to Beta == | ||
| 64 | |||
| 65 | === Changes (No Rewrite) === | ||
| 66 | |||
| 67 | * SQLite → PostgreSQL | ||
| 68 | * Local execution → hosted environments | ||
| 69 | * Add authentication, quotas, persistence hardening | ||
| 70 | |||
| 71 | === Additional Tools Introduced === | ||
| 72 | |||
| 73 | * Docker (optional, mainly for DB parity) | ||
| 74 | * Managed PostgreSQL | ||
| 75 | * GitHub Actions (CI) | ||
| 76 | * Hosting: | ||
| 77 | ** Next.js → Vercel | ||
| 78 | ** .NET API → Azure App Service or Container Apps | ||
| 79 | |||
| 80 | ---- | ||
| 81 | |||
| 82 | == Explicitly Deferred == | ||
| 83 | |||
| 84 | * Kubernetes | ||
| 85 | * Microservice decomposition | ||
| 86 | * Complex distributed queues | ||
| 87 | * Multi-region deployment | ||
| 88 | |||
| 89 | These are intentionally deferred to reduce early risk. | ||
| 90 | |||
| 91 | ---- | ||
| 92 | |||
| 93 | == Summary == | ||
| 94 | |||
| 95 | * Architecture is stable from POC1 onward | ||
| 96 | * Infrastructure is phased, not front-loaded | ||
| 97 | * Tool choices prioritize clarity and durability over novelty |