Hi all! I’m setting up a clean workflow for incremental database changes in an Appwrite project. I have experience with Payload CMS, where changing collections/fields auto-generates migration files that we commit and run per environment. I couldn’t find a definitive Appwrite guide for this, so I’d love to hear how you handle it in practice.
Context Environments: dev → staging → prod (separate Appwrite projects). First deploy is easy enough with the CLI. After that, I want a reliable, incremental migration + seed flow.
Questions
Migrations: Do you rely on appwrite push for changes, or do you run code-first scripts with the server SDK (via CI or an admin Function)? Any gotchas with CLI diffs on attributes/indexes?
Promotion: How do you promote the same change through dev (local docker container) → staging (cloud hosted) → prod (tags, versioned scripts, Git-driven CI)?
**Expand/contract changes: **For renames/type changes, do you add new fields, backfill, then drop old later? How do you handle backfills safely at scale?
**Seeding static data: **Do you keep idempotent seed scripts (upserts) you can re-run anytime? Where do you store/run them?
Tracking: Do you keep a “migrations” collection to record which scripts ran, or another pattern?
**Rollbacks & backups: **What’s your rollback story and backup step before running migrations?
**Examples: **Any public repos, gists, or blog posts you recommend?
Thanks! If there’s an established pattern, I’ll summarize it here for others.
Recommended threads
- Function connected custom domain error: ...
My domain is served through Cloudflare. Domain is now connected with the appwrite function. But when accessing the domain, I get the below error. Any suggestion...
- Error | general_unknown
I have built a website using Appwrite Cloud as backend, and also using sites for deployment. My website is live but sometimes it shows Appwrite's Error general_...
- Invalid token passed in the request
Hello, I have an issue using updateMagicURLSession. I send the email using sendMagicLink, which works fine. When i click the link in the email i get the invali...