Your own database and back office. €0.99 a month.
A Postgres database, an admin panel your whole team can work in, and an AI assistant that builds it with you. Open source, in our cloud or on your own servers.
€0.99 a month · 1,000 free credits to build your first version
npm create protobaseSelf-host for free. Apache-2.0.
$ npm create protobase my-shop && cd my-shop
$ protobase scaffold postgres://admin@db.example.com:5432/shop
✔ Connected to "shop" (read-only)
✔ Found 14 tables, 9 foreign keys, 3 enums
✔ Wrote config/order/data.ts, config/customer/data.ts and 12 more
$ protobase dev
✔ Admin ready at http://localhost:4321
- EU company
- EU or US hosting
- GDPR data processing agreement
- Apache-2.0
- GitHub ★ count
Map any database
Bring your database, or start with ours
Describe the tables once. The screens follow. Nothing in your database changes.
// config/order/data.ts
export const order = resource('order')
.table('sales.orders')
.fields({
number: f.text().readOnly(),
customer: f.relation('customer'),
total: f.decimal({ precision: 10, scale: 2 }),
status: f.enum(['open', 'paid', 'shipped']),
})
.primaryKey((r) => r.id)
Already have a database? Use it as it is. (Pro and up)
Big tables
Ten million rows, still instant
Filters, facets and a daily chart, all on indexes.
// config/stock-move/ui.ts
export default view<typeof stockMove>('stockMove')
.list((r) => ({
columns: [r.movedAt, r.product, r.quantity, r.warehouse],
sort: [[r.movedAt, 'desc']],
}))
.filters((r, w) => [
w.dateRange(r.movedAt, { presets: ['7d', '30d'] }),
w.facets(r.warehouse),
w.range(r.quantity, { histogram: true }),
])
.chart((r) => ({ field: r.movedAt }))
Record view
Built for the people who do the work
Help text where it is needed, autosave on long fields, avatars for who is editing.
// config/invoice/ui.ts
.layout((r) => [
l.section('Invoice', [r.customer, r.issuedAt, r.lines], {
help: 'Lines are saved together with the invoice.',
}),
l.sidebar([r.status, r.total]),
])
.fields((r) => ({
notes: r.notes.input(richText).autosave({ debounce: '2s' }),
}))
.saveFeedback('button')
Build mode
Change it by asking
Your request becomes a small diff and a preview you click through first.
# "Add a discount to invoices and show it in the list"
// config/invoice/data.ts
.fields({
+ discount: f.decimal().default('0'),
})
// config/invoice/ui.ts
- columns: [r.number, r.customer, r.total],
+ columns: [r.number, r.customer, r.discount, r.total],
When the AI gets it wrong
It checks its own work
Every change is tested before you see it. Retries after a failed check are free.
$ protobase assistant run
✖ typecheck ui.ts:12 Property 'discout' does not exist
↻ retry 1 no credits used
✔ typecheck
✔ tests 48 passed
✔ load guard no table scans
→ preview https://pr-12.my-shop.protobase.app
Permissions
Your rules, enforced everywhere
Written once, checked on every request, including the assistant’s.
// permissions/orders.ts
export const ownOrders = ({ user }) =>
user.roles.includes('admin') || { field: 'owner', op: 'eq', value: user.id }
// config/order/data.ts
.access({ read: ownOrders, update: ownOrders, delete: isAdmin })
// config/employee/data.ts
salary: f.decimal().access({ read: isHr }),
No lock-in
Leave whenever you like
Your repository, your database, the same open-source code on your own servers.
$ git clone git@github.com:you/my-shop.git && cd my-shop
$ protobase export --admin-store ./backup
✔ users, audit log, files and drafts exported
$ docker compose up
✔ Admin running at http://localhost:4321For freelancers and agencies
A back office per client, in minutes
Start from the sample ERP and keep only the modules the client needs.
$ npm create protobase acme-backoffice -- --template erp --modules sales,inventory
✔ sales, inventory, contacts, catalog and core added
$ protobase deploy --region eu --domain admin.acme.com
✔ Live at https://admin.acme.com
One project per client, with its own repository and domain (Pro and up)
For developers
Anything missing, your own team can build
Custom fields, actions and webhooks are plain TypeScript. No waiting on a vendor.
A custom field
phone: r.phone.input(phoneInput)An action
export const publish = action('publish')
.handler(async ({ record, write, ui }) => {
await write.update(record, { status: 'published' })
return ui.toast('Published')
})A webhook
.webhook(env.SHIPPING_URL, { secret: env.SHIPPING_SECRET })For whoever pays the bill
Your whole team, one price
What a team of 30 people with 3 builders pays each month.
| Product | Per month | How |
|---|---|---|
| Protobase Business | €49 | Unlimited users |
| Retool Business | about €516 | 3 builders at €46, 27 users at €14, billed yearly |
| Directus Team | $499 | Billed yearly |
From each vendor’s public pricing page, October 2026.
Pricing
A euro a month to start
Database, hosting, admin panel and AI credits included. Unlimited users and SSO on every plan.
$ protobase deploy --region eu
✔ Postgres database 500 MB, never paused
✔ Admin panel https://my-shop.protobase.app
✔ Credits 1,000 to build your first version
Starter €0.99 a monthOpen source stays free forever.
Questions people ask before they start
What happens when the AI gets stuck?
Every change is checked (types, tests, query plans) before you see it. When a change fails its own checks, the retries cost you no credits, and you can always roll back with one click.
Will my project be paused if I don’t use it?
No. An idle database sleeps and wakes on the first request, so a project you leave alone for months still opens.
Can I get a surprise bill?
Spend caps are on by default, you get an email at 80% of your credits or storage, and the assistant shows an estimate before large tasks. There are no per-project compute fees.
Is what the AI builds secure?
Who can see and change what is enforced by the framework on every request. The assistant configures those rules; it cannot write code that bypasses them.
Am I locked in?
No. It is your code in your own repository, on your own Postgres if you like. Export everything at any time, or run the same open-source code on your own servers.
Can a developer take over later?
Yes. It is plain TypeScript in small files, documented per feature. Any React developer can pick it up.
Where is my data stored?
In the EU or the US, your choice per project. Contracts are always with our EU company, with a GDPR data processing agreement.
Stop running your business from spreadsheets.
Your own database and back office, ready today.
€0.99 a month · 1,000 free credits to build your first version
npm create protobaseSelf-host for free. Apache-2.0.