Backend Frameworks & Languages¶
This page covers the server-side frameworks, runtimes, and ORMs used across the portfolio. For HTTP-adjacent concerns (queue runtimes, real-time, caches), see Caching-Queues-Realtime.md.
Portfolio map¶
| Language | App count | Typical framework |
|---|---|---|
| TypeScript / Node | ~30 apps | Express, Next.js API, Fastify, NestJS, Hono |
| Python | ~5 apps | FastAPI, Flask |
| PHP | ~5 apps | Laravel, WordPress, custom |
| Rust | ~2 apps | Axum (ChoreAndMoreTracker), Tauri commands |
| Bun | 1 app | OpenSentinel (Hono on Bun runtime) |
Express (Node)¶
What it is. The Sinatra-style minimal Node web framework. Routes, middleware, request/response. No batteries, you assemble the stack (auth, validation, ORM) yourself.
Why we use it. Familiar, low-magic, every dev knows it. Fast enough for ~99% of the portfolio's load profiles.
Used in: Boomer_AI, Recruiting_AI, Sales_AI_App, Tutor_AI, MangyDogCoffee, Salon, SCO, NaggingWifeAI, MyPollingApp, SellMeACar, SellMe_PRT, SellMeAPen_CLCD-1, GoGreenSourcingAI, plus most "Digital Assistant" templates.
Tradeoffs. No structure imposed. Larger Express apps drift into custom DI, custom middlewares, ad-hoc validation — and at that point, NestJS or Fastify would have been cleaner.
Next.js (App Router)¶
What it is. React framework with server components, file-based routing, API routes, edge/serverless deployment, image/font optimization. Versions seen: 14, 15, 16.
Why we use it. Full-stack in one repo. Marketing pages + dashboard + API routes + RSC streaming all unified. Tight integration with Vercel, but every Next.js app in this portfolio is self-hosted on the IONOS VPS instead.
Used in: - App-Router, full-stack: TimeSheetAI (15), GoGreenSourcingAI (15), EverythingBeer (16.1), GoGreen-AI-Concierge frontend (15), FamilyChat web (14). - App-Router, static export only: GoGreenMarketing (16), GoGreenSuites (16).
Tradeoffs. Build-time complexity, the App-Router caching model takes work to get right, and the framework changes shape every major version. Static export avoids most pain when you don't need an API.
Fastify (Node)¶
What it is. Schema-first Node framework. Faster than Express, JSON-Schema-native validation, plugin system. The pragmatic step up from Express when performance matters.
Used in: GoGreen-AI-Concierge (Fastify 5.1), OpenSentinel (Hono is preferred there, but Fastify pieces exist).
Why over Express: type-safe request/response via schemas, built-in logger (Pino), faster JSON parser.
NestJS (Node)¶
What it is. Opinionated, Angular-flavored framework over Express/Fastify. Decorators, modules, DI container, pipes, guards. Good for large apps with multiple teams; heavy for small ones.
Used in: FamilyChat (the only NestJS app in the portfolio).
Why FamilyChat picked it. Multi-feature monolith (chat, video, calendar, payments, SCIM) — DI keeps the moving parts manageable. Built-in WebSocket gateway integrates with Socket.IO for real-time.
Hono (Node / Bun / Deno / Cloudflare Workers)¶
What it is. Modern web framework with a tiny core that runs anywhere — Node, Bun, Deno, Cloudflare Workers, AWS Lambda. Fluent routing API, edge-first.
Used in: OpenSentinel (Hono on Bun runtime).
Why over Express: runs on Bun (no Node), much faster, single binary deployment via Bun's bundler.
FastAPI (Python)¶
What it is. Modern async Python framework — Pydantic for schemas, automatic OpenAPI docs, Starlette-based async I/O.
Used in:
- Automotive-Repair-Diagnosis-AI — asyncpg + SQLAlchemy async + Pydantic.
- GoGreen-DOC-AI — Python backend; document processing + LangChain + Qdrant.
- GoGreen-SmartForms — Flask is also referenced in some places, FastAPI in others.
Why Python here. ML/AI ecosystem (LangChain, Docling, NumPy, scikit-learn, OpenCV, PyMuPDF). When the heavy lifting is image/PDF/ML, Python wins.
Flask (Python)¶
What it is. The minimal Python web framework. Older than FastAPI, sync by default, easy to learn.
Used in: GoGreen-SmartForms (backend/app/services/rag_service.py etc.).
Tradeoffs. Flask is fine for forms-and-dashboards. For modern AI pipelines, FastAPI's async + Pydantic combo is generally preferred.
Laravel (PHP)¶
What it is. Full-stack PHP framework. Eloquent ORM, Artisan CLI, Sanctum (token auth), Spatie/Laravel-Permission (RBAC), Blade templating, queue workers.
Used in: - Maximus — three Laravel apps in one repo (Storefront, Admin, API) sharing a MySQL DB. - PRT — same Maximus pattern. - Voting_NewAndImproved — Laravel + Sanctum + Spatie/Permission + Dompdf + PhpOffice.
Why Laravel for these. Mature e-commerce / voting / CMS-like apps where Eloquent + Blade + Sanctum is a faster path than rolling Express. Strong RBAC ecosystem.
WordPress (PHP)¶
What it is. The CMS itself + a plugin framework. Custom plugins extend it via the REST API (WP_REST_Controller), wp-cron, custom DB tables.
Used in:
- AI-Wordpress_Business-Directory — 41 OOP classes, custom ggd_* tables, 5 AI providers, full RAG.
- VotigoPro_WP_Plugin — polling/voting plugin.
- WP-Plugin — voice-front-end plugin (BM25 RAG, Picovoice, MCP).
Tradeoffs. WordPress core constrains you (MySQL only, particular plugin lifecycle, OOP-but-with-action-hooks). The right choice when the customer is already on WordPress.
Axum (Rust)¶
What it is. Tokio-based async Rust web framework. Type-safe, low overhead, popular in the Rust ecosystem.
Used in: ChoreAndMoreTracker — Tauri 2.0 desktop app with a Rust Axum backend embedded.
Why Rust: the app is a Tauri desktop binary; Axum runs in the same process as the desktop UI. Argon2 for password hashing, sqlx for Postgres.
ORMs¶
| ORM | Language | Apps | Notes |
|---|---|---|---|
| Prisma | TS | 17+ | Default. Schema-first, generated client, built-in migrations. |
| Drizzle | TS | 1 (OpenSentinel), 1 (GoGreen-AI-Concierge), 1 (GoGreen-Workflow-Hub) | Lightweight query builder, more control. |
| SQLAlchemy | Python | Automotive, GoGreen-SmartForms, GoGreen-DOC-AI | Async via asyncpg. |
| Eloquent | PHP | Maximus, PRT, AI-Wordpress | Laravel built-in. |
| sqlx | Rust | ChoreAndMoreTracker | Compile-time-checked SQL. |
| Mongoose / TypeORM / Sequelize | TS | 0 | Not used. |
Prisma vs. Drizzle. Prisma is the friendlier default — generated types, query API, migrations, Studio GUI. Drizzle wins when you need exact SQL, no generated client, or run in environments where Prisma's binary is a problem (Bun, edge).
Migrations. - Prisma Migrate — most TS apps. - Alembic — Python (Automotive, SmartForms). - Laravel Migrations — Maximus, PRT, Voting. - Drizzle Kit — OpenSentinel, GoGreen-AI-Concierge.
Schema / DTO validation¶
| Library | Language | Apps |
|---|---|---|
| Zod | TS | 17+ (paired with Prisma in nearly all) |
| Pydantic | Python | Automotive, SmartForms, DOC-AI |
| Laravel Form Requests | PHP | Maximus, PRT, Voting |
| JSON Schema (Fastify-native) | TS | GoGreen-AI-Concierge, OpenSentinel |
| Joi / Yup / class-validator | TS | Not used |
Zod's role. Runtime validation + TypeScript inference from one source of truth. Validates request bodies, environment variables, LLM tool-call arguments, and DB return shapes.
Common architectural pieces¶
- API documentation. Swagger / OpenAPI in Realestate-all-docker (107 endpoints) and Recruiting_AI. Most other apps don't expose docs — internal use.
- Authorization layer. CASL RBAC in GoGreen-Workflow-Hub. Spatie/Laravel-Permission in Voting_NewAndImproved. Most others are JWT-claim-based or
requireRole(...)middleware. - API style. REST is dominant. tRPC in Ecom-Sales and GogreenSellerAI. No GraphQL apps in the portfolio.
- Streaming. Server-Sent Events for LLM token streaming where the Vercel AI SDK or LangChain isn't already handling it.
Decision guide¶
Need full-stack React with SSR? → Next.js App Router.
Need a small TS API? → Express (familiar) or Hono (modern, fast).
Schema-driven API + speed? → Fastify or Hono.
Big TS monolith with many domains? → NestJS.
Doing ML / heavy PDF / image work? → FastAPI (Python).
Building on top of WordPress? → WordPress plugin.
E-commerce / voting / CMS-like? → Laravel.
Rust desktop with embedded server? → Axum (Tauri sidecar).