# Store a customer-facing app’s data

Your app’s data, with each client limited to the entries where Client is their name. PostgreSQL enforces that limit on every request.

## An example

**You:** Set up storage for our client portal: Clients, Projects and Messages. Each client should only ever see their own projects and messages.

**ADoor:** Started Clients, Projects and Messages. Each client’s access can be limited to the entries where Client is their name, one grant per client

**Projects**

| Client | Project | Status | Updated |
| --- | --- | --- | --- |
| Calder | Website redesign | In review | Oct 20 |
| Ridgeway | Brand guide | In progress | Oct 18 |

## What you can ask later

- “Which projects haven’t been updated in two weeks?”
- “Show project status counts per client.”
- “Who changed the Calder project status, and when?”
- “Add a Due date field to Projects.”

## Who can see what

- **Each client** reads and writes only the entries where Client is their name, set once per client and enforced by PostgreSQL on every request.
- **Your team** sees every client.
- **Your app’s server** uses an API key limited to the lists it needs.
- **An agent** that answers client questions can be limited to the one client it’s helping.

## How it compares with Supabase or Firebase

Supabase and Firebase are better for apps at scale: SDKs for every platform, auth for your end users, file storage, realtime and years of production use. ADoor doesn’t publish latency figures, and [Login with ADoor](/docs/guides/login-with-adoor/) and its SDKs are coming soon.

Pick ADoor when access is the hard part. Every person, app and agent gets its own access down to specific fields, or just the entries that match a value you choose, an agent never exceeds the person who connected it, and the history shows every change.

## How to start

1. Open an assistant like ChatGPT, Claude, Grok or Cursor and connect ADoor through MCP.
2. Tell it: “Set up the data for our client portal: describe each list and who should see what, then create an API key for the app.”
3. Create an API key for your app’s server, limited to the lists it uses.

[Get your account](https://app.adoor.halmoslabs.com/signup)

## Questions people ask

### Does ADoor handle my end users’ sign-in?

Each client signs in to ADoor itself, with access limited to the entries where Client is their name. You give each client that limit when you invite them. Your app’s server talks to ADoor with its own key, limited to what it needs.

### Can I use plain SQL?

Yes. Standard Postgres SQL, within each caller’s access.

### How much does ADoor cost?

The free plan holds 3 tables and 100 rows, enough to start a list like this. Pro is $10 a month per workspace, with 1 GB of storage and no per-GB charges.

### Can I export everything?

Yes, as CSV or JSON, whenever you want. Ask your assistant for the export or download it yourself.

## Related

- [Back an internal tool](/use/internal-tool-backend/)
- [Let agents build on each other’s findings](/use/shared-agent-notes/)
- [Report from many sources](/use/reporting-hub/)
- [ADoor vs Supabase](/compare/adoor-vs-supabase/)
- [ADoor vs Firebase](/compare/adoor-vs-firebase/)
- [ADoor vs Hasura DDN](/compare/adoor-vs-hasura/)
- [All use cases](/use/)

Updated October 20, 2026.
