Poor Man's Back End-as-a-Service (BaaS), Similar to Firebase/Supabase/Pocketbase
Project goals and positioning
- Seen as an extremely minimal backend in the Firebase/Supabase/Pocketbase space, with ~700–1,000 LOC and human-editable data.
- Author clarifies it’s a personal/educational experiment, inspired by Kubernetes-style APIs (dynamic schemas, uniform REST, RBAC, watches, admission hooks), not a competitor to Pocketbase.
- Emphasis on “stdlib only”: no external dependencies, everything manageable with a text editor and standard CLI tools.
Minimalism and storage choices (CSV vs databases)
- Main differentiator: data in CSV files rather than SQLite or Postgres; users and roles are also stored in
_users.csv. - Supporters like the debuggability, diffability, ease of backup, and fit with git and spreadsheets; fine for tiny, household-scale apps or static-site build inputs.
- Critics find CSV fragile and ambiguous, especially compared to JSONL, SQLite, or DuckDB; concerns about corruption and lack of querying/indexing.
- Some argue CSV is essentially “SQLite with fewer features”; others counter that for very small CRUD apps CSV is perfectly adequate.
- Even the author notes JSONL might have been easier, but CSV made conversion/validation more explicit and is swappable via a DB interface.
Comparison with existing BaaS / frameworks
- Many ask why not contribute to Pocketbase, which is already seen as a “poor man’s BaaS” and aggressively minimal.
- Others suggest just using mature frameworks (Rails, Django, Laravel, Spring) or self-hosted tools like Convex.
- Some confusion and light pushback around the “BaaS” acronym and title.
Security and password handling
- Example uses SHA‑256 + salt for passwords, raising concerns since fast hashes are weak under offline compromise; bcrypt or PBKDF2 are recommended.
- Author reiterates this is a localhost toy; security and database choice were not priorities, but both hash function and DB are pluggable.
- Brief side debate on whether slow password hashing is worth its cost and carbon footprint, versus enforcing strong random API keys.
Local-first / no-backend alternatives
- Parallel thread asks whether we need backends at all given Chrome’s File System Access API and browser storage (IndexedDB, localStorage).
- People discuss fully local apps, syncing via cloud drives or Syncthing, and browser extension storage (
chrome.storage.sync) with its limits. - General theme: for very small apps, both pennybase-style micro backends and pure local-first approaches are appealing.