back to blog
/ essay

Only You Own Your Data: How dForge Avoids Low-Code Vendor Lock-In

Most low-code platforms own your data as much as you do. dForge doesn't. Your data and files live in a standard PostgreSQL database and a plain file store you can back up, move, and hand to your own developers — here's exactly where that line sits, and where it doesn't.

Only You Own Your Data: How dForge Avoids Low-Code Vendor Lock-In

Every low-code pitch sounds the same until you try to leave.

The demo is fast. The first app ships in an afternoon. Then a year passes, the tool no longer fits, and you go looking for the exit — only to discover there isn’t one. Your data lives inside the vendor’s runtime. You can see your records through their screens, maybe export a CSV or two, but the structure — the relationships, the types, the logic that makes the data mean something — stays behind. You own the rows. You don’t own the database.

That gap is what vendor lock-in actually is. Not a contract clause. A technical fact about where your data lives and what you can do with it without the vendor’s permission.

dForge is built on the opposite assumption: you should be able to walk away with everything that matters, at any time, without asking.

What real lock-in looks like

It helps to be precise, because “no lock-in” gets claimed by everyone and means almost nothing.

You’re locked in when:

  • Your data only exists inside the platform’s proprietary store, and the only way out is a lossy export — flat CSVs that drop the relationships, the field types, the constraints.
  • You own the records but not the schema, so even with a dump in hand, nothing you have can run against it without the vendor’s engine.
  • Self-hosting is unavailable, or available only on the plan above yours, so your business-critical data sits on infrastructure you don’t control.

In every one of those cases the cost of leaving isn’t a fee. It’s a rebuild. And a rebuild you can’t afford is a cage, however nice the bars.

With dForge, your data is yours — database and files

Here is the whole difference in one sentence: in dForge, the things your business runs on — its data and its files — live in standard, open places that belong to you, not inside a vendor’s black box.

One tenant holds two stores you own — a PostgreSQL database and a file store — and both can be taken to your own infrastructure with a pg_dump and a file copy.

Not a metaphor. Your business data lives in ordinary PostgreSQL tables, in real schemas (crm, hr, fin, and so on), with real columns, real foreign keys, and real constraints — one database per tenant, completely isolated, no schema shared with anyone else. Your uploaded files — receipts, contracts, attachments — sit alongside it in a plain per-tenant directory (or your own S3 bucket), referenced from the database by simple relative paths. Two standard stores, both yours. That’s what makes ownership concrete rather than rhetorical:

  • Clean backup and restore. A tenant is one database plus one file directory. A pg_dump and a copy of the folder give you a complete, faithful copy — structure, data, and documents, not a flattened extract.
  • Move it anywhere. Migrating to another server means moving one database and one directory (or pointing at the S3 bucket you already control). No proprietary bundle to unpack, no re-import ritual.
  • Inspect it directly. Your developers can connect with any Postgres client and read the data as it actually is; open the file directory and there are your real documents. No opaque app format stands between you and your own information.

This isn’t a feature we bolted on for a pricing tier. It falls out of how the platform is built, and it applies on every plan, including self-hosted.

Two ways out — and you can take either

Because the data is a normal database, leaving isn’t a single dramatic event. You have options, and they’re both real.

1. Keep the data, leave the runtime. Maybe dForge got you from spreadsheets to a working operational system in weeks, and now you’ve grown to the point where you want a bespoke application your own engineers maintain. Fine. Point them at the same PostgreSQL database. What they inherit is a clean, typed, relational model — not something reverse-engineered out of a black box. They build on top of it in plain SQL, or any framework they like, on their own schedule.

2. Migrate off entirely. If you’re moving to a different system altogether, there’s nothing to “export,” because it was never trapped. It’s already a database and a directory of files. Back them up, move them, and go.

Either way, the leverage stays with you. That changes the relationship — including, frankly, every renewal conversation.

Where the line actually is

Now the honest part, because a claim like this is only worth anything if we draw the boundary clearly.

What's yours to take — data, schema, and files — versus what stays with dForge: the metadata-driven runtime of screens, security, and actions.

