Your mobile app. An entire backend. Designed to come connected.
For developers building mobile apps with AI coding agents. In the planned design, your agent edits one file, edict.yaml, and sign-in, subscriptions, reminders, files, credits, and rules come out connected.
Paywall
- You
Add premium AI coaching. 200 messages per billing period.
Example app screen on the planned backendYour app before the changeFree user, after the changePremium user, after one coach exchangePremium user, after all 200 messagesYour app code builds screens. edict.yaml does not generate them. - Agent
Read edict.yaml
Your config has free only. I'll add a premium plan and an
ai_coachmodule gated on it.Edit edict.yaml
Changes to edict.yaml. Old line number, new line number, change, code. 1 1 modules:2 2 identity:3 3 providers: [apple, google]4 4 subscriptions:5 -removed plans: [free]5 +added plans: [free, premium]6 +added ai_coach:7 +added requires_plan: premium8 +added quota:9 +added per: billing_period10 +added limit: 200 - Agent
edict dev
Postgres ready on localhost:5432
Backend ready on http://localhost:8787
Modules: Authentication, Subscriptions, AI gateway
edict test ai_coach
- free user:402 upgrade requiredpass
- premium, 1st message:answered, 199 remainingpass
- premium, 201st message:429 limit reached, 0 remainingpass
- AI call failed:allowance released, 200 remainingpass
4 passed, 0 failed
- Agent
Done. Free users get the upgrade screen. Premium users get 200 coach messages each billing period, a failed AI call gives its message back, and message 201 is refused until the next period.
Reminders
- You
Remind people at 8 PM if they have not logged a workout, so they keep their streak.
Example app screen on the planned backendYour app before the changeUser with no workout, at 8:00 PMAfter the user logs a workoutYour app code builds screens. edict.yaml does not generate them. - Agent
Read edict.yaml
You store workouts per user but send nothing. I'll add a reminder template and a daily job that sends it to anyone who has not logged.
Edit edict.yaml
Changes to edict.yaml. Old line number, new line number, change, code. 1 1 modules:2 2 data:3 3 workouts:4 4 owner: user5 +added notifications:6 +added templates:7 +added streak_at_risk:8 +added title: "Keep your streak going"9 +added body: "You have not logged today."10 +added jobs:11 +added streak_check:12 +added schedule: "0 20 * * *"13 +added timezone: user14 +added when: workouts.today == 015 +added send: streak_at_risk - Agent
edict dev
Postgres ready on localhost:5432
Backend ready on http://localhost:8787
Modules: Database, Background jobs, Push
edict test streak_check
- no workout today:one push at 8:00 PM localpass
- workout logged:no push sentpass
- user in another zone:push at 8:00 PM their timepass
3 passed, 0 failed
- Agent
Done. streak_check is set to run at 8 PM in each user's time zone and send the reminder only to people with no workout that day.
Profile photos
- You
Let people add a profile photo. JPEG or PNG, 5 MB max, and only they can change it.
Example app screen on the planned backendYour app before the changePhoto over the 5 MB limitOwner, after a valid uploadYour app code builds screens. edict.yaml does not generate them. - Agent
Read edict.yaml
You have sign-in only. I'll add an
avatarsfile collection owned by the user and aprofilesrecord that points to it.Edit edict.yaml
Changes to edict.yaml. Old line number, new line number, change, code. 1 1 modules:2 2 identity:3 3 providers: [apple, google]4 +added files:5 +added avatars:6 +added owner: user7 +added max_size_mb: 58 +added types: [image/jpeg, image/png]9 +added data:10 +added profiles:11 +added owner: user12 +added fields:13 +added display_name: text14 +added avatar: avatars - Agent
edict dev
Postgres ready on localhost:5432
Backend ready on http://localhost:8787
Modules: Authentication, Files, Database
edict test avatars
- owner uploads a PNG:saved, 200pass
- someone else replaces it:403 forbiddenpass
- 12 MB file:413 too largepass
3 passed, 0 failed
- Agent
Done. Each profile points to one avatar file. Only its owner can upload or replace it, and files over 5 MB or of other types are refused.
Credit packs
- You
Sell a pack of 20 image credits as an in-app purchase. One credit per image, and a failed render gives it back.
Example app screen on the planned backendYour app before the changeAfter the store purchase, balance topped upAfter one render and one failed renderYour app code builds screens. edict.yaml does not generate them. - Agent
Read edict.yaml
You have sign-in only. I'll add a store consumable that grants 20 credits, an
image_creditsbalance it tops up, and anai_imagefeature that spends it.Edit edict.yaml
Changes to edict.yaml. Old line number, new line number, change, code. 1 1 modules:2 2 identity:3 3 providers: [apple, google]4 +added payments:5 +added consumables:6 +added small_pack:7 +added stores: [app_store, google_play]8 +added credits: 209 +added credits:10 +added balance: image_credits11 +added grant:12 +added on: purchase13 +added product: small_pack14 +added reserve:15 +added per_request: 116 +added release_on: failure17 +added ai_image:18 +added spends: image_credits - Agent
edict dev
Postgres ready on localhost:5432
Backend ready on http://localhost:8787
Modules: Authentication, Payments, AI gateway
edict test image_credits
- pack bought in store:20 credits grantedpass
- image rendered:1 credit spent, 19 leftpass
- render failed:credit released, 19 leftpass
3 passed, 0 failed
- Agent
Done. A verified App Store or Google Play purchase adds 20 credits. Each image holds one credit while it renders, spends it on success, and releases it on failure.
Plan limits
- You
Free users can share a routine with 2 friends. Premium users can share with 10.
Example app screen on the planned backendYour app before the change, with no sharing yetFree user adds a third friendPremium user adds a third friendYour app code builds screens. edict.yaml does not generate them. - Agent
Read edict.yaml
Routines belong to a user and the plans exist. I'll track who each routine is shared with and add a
share_limitrule that reads its limit from the plan.Edit edict.yaml
Changes to edict.yaml. Old line number, new line number, change, code. 1 1 modules:2 2 subscriptions:3 3 plans: [free, premium]4 4 data:5 5 routines:6 6 owner: user7 +added shared_with: users8 +added rules:9 +added share_limit:10 +added counts: routines.shared_with11 +added limit:12 +added free: 213 +added premium: 10 - Agent
edict dev
Postgres ready on localhost:5432
Backend ready on http://localhost:8787
Modules: Subscriptions, Database, Business logic
edict test share_limit
- free user, 2nd share:allowedpass
- free user, 3rd share:rejected, limit is 2pass
- premium user, 3rd share:allowed, 3 of 10pass
3 passed, 0 failed
- Agent
Done. share_limit counts the people on each routine and checks the count against the owner's plan before it allows another share.
What is Edict?
Edict is a backend for mobile apps, in development. AI coding agents have made screens quick to build. The backend behind them is still wired up by hand, one service at a time.
What gets wired by hand today
Sign-in and data
Accounts, sessions, a database, and rules for who can read what.
Subscriptions
Store purchases, webhooks, and entitlements that stay in step.
Notifications and jobs
Templates, schedules, and who should receive what, and when.
AI limits
Counting usage per plan, and giving it back when a call fails.
The glue between them
The logic that makes all of the above behave as one product.
Edict is designed to supply each of these as a module, with the connections between them written in one file your agent can read.
What does a connected backend look like?
Pick a few capabilities and see the connections Edict is designed to make. This is a concept preview, not a working product.
3 capabilities selected
- Give each user a subscription and an access level.
- Trigger a notification when a subscription changes.
- Send each notification to the right user.
edict.yamlillustrativemodules:
identity:
providers: [apple, google]
subscriptions:
plans: [free, premium]
notifications:
templates:
welcome:
title: "Welcome"
plan_changed:
title: "Your plan changed"
rules:
user_plan:
for: user
starts_on: free
plan_change_notice:
on: subscription.changed
send: plan_changed
notify_user:
send_to: user.devicesDesigned to include data models, access rules, and business logic. Preview only. No infrastructure is created.
What does the backend decide on each AI request?
The Paywall sample session above shows the file. Edict is designed to run the same checks, in the same order, on the server for every request.
- A free user asks the coach a question
- 402 upgrade required
- The plan is checked first.
- A premium user asks, with allowance left
- Answered, 1 message counted
- The allowance is checked next.
- A premium user asks, with the allowance used up
- Refused until it renews
- The count resets each billing period.
- The AI provider fails mid-request
- The message is given back
- A failed call does not use the allowance.
Illustrative outcomes. Not a released feature.
How does an app get from idea to production?
The agent is designed to work from one file you can read, and you keep that file all the way to production.
Describe
Tell your coding agent what the app needs.
Configure
The agent edits edict.yaml through the planned CLI and MCP server.
Test locally
It starts a local backend and runs tests on realistic scenarios. You read the diff and the results.
Validate
Check the same file against real provider test environments before launch.
Ship
Release the app. The same edict.yaml runs on managed hosting, with production credentials added.
Can I build and test without paying for hosting?
Local development is planned to be free. Managed hosting will be paid, with pricing still to be decided. The same configuration is designed to describe both.
| Area | Local development | Hosted production |
|---|---|---|
| Identities | Test users | Real users |
| Subscriptions and payments | Simulated purchases and payment events | Real entitlements from the app stores |
| Data | Seeded PostgreSQL on your machine | Managed storage and APIs |
| Notifications | Mock notifications | Provider integrations |
$ edict devPostgres ready on localhost:5432Backend ready on http://localhost:8787$ edict testseeded workouts 12 rows for test user passsimulated buy premium is active passmock push 1 reminder queued pass3 passed, 0 failedSimulated services do not prove a real provider integration works. Production still needs validation against real provider test environments.
What kinds of apps is Edict for?
Edict is designed for mobile apps that need accounts, payments, and data. Edict is in development, and its goal is a backend for 99% of the apps on the App Store and Google Play today. These examples are illustrative.
- Fitness and habit trackingAuthentication, Database, Subscriptions, Push, AI gateway, Background jobs, Business logic
- AI assistants and companion appsAuthentication, Database, Subscriptions, AI gateway, Background jobs
- Education and flashcardsAuthentication, Database, Subscriptions, Push, AI gateway, Background jobs, Business logic
- Budgeting and expense trackingAuthentication, Database, Push, Files, Background jobs, Business logic
- Journaling and wellnessAuthentication, Database, Push, AI gateway, Background jobs, Business logic
- AI photo and content toolsAuthentication, Subscriptions, Payments, AI gateway, Files, Background jobs
- Productivity and task managementAuthentication, Database, Push, Background jobs, Business logic
- Social and community appsAuthentication, Database, Push, Files, Background jobs, Business logic
- Appointment bookingAuthentication, Database, Payments, Push, Background jobs, Business logic
- Travel and itinerary planningAuthentication, Database, Subscriptions, AI gateway, Background jobs
- Meal planning and recipesAuthentication, Database, Subscriptions, Push, AI gateway, Background jobs
- Inventory and collectionsAuthentication, Database, Files, Business logic
And more we plan to cover
- MarketplacesAuthentication, Database, Payments, Files, Push
- Dating and matchingAuthentication, Database, Files, Push, AI gateway
- Chat and messagingAuthentication, Database, Files, Push
- Meditation and sleepAuthentication, Subscriptions, Files, Background jobs, Push
- Language learningAuthentication, Database, Subscriptions, Push, AI gateway
- Kids learningAuthentication, Database, Subscriptions, Business logic
- Quizzes and triviaAuthentication, Database, Business logic, AI gateway
- Games with leaderboardsAuthentication, Database, Business logic, Payments, Push
- Event ticketsAuthentication, Database, Payments, Business logic, Push
- Local deliveryAuthentication, Database, Payments, Push, Background jobs
- Property rentalsAuthentication, Database, Payments, Files, Business logic
- Photo and video editingAuthentication, Files, Background jobs, Subscriptions, AI gateway
- Document scanning and notesAuthentication, Files, Background jobs, AI gateway
- Podcasts and audioAuthentication, Files, Subscriptions, Background jobs, Push
- News readersAuthentication, Database, Subscriptions, Push, Background jobs
- Field serviceAuthentication, Database, Files, Background jobs, Push
- Clubs and membershipsAuthentication, Database, Subscriptions, Payments, Push
- Loyalty and rewardsAuthentication, Database, Business logic, Payments, Push
- Pet careAuthentication, Database, Files, Background jobs, Push
- Outdoor trailsAuthentication, Database, Files, Push
Get an invitation when the beta opens.
Joining gets you email updates while Edict is built, and an invitation to the hosted beta when it opens.
Building now. No launch date yet.
Join the beta waitlist
Open the signup form on KitEdict is in development. Joining does not create an account or start a trial.