AI builds the whole app
Describe an app and get its tables, rows, dashboards and multi-table workflows in one generation. A rule can read the record that fired it and write to the other tables — and when generation cannot, it tells you why.
7 formula dialects transpiled · 36 locales · self-hostable
Boards, timelines and dashboards over Postgres you can run on your own hardware: 48 page elements, 25 chart types and 24 dashboard widgets, every one of them free on every plan.
shift-log One table, twelve ways
Every one of these reads the same records. Gantt and timeline sit behind a paid tier elsewhere; here the same twelve are on Free and on Enterprise.
Grid
List
Gallery
Kanban
Calendar
Timeline
Workload
Tree
Graph
Map
Chart
Pivot
Not screenshots — each one is the drawing the product itself shows when you pick that view, and Chart is drawn here by the chart renderer Appdor ships.
Nothing is behind a plan
Counted, not estimated. Every number below is checked against the code on each build.
Self-hosting
The full Supabase stack, RLS-enforced, EU-friendly, no phone-home.
# Every secret below is EMPTY on purpose. # node scripts/generate-keys.mjs POSTGRES_PASSWORD= POSTGRES_DB=postgres JWT_SECRET= ANON_KEY= SERVICE_ROLE_KEY= # Leave blank to disable AI icon suggestions gracefully. GEMINI_API_KEY=▍
services: appdor: image: appdor ports: - "${WEB_PORT:-8080}:80" environment: POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} JWT_SECRET: ${JWT_SECRET} ANON_KEY: ${ANON_KEY} SERVICE_ROLE_KEY: ${SERVICE_ROLE_KEY} POSTGRES_DB: ${POSTGRES_DB:-postgres} volumes: - appdor-data:/data▍
$ cp .env.example .env $ node scripts/generate-keys.mjs .env written with freshly generated keys. $ docker compose up -d --build http://localhost:8080▍
One container, one port, one volume — Postgres, auth, storage and the app together. It runs the free plan out of the box and keeps running it for as long as you like. Pro, Business and Enterprise features unlock with a licence you paste into the plan screen — checked against a key the image already carries, so there is still no licence server to call and no telemetry key to unset.
Formula translation
Appdor reads 7 competitor dialects and rewrites them into one canonical formula — field references, function names and argument order. Every pair below is real output from the transpiler that ships.
DATETIME_DIFF({End},{Start},'days')Appdor (translated)DATETIME_DIFF({End}, {Start}, "days")WORKDAYS({End},{Start})Appdor (translated)NETWORKDAYS({Start}, {End})WEEKNUMBER([Due Date])Appdor (translated)WEEKNUM({Due Date})var text Code = Left([SKU], 3); CodeAppdor (translated)LETS(Code, LEFT({SKU}, 3), Code)formatDate(prop("Due"), "YYYY-MM-DD")Appdor (translated)DATETIME_FORMAT({Due}, "YYYY-MM-DD")Not everything maps cleanly, and that is reported rather than hidden: monday.com's WORKDAYS takes its two dates in the opposite order, and Smartsheet's weeks start on Monday. Appdor converts both and tells you what changed, instead of quietly returning a different number.
What's new
The product ships on its own cadence. These three landed on 2026-08-24, and the newest is the biggest — AI now generates the whole app.
Describe an app and get its tables, rows, dashboards and multi-table workflows in one generation. A rule can read the record that fired it and write to the other tables — and when generation cannot, it tells you why.
User Voice is where a bug, a request or a question goes straight to the people who build Appdor, and every item carries a status you can follow — submitted, under review, on the roadmap, done. Votes now come out of a budget each person gets, so what rises is what most people want rather than whoever clicked the most times.
Feedback has an owner now, who replies officially and moves an item's status, so a report is answered rather than filed. Google Analytics loads only if you set a measurement id — a default deployment sends nothing to Google at all — and the search API stopped answering anyone without a credential.
How it behaves
Every panel below runs on the rules the product runs on — the same statuses, the same transpiler, the same workflow. Nothing here is a recording, and nothing here is waiting for you to press play.
One row, three lanes. The card is wherever its status puts it, because a board is a way of looking at the table rather than a second copy of it — change the cell and the board has already moved.
monday.com
WORKDAYS({End},{Start}) Appdor (translated)NETWORKDAYS({Start}, {End}) Flagged on import: monday.com takes those two dates in the opposite order.
Smartsheet
NETWORKDAYS([Start],[End]) Appdor (translated)NETWORKDAYS({Start}, {End}) Converted with nothing to report.
Airtable
WORKDAY_DIFF({Start},{End}) Appdor (translated)NETWORKDAYS({Start}, {End}) Flagged on import: check how your own holidays should be handled.
Three source dialects, one output. The line on top keeps changing and the line under it never does — and where a dialect means something slightly different, that is written down instead of quietly returning a different number.
This is the workflow the manufacturing template installs, not an illustration of one. Three sentences, no scripting, and it runs on the row you just watched change lanes.
The shipped catalogue
Every element, chart and widget below is on the free plan and on the self-hosted build. The numbers on the tabs are counted from the code on each build, not typed in — and the twelve view types are in the band below.
Pick anything above and it will explain itself here.
Twenty-two of them, and “which industry” is a published standard here rather than a list somebody wrote: the axis is NACE Rev. 2.1, the EU's classification of economic activities. Every section of it has a template that installs, and a field typed as an activity code is checked against the real code space — the gaps in it are the point.
The same axis filters the template gallery, so picking your section is how you find the system already built for it.
And the fields underneath them check the identifier as you type — the checksum, not just the shape.
AI here is a billing arrangement, not a plan tier. You connect your own provider account and pay that provider directly at their list price. Appdor never sits between you and the meter.
OpenAI, Anthropic, Google Gemini, Mistral, DeepSeek, Groq, xAI, OpenRouter, Together AI or Azure OpenAI — or Ollama, LM Studio and any OpenAI-compatible endpoint on hardware you own. Revoke the key and every AI feature stops.
Appdor does not buy tokens and sell them back to you. There is no margin on a model call, and no allowance folded into your seat price that you pay for whether you use it or not.
Nothing to top up mid-quarter, and no per-seat AI charge for people who never open the assistant. Cap your own spend, change provider, or switch AI off entirely — nothing else in Appdor changes.
Thirteen providers today, read from the same registry the settings screen reads. Two of them run on hardware you own and cost nothing per call.
Model names change every few months. Whose account is billed, and where the data goes, does not.
| Appdor | Airtable | monday | |
|---|---|---|---|
| All views free | Yes | Gantt paid | Metered |
| Formula translation | 7 dialects | No | No |
| Self-host | Yes | No | No |
| Seat minimums | None | — | 3-in-blocks |
| AI pricing | Your own key | Credits | Per-seat |
25 templates install real tables, fields, formulas and sample rows — from a three-table project tracker to a 22-table manufacturing ERP. One click, and everything in them is yours to change.
No seat minimums. The same plans apply whether we host it or you do.
| Your monthly total | Editors | Viewers | Records | Automations | Files | Adds | |
|---|---|---|---|---|---|---|---|
| Free€0 | — | 5 included | Unlimited, free | 2,500 per base | 250 / month | 1 GiB per base |
|
| ProMost popular€12/editor/mo€10/editor/mo billed annually | — | Billed per editor | Unlimited, free | 50,000 per base | 25,000 / month | 20 GiB per base |
|
| Business€28/editor/mo€22/editor/mo billed annually | — | Billed per editor | Unlimited, free | 150,000 per base | 100,000 / month | 100 GiB per base |
|
| EnterpriseCustomfrom €40/editor/mo | — | Billed per editor | Unlimited, free | 500,000 per base | 500,000 / month | 1 TiB per base |
|
Only live runs count. A dry run previews a workflow in your browser and writes nothing, so testing an automation never spends the monthly allowance.
Read-only people are free on every plan, at any number. No seat minimums and no buckets — seven seats cost seven times one.
Estimates exclude any applicable tax (VAT or sales tax), which is added at checkout.
Pick the plan you pay for today and the number of people who create or edit. The same team on Appdor, and what that saves in a year.
Today
—
On Appdor
—
—
—
Start free in the cloud, or pull the image and run it yourself. Same build either way.
Delete this application? Its tables and records go with it, and any public share or form links stop working immediately. You can restore it from Trash in Administration.
Select an element to add to your page. Elements are building blocks for your interface.