Tools Decisions

Version 1.1 by Robert Schaub on 2025/12/25 20:31

Tools Decisions

Purpose

This page documents the deliberate tool choices for FactHarbor POC → Beta.
The goal is low friction now, no rewrites later, and clear upgrade paths.


Phase 1 — POC1 (Local, Low Infrastructure)

Core Principles

  • Minimize setup and cognitive load
  • Avoid infrastructure that is not strictly required
  • Keep architecture identical to Beta where possible

Selected Tools

Backend

  • ASP.NET Core (.NET 8)
    • Role: system of record (jobs, status, results, events)
    • Reason: strong typing, long-term maintainability, C# expertise
  • SQLite (EF Core provider)
    • Role: local persistence
    • Reason: zero setup, file-based, easy Postgres transition

Frontend & Orchestration

  • Next.js (TypeScript)
    • Role: UI + AI orchestration
    • Reason: fast iteration, strong ecosystem, good AI SDK support
  • Vercel AI SDK
    • Role: LLM abstraction layer
    • Reason: OpenAI-first, Claude-ready, clean provider switching

AI Providers

  • OpenAI (default)
  • Anthropic (optional / later)
    • Selection via environment variables

Editors

  • Visual Studio 2022 — primary for .NET API
  • Cursor or VS Code — primary for Next.js / TypeScript

Phase 2 — POC → Beta Transition

Changes (No Rewrite)

  • SQLite → PostgreSQL (EF Core provider switch)
  • Local run → hosted environments
  • Add authentication, quotas, persistence hardening

Additional Tools Introduced

  • Docker (optional, for DB parity)
  • Managed Postgres
  • CI (GitHub Actions)
  • Hosting
    • Next.js → Vercel
    • .NET API → Azure App Service / Container Apps

Non-Goals (Explicitly Deferred)

  • Kubernetes
  • Microservices split
  • Complex queue systems
  • Multi-region deployment

These are intentionally deferred to reduce early risk.


Key Decision Summary

  • Architecture is stable from POC1 onward
  • Infrastructure is phased, not front-loaded
  • Tooling choices prioritize clarity over novelty