IS — Information Structure

Describe a table. Get a working web app.

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.

Get it

is.2.5.tgzcurrent release (2026)
is.2.4.tgzprevious
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.

What you write

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.

How to work with it

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
READMEthe full manual
src/the source you build a release from

Why it still matters, now that AI writes code

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.

What it does not do

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.

Source and licence

MIT licensed (LICENSE). Written by Tom Veatch.

Clone it straight from here — no account anywhere needed:

git clone https://tomveatch.com/is/is.git

tomveatch.com / is