Skip to content

Overview

SAF stands for Scott's Application Framework. I've built it to:

  1. Build my own production-ready web apps
  2. Experiment with LLM-assisted development
  3. Share and collaborate on what I learn

Guiding principles:

  • Self-Contained. A new app should run with little setup or dependencies on outside services.
  • Feature Complete. Includes expected modern web app features such as CI/CD, background jobs, and i18n.
  • Batteries Included. Optional but common features and services are included, such as secret and blob storage.
  • Easy to Update. When the framework introduces breaking changes, updates can happen mostly automatically.
  • Built for AI. Technical feature development decisions are always made with AI coding agents in mind.

Usage and Adoption

This framework's quality bar meets and exceeds the needs for production-grade apps generally. That being said, if anyone adopts this they should assess the framework themselves and either fork it and make desired adustments and ideally submit PRs for them.

The framework is also fairly flexible and the concepts portable to your needs and preferences. If out of the box you'd rather use PostgreSQL instead of SQLite, Drizzle supports both and more. If you'd rather use React instead of Vue, the frontend organizational structure can mostly be kept. Also, common services such as for observability accept adapters for whichever in-house or third-party services you prefer.

Documentation

The focus of the docs on this site are what's in saflib, which contains all the shared code across all SAF-based projects. It is a broad collection of packages, spanning common dependencies and reusable features.

These docs are also accessible when coding with SAF by searching for their markdown files. Include them as context in prompts, and update them as part of normal work.