IS makes a small web app for keeping records. You can add a record,
search, edit and delete. The records sit in your own database on your own host.
You write one short file naming your columns. You run make. The app is there.
| is.2.5.tgz | current release (2026) |
| is.2.4.tgz | previous |
| older releases and where each was built | |
tar xzf is.2.5.tgz cp templates/is.php myapp/MyThing.php # fill in your columns make APP=myapp TABLE=MyThing make APP=myapp TABLE=MyThing scaffold
You need make, PHP, and MySQL or MariaDB. Nothing else — no
package manager, no framework, open source you can read in an afternoon.
One file, and most of it is the column list. Each line is a column: its name, how a person types it in, and what the database should store.
[ 1, "id", "Number", 1, -1, "hidden", "PRIMARY KEY INT NOT NULL AUTO_INCREMENT" ], [ 2, "when", "date", 1, "", "date", "DATE" ], [ 3, "what", "String", 30,"", "TEXT", "VARCHAR(120) CHARACTER SET utf8mb4" ]
From that, IS writes the database commands, the server code, the browser code and the page. You do not edit any of those. When something is wrong you fix the one file it came from and build again, and every app you have built gets the fix.
| DISCIPLINE.md | the five rules that keep a generated app correct while people keep changing it |
| HOWTO-AI.md | for an AI building one of these: what to do, in order, and the mistakes to expect |
| README | the full manual |
| src/ | the source you build a release from |
As a way to save typing, IS is finished. You can ask an AI for a records app and get one. But an AI does not give you the part that keeps the app right six months later. That part is three habits: write the structure down in one place; build everything else from it and never edit what was built; and keep a check that refuses to release a broken build.
That is the real offer here. IS is small enough to read, so you can trust it; and strict enough that an AI can drive it and you still get the same correct app every time. Point an AI at HOWTO-AI.md and let it write the column list.
IS' one table per file approach is good for keeping a list of things you can search and edit — observations, transactions, words, records. If you need joins across many tables, reports, or a query planner, use a more general-purpose framework.
MIT licensed (LICENSE). Written by Tom Veatch.
Clone it straight from here — no account anywhere needed:
git clone https://tomveatch.com/is/is.git