What’s yours to take: the data, the schema, and the files. Tables, columns, relationships, every record — plus the documents your team uploaded. All portable, standard, complete.

What isn’t portable: the dForge runtime. dForge is metadata-driven. The screens, the row- and column-level security, the actions and formulas — those are interpreted at runtime by the dForge engine from metadata. If you leave, you leave that behind. You don’t get the running application as a thing you can host elsewhere and keep editing; you get the data it was running on.

We’d rather say that plainly than let you find out later. The promise isn’t “dForge has no lock-in of any kind” — that would be a lie, and you’d catch it. The promise is narrower and true: your data and its structure are never held hostage. The thing most platforms quietly keep from you is the exact thing dForge hands back.

Why this matters even if you never leave

Most teams who own their data never exercise the exit. The value isn’t in leaving. It’s in everything that ownership makes possible while you stay:

  • Your developers can work directly against the database — reporting, integrations, one-off analysis — without waiting on an API to expose what they need.
  • Compliance and audit get simpler when the data is in a standard database you can isolate geographically and back up on your own terms.
  • Platform risk drops to near zero. If priorities shift or a vendor changes course, your operation doesn’t depend on their runtime staying exactly as it is forever. The data underneath is yours regardless.

Owning your data isn’t an escape hatch you hope never to use. It’s the thing that lets you commit to a platform without betting the business on it.

If that’s the trade you want — move fast now, keep your options open forever — that’s the whole idea behind dForge. It’s closely related to a distinction we’ve written about before, configuring a system versus owning your model, and it runs through how the whole platform is built.


Frequently asked questions

Can I export my data from dForge? Yes — completely. Your business data lives in a standard PostgreSQL database (one per tenant), and your uploaded files live in a plain per-tenant directory or your own S3 bucket. A pg_dump plus a copy of that directory is a full, faithful export — schema, relationships, types, and documents. It isn’t a flattened CSV; it’s the real database and the real files.

What happens to my app if I stop using dForge? You keep the data and its full structure. The dForge runtime — the generated screens, security, and logic — is interpreted from metadata and doesn’t come with you, but the PostgreSQL database does. Your developers can build a new application on top of the same data, or you can migrate it elsewhere.

Is my dForge data stored in a proprietary format? No. It’s ordinary PostgreSQL tables with real columns and foreign keys. Any Postgres client can read it directly.

Can my own developers work with the database? Yes. Because it’s a standard PostgreSQL database, your team can connect with any Postgres tooling to run reports, build integrations, or extend the data model — without going through the platform.

Can I self-host dForge? Yes. Each tenant is an isolated database, which makes self-hosting and clean per-client backup and restore straightforward. Your business-critical data can sit on infrastructure you control.

Is the running application portable too, not just the data? No — and we’d rather be upfront about it. dForge is metadata-driven, so the live application behaviour is produced by the dForge engine at runtime and isn’t something you can host independently. What’s portable is the data and its schema, which is the part most platforms keep from you.

/ keep reading

More from the forge

Supabase Builds Your Backend — Not Your Back Office
[essay]

Supabase Builds Your Backend — Not Your Back Office

Supabase gives you a backend: Postgres, auth, APIs, storage, realtime. What it deliberately doesn't give you is the internal operational app your team runs the business on. Here's the gap, and the cleanest ways to fill it.

Igor Shtanko · 4 min
Audit Trail and Row-Level Security, Built In — Not a Premium Tier
[essay]

Audit Trail and Row-Level Security, Built In — Not a Premium Tier

On most platforms, a full audit log and granular access control are the expensive add-on. In dForge they're the floor: every change captured with before/after values, and row-, column-, and operation-level security applied on every request.

Igor Shtanko · 6 min
Can I Build Billing Software That Fits How My Business Actually Invoices?
[essay]

Can I Build Billing Software That Fits How My Business Actually Invoices?

Spreadsheets lose track of what's paid, and packaged billing tools assume an invoice shape and a workflow that aren't yours. The third path: start from a real invoicing and AR/AP foundation, shape it to how you bill, and own the database underneath.

Igor Shtanko · 5 min
/ try the platform

Stop reading.
Start building.

Open a free workspace on dforge.app — see the platform behind the essays.