Which fits a Back4app team that does not want to keep Parse
A Back4app team that no longer wants to pay per app, or that needs its data in a location it controls, should choose between three self-hosted paths before writing any migration code. Self-hosted Supabase suits teams that want Postgres and SQL: each project gets a Postgres database, and the self-hosted Docker stack adds Auth, PostgREST, Realtime, Storage and Edge Runtime around it. Self-hosted Appwrite suits teams that want a broader bundled backend with many SDKs, covering Auth, Databases, Storage, Functions, Realtime and client SDKs for Web, Flutter, Apple, Android, React Native and Unity. Staying on self-hosted Parse Server suits teams that keep Parse classes and Cloud Code, because it avoids rewriting every client and server call.
Each option changes a different amount of code. Moving to Supabase or Appwrite replaces Parse classes, Cloud Code and Live Queries with tables or collections, server functions and realtime subscriptions, so the SDK rewrite touches every screen that reads or writes data. Keeping Parse Server keeps that surface intact and moves only the hosting. Ask your engineers to count the Parse SDK call sites and Cloud Code functions in the app before you pick a direction, since that count is usually the largest input to the migration effort.
The decision turns on three questions. First, the data model: relational data with joins favors Supabase's Postgres, while Appwrite's default PostgreSQL, MariaDB or MongoDB options suit teams that want a choice of engine. Second, the SDK rewrite budget: confirm which client platforms you ship and whether those SDKs exist for them. Third, who will operate the stack: self-hosted Supabase and Appwrite both run as multi-service Docker deployments, and the Appwrite Helm chart runs its built-in datastores on a single replica, so you need a named owner for upgrades, backups and failover. Confirm the operating model in writing before committing to either path.
Which backend fits your current app and team
Your app stores data as Parse objects, uses Cloud Code for server logic and may depend on Live Queries for realtime updates. Moving to Appwrite or Supabase means replacing that model with collections or tables, rewriting Cloud Code as Appwrite Functions or Supabase Edge Functions, and replacing Live Queries with the realtime features of the target platform. This is the largest code change of the four situations, so plan it as a rewrite of the data and server layers rather than a configuration change.
- Data model mapping: Parse classes map to Appwrite databases with collections, or to Postgres tables in Supabase. Relations and pointers need explicit foreign keys or document references.
- Server logic: Cloud Code hooks such as beforeSave and afterSave have no one-to-one equivalent and must be redesigned as functions, policies or triggers.
- Realtime: Confirm how each target handles subscriptions for your query patterns before you rebuild the client.
- Client SDKs: Parse SDK calls are replaced by the Appwrite or Supabase SDK for your platform.
- User migration: Ask whether password hashes can move without forcing resets, since hash support differs by platform.
Before choosing, list every Cloud Code hook and Live Query your app uses and confirm which target supports each one.
Teams comfortable with SQL usually get the most from Supabase, because each project gets a Postgres database that the team can query, index, migrate and extend directly. Appwrite 2.0 also provisions PostgreSQL by default, though its database abstraction is less direct for ad hoc SQL work. The condition that favors this path is a data model with joins, constraints and reporting needs that a relational schema handles well.
- Direct Postgres access: Schema changes, migrations and queries run with standard Postgres tooling.
- Row-level policies: Access rules can live in the database, which suits teams that already write them.
- Self-hosted operations: The team must run Postgres backups, upgrades and restores, since self-hosted Supabase does not include managed backups or point-in-time recovery.
- Service versions: Each Docker configuration release bundles specific Auth, PostgREST and Realtime versions that operators must pull and recreate.
- Skill check: Confirm that at least one engineer can operate Postgres in production and handle a restore.
Ask the vendor or your own engineers to confirm the Postgres version and migration path for your current schema.
Teams building web, mobile and Unity clients from one backend often want authentication, storage, functions and realtime in a single product with broad SDK coverage. Appwrite's README lists Auth, Databases, Storage, Functions, Sites, Messaging, Firewall, Realtime and MCP, with client SDKs for Web, Flutter, Apple, Android, React Native and Unity and server SDKs for several languages. This fits when the app spans several client platforms and the team wants one console and one API surface.
- Client coverage: Check that your target platforms appear in the SDK list before you commit.
- Infrastructure needs: The sample Compose stack runs PostgreSQL, Redis, Traefik, ClickHouse and the Appwrite services, so budget CPU and memory for the whole stack.
- Production topology: The Helm chart documentation says built-in datastores run a single replica without failover, so production data needs managed services or operators.
- Feature gaps: DocumentsDB and VectorsDB ship disabled until the needed engines are deployed.
- Release cadence: Appwrite 2.0 and 2.5.0 changed the engine and Console, so plan upgrade testing.
Confirm which features your app needs and whether they are enabled in the release you plan to run.
Some teams cannot move away from Parse because of a large Cloud Code codebase, client apps already in users' hands, contractual commitments or a regulatory assessment that already covers the current Parse setup. In this case, running open-source Parse Server yourself keeps the data model and SDKs in place and changes only where the software runs. Staying on Parse can also be the cheaper path when the rewrite cost exceeds the operating cost of a self-run stack.
- Continuity: Parse SDK clients keep working when you point them at a new server URL.
- Cost comparison: Weigh Back4app plan fees and overages against servers, database operations and the time to run Parse Server.
- Operations: The team takes over database backups, upgrades, scaling and security patching.
- Compliance evidence: Controls and logs that Back4app provided now need your own evidence.
- Exit later: Keeping Parse does not remove the option to move to Appwrite or Supabase when the team is ready.
Confirm your Cloud Code surface area, your operating capacity and the assessment scope with an implementation partner before you decide.
Scenarios where each option is the better fit
This table matches common situations for leaving Back4app to the option that fits best, Appwrite or Supabase, or to staying on Parse Server. Read each row as a condition to check against your own app, then confirm the points marked for verification before committing.
| Scenario | Better fit | Reason |
|---|---|---|
| Relational reporting and joins across app data | Self-hosted Supabase | Each project gets a Postgres database, so SQL joins, views and reporting tools work directly on app data. |
| Heavy server-side business logic in Cloud Code | Stay on Parse Server or plan a rewrite | Cloud Code functions must be rewritten as Appwrite Functions or Supabase Edge Functions, so heavy logic adds migration effort. |
| Flutter or Unity clients | Self-hosted Appwrite | Appwrite publishes client SDKs for Flutter and Unity, which Supabase's official client list does not cover (confirm current SDK coverage). |
| Small team with no platform operators | Stay on Back4app or use a managed option | Self-hosted Supabase is community-supported and Appwrite's Helm chart runs single-replica datastores, so operating either needs in-house skills. |
| Requirement to keep Parse SDKs in client apps | Stay on Parse Server | Appwrite and Supabase use their own SDKs, so every client app needs a rewrite of data, auth and realtime calls. |
| Need for document-style records with schemaless JSON | Self-hosted Appwrite | Appwrite's DocumentsDB provides schemaless JSON documents, but it ships disabled and needs extra engines enabled. |
| Data residency with the stack inside your own network | Self-hosted Supabase or Appwrite | Both run in your own infrastructure, so you choose where data sits; confirm regional and backup requirements with your own environment. |
What the SDK rewrite involves when leaving Parse
Leaving Parse means rewriting every client call that touches classes, queries and Live Queries. Parse SDK code built around Parse.Object, Parse.Query and live subscriptions has no drop-in equivalent in Appwrite or Supabase. On Appwrite, the client SDKs for Web, Flutter, Apple, Android, React Native and Unity replace those calls, and data is addressed through databases, collections and documents. On Supabase, the client library queries Postgres tables through the API layer, so each Parse class becomes a table with a defined schema. Before choosing a target, list every SDK feature your app uses, including offline caching, batch saves, relations and file handling, and confirm with each vendor how the new SDK covers it.
Live Queries need a separate decision. Parse Live Queries are replaced by realtime subscriptions on both platforms, but the subscription filters, event types and reconnection behavior differ, so screens that depend on them need to be retested rather than translated line by line. Cloud Code is the other large rewrite. On Appwrite, server logic moves to Appwrite Functions, which run on the Open Runtimes executor in the sample Docker Compose deployment. On Supabase, the equivalent is Edge Functions on Deno, which the self-hosting guide lists as an optional service you can remove if you do not need it. A third option is a service your team hosts and calls from the client. Confirm the runtime, the trigger model and the secrets handling for each function before you commit to a platform.
Authorization needs the most careful planning. Parse relies on class-level and object-level access control lists and Cloud Code checks, while Supabase uses row-level security policies on Postgres tables, and Appwrite uses permissions set on collections, documents and files. Each rule must be written again and tested with real user roles, because a permissive policy on a new table can expose data that the old ACL protected. Ask your team to document every existing ACL pattern, map it to a policy or permission on the target, and run negative tests as a rejected user. Keep Supabase's self-hosting limits in mind as well: the platform runs as a single project, so separate environments need separate deployments.
Where data lives and who controls it after the move
Moving from Back4app to self-hosted Appwrite or Supabase changes who holds the data, the keys and the operational duties. These cards cover where data is placed, how the stack is hosted, what resilience you must add, how users move, who supports the platform, and which compliance evidence you will own.
Choose where the data sits
Self-hosted Appwrite and Supabase run in the cloud account, data center or air-gapped network you choose, so user records, files and database rows stay under your own access controls. Hosted Supabase Cloud asks you to pick one main region from 17 AWS regions for each project, so confirm where Back4app currently stores your app data before you size the move. Check backups, logs and analytics too, since those copies can land in other locations. Write the target region into the migration plan before provisioning.
Pick a hosting model
Self-hosted Supabase uses Docker Compose as its recommended method. Its services include Postgres, Auth, PostgREST, Realtime and Storage, and the documented minimum is 4 GB RAM, 2 CPU cores and a 40 GB SSD. Appwrite offers a Docker installation with a setup wizard and an official Helm chart for Kubernetes, with a minimum of 2 CPU cores and 4 GB of RAM. Kubernetes deployments of Supabase through a Helm chart or the Supabase Operator are maintained by the Supabase community. Choose the model your platform team already operates.
Plan datastore resilience
Appwrite's Helm chart runs its built-in PostgreSQL, Redis, ClickHouse and object storage as single replica with no replication or failover, so those defaults need a managed service or operator before production use. Self-hosted Supabase does not include managed backups or point-in-time recovery, and its docs list those as hosted-only features. Plan a managed Postgres service or a database operator, plus your own backup schedule and restore tests. Ask who owns the recovery time and recovery point targets before cutover.
Carry users and password hashes
Moving users without forcing resets depends on the hash format. Appwrite's Users API accepts imported Scrypt modified, bcrypt, Argon2, MD5, PHPass, Scrypt and SHA hashes, so the key question is whether Back4app exports password hashes and which algorithm they use. Confirm that with Back4app support and test a small export before committing. If the format is unsupported, plan a password reset flow and budget for the support volume it creates. Reissue session tokens after cutover rather than migrating them.
Own upgrades and support
Self-hosted Supabase is community-supported through GitHub Discussions, GitHub Issues, Discord and Reddit, and enterprises are directed to Supabase's Growth Team, so there is no default support contract. Its Docker configuration changes often: version 0.8.3, released on October 16, 2026, flagged security fixes for Storage and Realtime and one-way Storage migrations that require a database backup first. Appwrite 2.0 arrived on September 4, 2026, and 2.5.0 followed on October 13, 2026. Your team owns the patch cycle, testing and rollback plan.
Compliance readiness, not certification
DeployOpen plans and prepares systems, controls and evidence for compliance assessments, including access settings, backup records and change logs for the self-hosted stack. DeployOpen does not issue audit reports, attestations or certifications. Independent auditors and certification bodies make that decision, so ask them early which evidence they accept from a self-hosted backend. Also confirm which controls sit in your cloud account, which sit in the Appwrite or Supabase configuration, and which remain your own responsibility.
When staying on self-hosted Parse Server is the cheaper path
Staying on Parse is the cheaper path when the real cost of leaving is the client rewrite, not the hosting bill. If your iOS, Android and web clients call Parse SDK classes, Cloud Code functions and Live Queries, moving to Appwrite or Supabase means replacing those calls with a different SDK, a different data model and a different permission model. Running Apache-2.0 Parse Server and Parse Dashboard on your own infrastructure keeps the same client code and the same server URL pattern, so the work becomes an infrastructure move: export, host, verify and cut over. That condition holds most clearly when the app is stable, the team that wrote it is small, and the client release cycle is slow enough that a rewrite would sit in app store review for months.
The answer depends on how much client code depends on Parse. Count the Parse-specific surface before deciding: query and object calls, Cloud Code triggers and functions, Live Query subscriptions, push and file handling, and any session logic tied to Parse users. A thin client that mostly reads and writes objects is a smaller rewrite than an app built around Live Queries and Cloud Code hooks. For the component breakdown of Back4app fees, overages and Dedicated plan costs against servers, a database, backups and operating time, see the sibling page on Back4app cost vs self-hosted Parse Server. Ask your team to tag each Parse call in the codebase so the rewrite estimate rests on counted code, not assumption.
Be clear about what you take over when you stay on Parse. Upgrades to Parse Server, the MongoDB or PostgreSQL database, backups and restore tests, file adapters for S3, GCS or local storage, and security patching become your responsibility, and their recurring cost is staff time plus infrastructure. Confirm with your own engineers who will hold on-call duty and how often they can apply upgrades. If that operating capacity does not exist, the cheaper-looking Parse path can become the more expensive one, and Appwrite or Supabase, with their own self-hosting trade-offs, may be the better move.
What each path costs to run, component by component
Cost of leaving Back4app is not one number. It splits into recurring plan and infrastructure fees, one-time migration labor, and ongoing staff time to operate the stack. The cards below separate those components so you can ask each vendor and integrator for the same breakdown.
Back4app plan fees and overages
Back4app bills per app, with request and storage overages and a Dedicated plan above that. These fees are recurring and grow with each app and each traffic spike. Confirm your current plan, overage rates and what counts as a billable request before you compare. Once you leave, this line drops to zero, but you still pay for the months of parallel running during cutover.
Appwrite Cloud Pro starting price
If you want a hosted reference point, Appwrite Cloud Pro starts at $25 per month per the Appwrite pricing page, with overage charges and an optional organization budget cap. Supabase Cloud Pro is priced on its own pricing page, which is the right place to read current tiers. Hosted fees recur monthly and scale with bandwidth, storage and monthly active users. Use these figures only as a baseline, not as a self-hosted estimate.
Servers and hosting infrastructure
Self-hosting is recurring infrastructure. Appwrite's installation guide requires 2 CPU cores, 4 GB of RAM and 2 GB of swap, and Supabase's Docker guide lists 4 GB RAM, 2 cores and a 40 GB SSD as minimums, with 8 GB, 4 cores and 80 GB recommended. Production sizing, redundancy and multiple environments multiply this cost. Ask your provider for the instance, storage and egress prices in your region.
Database: managed or self-run
Appwrite provisions PostgreSQL by default, and Supabase runs Postgres 17 in its self-hosted configuration. Running these yourself adds backups, patching, failover and replicas. Appwrite's Helm docs state that its built-in datastores run a single replica without failover, so a managed database service is a recurring line you may need to add. Compare the managed database price against the staff time to run it.
Backups, storage and recovery
Supabase lists managed backups and point-in-time recovery as unavailable when self-hosting, so backup tooling, object storage and restore testing become your costs. These are recurring for storage and retention, and one-time for designing the restore process. Storage cost grows with file volume and retention periods, so confirm how much data you hold in Back4app file storage before modeling it.
One-time SDK rewrite and migration labor
Moving from Parse classes, Cloud Code and Live Queries to Appwrite or Supabase means rewriting client SDK calls, re-implementing server logic as functions and rebuilding realtime subscriptions. This is one-time labor, and it grows with the number of client platforms and Cloud Code functions. Ask for effort per platform, function inventory and a user migration plan that covers hash compatibility, since Appwrite's Users API accepts several imported hash formats.
Operating time and vendor support
Self-hosted Supabase is community-supported, and PocketBase has no support beyond volunteer maintenance, so your own engineers or a retainer carry upgrades, security patches and incident response. This is the largest recurring cost in most self-hosted estimates and the one most often left out. Ask any integrator to separate upgrade effort per release from on-call coverage and to state which hours are fixed scope and which are retainer work.
How a move off Back4app usually proceeds
The sequence turns an app built on Parse classes, Cloud Code and Live Queries into a self-hosted Appwrite or Supabase backend, with each stage closed by a check the team can verify before moving on. The order matters because the data model choice drives the SDK rewrite, and the rewrite drives the cutover.
Inventory Parse classes, Cloud Code and Live Queries
The application team lists every Parse class, its fields and pointers, each Cloud Code function and trigger, every Live Query subscription, and the push, file and user flows that depend on them. Parse Server does not map one-to-one onto either target, so this list becomes the scope document. The step is done when each Parse feature is marked as a table to migrate, a function to rewrite, a realtime feature to re-implement, or a feature to drop, and the owners have signed off.
Choose Supabase or Appwrite from the data model
Compare the relational or document shape of the Parse classes with the options on each side. Supabase gives each project a Postgres database, while Appwrite 2.0 provisions PostgreSQL by default with MariaDB and MongoDB also supported. Confirm which features your team needs, such as Auth, Storage, Functions and Realtime, and check each product's current self-hosting limits. The decision is recorded in a short architecture note that names the database engine, the hosting target and the reasons.
Stand up a non-production environment
Deploy the chosen platform in a non-production environment using its self-hosting guide, with Docker Compose for Supabase or the Appwrite installation path for Appwrite, and replace all placeholder secrets before first start. Confirm that the services your app needs are enabled and that unused components are removed. The environment is ready when a test user can sign in, a test record can be written and read through the client SDK, and a test file can be uploaded.
Migrate users, data and files
Export Parse data through the Parse Server API or database, since Appwrite Migrations imports Firebase, Supabase and Nhost projects but not Parse, so most export and import scripts are custom work. Move user accounts first and confirm which password hashes Parse stored, because password reset requirements depend on hash compatibility with the target. Load records into the target schema, then copy file objects from the Parse file adapter into the new storage. Each load ends with row counts, sampled record comparisons and a checksum or file count reconciliation.
Rewrite SDK calls and server functions
Replace Parse SDK calls on each client with the target SDK, and port each Cloud Code function to a server function on the target platform, such as Supabase Edge Functions or Appwrite Functions. Replace Live Query subscriptions with the target realtime mechanism and re-check authorization rules, since Parse access control lists do not translate directly into the target's row or document permissions. The step closes when every client build calls the new backend in a test environment and each ported function has passing tests.
Run parallel testing
Run both backends against the same test scenarios for the client apps, including sign-in, reads and writes, permission checks, realtime updates, push and file access. Compare results and log errors from each side. Load testing should use the actual resource sizing you plan to run, since the minimum requirements in the self-hosting guides are starting points. The step is done when the defect list is empty or each open item has an owner and an accepted workaround.
Cut over and decommission Back4app
Freeze writes on Back4app, run a final incremental export and import, switch the client configuration to the new server URL and keys, and monitor authentication and error rates closely. Keep the Back4app application available for a fallback window your team sets in advance. Decommission it only after the rollback option is no longer needed, then archive the final export and backup records. Done means the apps run on the new backend, old credentials are revoked and the backup and operations runbook covers the self-hosted stack.
Questions teams ask before moving off Back4app
How much effort does the SDK rewrite take when moving off Parse?
The effort depends mostly on how much of your client code calls Parse directly and how much logic lives in Cloud Code. Parse SDK calls map to a different model in Appwrite and Supabase: Appwrite exposes Auth, Databases, Storage, Functions and Realtime through its own client and server SDKs, while Supabase exposes Postgres tables through its client libraries and PostgREST. Parse classes, queries and Live Queries do not translate one to one, so each screen that reads or writes data needs to be reviewed. Teams with many Cloud Code functions should count them first, then separate logic that moves into database rules, Appwrite Functions or Supabase Edge Functions. Ask any implementation partner to inventory every SDK call and Cloud Code hook before quoting.
Can our team run Supabase or Appwrite without outside help?
A capable team can run either platform, but the work is operational, not only a deployment. Supabase's self-hosting docs describe the product as community-supported through GitHub Discussions, GitHub Issues, Discord and Reddit, and direct it to Supabase's Growth Team for enterprises. Appwrite's Helm chart docs say its built-in datastores run a single replica without failover, so production data should move to managed services or operators. Outside help is most useful for the initial architecture, the migration of users and data, backup and restore design, and hardening. Ongoing support, upgrades and testing can be handled through a retainer, while a fixed-scope engagement covers a defined set of deliverables.
How long does a migration take, and what decides the answer?
No single duration applies, because the timeline follows scope. The main drivers are the number of Parse classes and their relationships, the amount of Cloud Code, how many Live Query subscriptions the app uses, the volume of files that must move to new storage, and how many users must keep their sign-in without a password reset. Cutover planning matters as much as data volume, since mobile clients on older app versions still point at the Parse server URL. Teams should ask for a written scope listing data, auth, storage, functions, realtime and client releases, with each deliverable and its acceptance check. DeployOpen agrees scope, deliverables and timelines in writing before work starts.
What skills and infrastructure does the team need in place?
Plan for Docker, a PostgreSQL database and on-call coverage before go-live. Supabase's Docker self-hosting guide recommends Docker Compose and lists minimum requirements of 4 GB RAM, 2 CPU cores and a 40 GB SSD, with 8 GB RAM, 4 cores and 80 GB recommended. Appwrite's installation guide requires 2 CPU cores, 4 GB of RAM, 2 GB of swap and Docker Compose version 2. Both stacks ship several services, so someone must own image updates, secret rotation and backups. Supabase's changelog for 0.8.3 flags a Storage migration that requires a database backup before updating, which shows why a tested restore process is part of the skill set. Confirm your own on-call rota and monitoring before you commit to a date.
Can Appwrite or Supabase import Parse data directly?
Neither platform's supplied documentation describes a direct Parse import, so confirm this with each vendor before planning around it. What is documented is migration tooling for Firebase: Supabase publishes scripts in its community firebase-to-supabase repository for Firestore data, Auth users and Storage files, and Appwrite's Migrations feature imports Firebase, Supabase and Nhost projects. Parse data usually leaves Back4app as MongoDB or PostgreSQL data that your team exports and reshapes into Postgres tables or Appwrite collections. Password hashes also need checking, since Appwrite's Users API accepts several imported hash formats, and you should confirm which format your Parse users use before promising users keep their passwords.
Which costs recur after go-live?
Recurring costs fall into three groups: infrastructure, operations and any support agreement. Infrastructure includes servers or Kubernetes nodes, the database, object storage for files, backups, bandwidth and monitoring. Operations covers the time your engineers spend on upgrades, since Supabase's self-hosted Docker configuration pins specific upstream service versions that operators pull and recreate, and Appwrite releases frequently, with 2.5.0 released on October 13, 2026. If you use a hosted option for comparison, Appwrite's pricing page lists Pro from $25 per month per the vendor's page, and Supabase's pricing page lists a Pro plan from $25 per month, but those figures apply to hosted plans, not to your self-hosted stack. Ask for a quote that separates one-time work from each recurring cost line.
Should we stay on Parse Server instead of moving?
Staying on Parse can be the cheaper path when your app depends heavily on Parse classes, Cloud Code and Live Queries, and rewriting those would cost more than running Parse Server yourself. Parse Server is Apache-2.0 licensed, so self-hosting it avoids a rewrite of the client. The trade-off is that you still take on servers, database operations, backups and upgrades. Compare the rewrite effort against the cost of operating Parse for the next few years, including the database and file storage choices. Your decision should follow a written inventory of your Parse usage rather than a general preference for one platform.
How DeployOpen scopes an evaluation or migration
DeployOpen plans and implements self-hosted Appwrite or Supabase inside your own cloud account, data center or air-gapped network, so the scope starts with where the platform will run and who owns each layer. Before any work begins, the scope should settle which services are in use (Auth, Databases, Storage, Functions and Realtime on Appwrite, or Auth, PostgREST, Realtime, Storage and Edge Functions on Supabase), which datastores are production-grade, how Studio or the Appwrite Console is protected, and how the Parse Cloud Code and Live Queries workloads map to server-side functions and realtime subscriptions. Those decisions drive the deliverables more than the platform choice does.
Security testing is scoped as a separate, written workstream. Depending on what you agree, it can cover the deployed applications and APIs, the cloud and infrastructure configuration, the database access rules and the Storage permissions that replace Parse class-level permissions. Compliance readiness work prepares the controls, configurations and evidence that an independent auditor or certification body will assess. DeployOpen does not issue audit reports, attestations or certifications, so the scope should name the framework and the auditor you already work with, and confirm which evidence items you need in writing before the engagement starts.
Most engagements are fixed-scope. The written scope lists the deliverables, the environments covered, the handover responsibilities and the timeline, and a quote follows from that document. Ask for the scope to state which items are one-time (architecture, migration, hardening, initial testing) and which recur (upgrades, backups verification, continuous testing or support under a retainer). Ongoing support and upgrades are available as retainers, so check whether your team will keep operating the stack alone, since Appwrite and Supabase upgrades require reviewing release notes and migrations first.
How DeployOpen works on this
DeployOpen plans, implements, customizes, hardens, backs up and documents self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For a move from Back4app to Appwrite or Supabase, we start with the app inventory and the SDK rewrite, then build and test in your environment before any production cutover.
How we scope
- We inventory Parse classes, Cloud Code functions, Live Queries, push and file usage in your Back4app apps.
- The written scope names the target platform, Appwrite or Supabase, and which apps and data sets move.
- Engagements are fixed-scope, with deliverables and timelines agreed in writing before any work starts.
How we build
- We deploy the chosen stack in your infrastructure, sized against the vendor's published minimum requirements.
- We plan the user password hash migration and confirm which imported hash formats your target platform accepts.
- We rebuild Cloud Code logic as functions and test authorization rules, realtime behavior and file access before cutover.
How we hand over
- You receive architecture, configuration, runbooks and the data migration record for your internal teams.
- We document backup and restore procedures, including the one-way database migrations some upgrades require.
- We provide security hardening evidence and control mapping to support your compliance readiness reviews.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer after handover.
- Retainers can cover version upgrades, such as tracking Appwrite and Supabase releases in your environment.
- Confirm with us which high-availability and managed database options your team will own before go-live.

