10× fewer lines
Forms, tables and charts are components you call, not code you write and keep alive.
DROP the busywork;-- real SQLPage components, a few lines each
-- pick a component
Actually rendered by
SQLPage, live
select 'text' as component, 'Customers' as title;
select 'table' as component, 'landing-customers' as id,
true as sort, true as search, 'status' as markdown;
select name, plan, status, seats, lower(status) as _sqlpage_css_class
from customers
order by id;
-- Suspiciously few files.
Yes, that's the app.
-- Low maintenance, on purpose.
You need a webapp,
but you don't want to maintain a webapp. Build it, or let your coding agent do it. Don't maintain 1000 lines of code.
-- The yak stays unshaved.
-- App maintenance is not a hobby.
-- What do you have to maintain?
-- 5 layers, all yours.
Forms, tables and charts are components you call, not code you write and keep alive.
DROP the busywork;All state lives in the database. Scale by adding servers, deploy by copying files, restart whenever you like.
Small, declarative SQL files are easy for a coding agent to write and easy for you to review. Robots welcome. Humans too.
Bring your own robot.Agent not included.You're still the boss.You already back it up, secure it and keep it healthy. That is the maintenance. The app just reads and writes.
-- Your files. Your deployment.
-- read, edit, and act.
-- forms, tables, charts, and navigation.
-- Tables with manners. CRUD, but polite.
The good old way works. So does a very lightweight Docker image.
Forks encouraged. · Batteries included. Strings unattached.
HTML streams to the browser while the database is still working.
sql-page.com/performancetypical app (illustrative)
SQLPage
The common attacks are handled for you.
sql-page.com/safety-- "1; DROP TABLE users;" is just a string here
-- one refunds tool, six ways to build it, on day 100
Building got cheap.
Owning what got built is still expensive.
SQL files + your database
3 files changed +26 −2
git push → live
SQL files in git. One stateless binary. The common attacks handled by default.
-- boring on purpose.
Scroll horizontally to explore five illustrative alternatives. Use the left and right arrow keys when this region is focused.
An AI agent writes the full stack
214 files +8,402 −1,317
… and 209 more files
2 dependency alerts
1 approval: LGTM
-- LGTM (nobody read it)
Excel, Google Sheets
Locked for editing by dave
-- which one is real?
Python, shell, cron
$ crontab -l
0 6 * * * python3 ~/dave/refunds.py
$ tail -n3 refunds.log
05-14 06:00 ok
05-15 06:00 ok
05-16 06:00 ConnectionError
$ git log -1 --format=%an
dave (left in March)
$
-- cron says it ran
Charts on top of your data
SCan we add a button?Not in this tool.
-- look, but don't touch
Drag-and-drop app builders
| Order | Customer | Amount |
|---|---|---|
| #1042 | Ada L. | €48.00 |
| #1043 | Grace H. | €12.50 |
| #1044 | Linus T. | €76.00 |
| #1045 | Margaret H. | €24.00 |
Upgrade to export refunds as CSV.
-- 14 seats, billed monthly
SELECT * FROM your_database;
We're seeing other databases. A healthy relationship model.
-- A tool for them. Not a second job for you.
DELETE busy;
-- NULL drama.