Change Management on Deployed Apps - Use Remix?

I’m pretty new to software development, just learning this all with using replit, so I’m a noob. I did create an app and got it deployed with a decent amount of beta testers using it, and I’m ready to implement some bigger changes to do the public launch.

The app overall is simple, it’s like an accounting app for a specific industry. I’ve done everything myself so far, but once it’s live and I see the adoption rate, I’ll be willing to hire help for it.

So I have a stable beta deployment, and I had a big feature request in the works that I was afraid would mess up my live deployment. So I remixed the app and started working on the updates, thinking this would keep things isolated and if it all went to hell I just delete the remix and start over.

However, I see that the original app has changes in the dev database that were made in the remix. But not all of them. This confuses me. How did that happen?

Also, is this how people develop new features on replit? Remix the app and run testing and beta deployment there, while your base users run the current version unaffected? I’ve gound some good info on reddit on using Neon for a prod and dev database, but when I tried to set it up, Agent deleted my database, thank good I could recover it. So I didn’t go further with connecting them.

I also found some good info on connecting to git hub and backing up locally, but it’s a little confusing for me to set up right now, so again, I paused it and am continuing to try to complete the feature updates in replit and see if it’s worth hiring help to configure these other workflows.

1 Like

@jpascucci2, this is one of the most widely asked things by non-tech people in the vibe coding world, and here in Replit’s community: development versus production (often shortened to dev and prod).

And it is why Replit have been working on a dev/prod database structure, although I honestly don’t think the rollout is being done right. It’s a case of here are some tools, but no real understanding of why or how to use them.

To existing software folk, this is all second nature. But in vibe coding land there needs to be more support for non-techs to understand these critical ideas, processes and workflows. The vibe coding is the easy bit (as you’ve found out), but all this other stuff like managing dev versus prod is tough without the learning and training.

So,… whilst there are different models (did I say there was just one simple way? :blush:) here is how I would do it - sorry if it’s a bit high level, happy to drill down if you have questions…

  • develop in your Replit dev environment. Add new features as you wish. The secrets include ones that point to a development DB (database)

  • when you deploy to production in Replit, your deployment version of those secrets would point to a different production DB. You have to make sure that if there are any changes to the structure of the DB (the schema) that you deploy these changes at the same time as the new code

  • you can then carry on adding new features, fixing bugs, etc in the development version of the code, knowing that it will not affect anything in the deployed production version - including your production DB

  • your production users are totally unaware of the new features and work you are doing in development, until you are ready to formally deploy them to production. A process by the way, that is worth an entire post in itself, as it is something you clearly have to do very carefully (big systems automate this, and employ people whose sole job is to manage the process)

Notice in the above that you never remixed to a new app. It is all done in a single app. Although there are reasons why you might remix sometimes.

There are also very strong arguments that Replit’s new dev/prod DB and the existing dev versus deployed (prod) environments is still very limiting. Many of us old-timers would ideally want at least 3 phases: dev, staging, and prod. The staging is one where you release your newly developed features/bug fixes into a carefully controlled middle ground, so that invited testers can check it all works properly (and away from the dev area where you are still hacking more changes). And then only when it passes all your staging tests would you move it on to the production area.

I appreciate all this may initially sound complicated (and I have only given you a taster!). But it is why there is a big argument from existing software developers saying “sure, vibe coding looks fun, but all this other stuff we trained for years to do is why vibe coding will not succeed”. An argument that I am dead against, because I believe the critical parts can be taught, and platforms like Replit will eventually support.

Very quickly, your other points:

  • I personally have an instruction in my replit.md that tells Replit agent never to modify my DB structure or schema. I think allowing the agent to make changes is madness. I ask agent that any changes to the schema are added to an SQL script, which I can then take and manually run myself, in a controlled way

  • Github - yes, you need to get a handle on this and Replit’s Git tool. It is critical for backing up your app and having access to previous versions. It’s another subject though that needs a full post in itself

1 Like

Thanks. Even this bit is super helpful, although I still need to learn the technical stuff a bit better, but I’m getting there and it is super intriguing! Someone is going to make a bunch of money by making an instructional course on vibe coding SDLC for dummies lol.

I will say that I found this guide for using Git with Replit, which seemed super informative but the links to the replit docs are no longer valid and I couldn’t find the information in the docs myself.

I also found this guide to separating Prod and Dev databases, but like I said, I hit a wall at step two. I expected to see the data that was currently in my Replit database show up in the Neon database I created, but instead, I suffered data loss in my replit database. So I rolled back the changes, and will take another stab at it once I finish the adding the new features I’m currently working on.

Links to any other guides or help working through the guides above is welcome! It doesn’t seem that difficult, but I’m lacking the fundamentals.

1 Like

Also, just opened the Bugs forum and the first thing I see is this post

Remix an app uses the same database on new app as the old one

So i’ve been making huge changes, almost recklessly in this remix and it’s actually been making changes to my deployed database as well! Oh no :weary_face:

Well great. I’m not even sure what to do now…

How long have you been making changes?

Probably best to roll it all back, then split the DB of the remix (you can ask Agent to do this). Verify it’s split, then go HAM again.

A while. I made some fundamental changes to the app. I tracked everything I did in notion, so they wouldn’t be hard to make again. But I don’t want to.

I don’t think that I’ll need to roll back because early on when I did the remix and made the first changes, I needed to see the database tables, so I had agent create the database. So now my base app (the deployed one) has some additional databases in it but that’s it. Everything else works like it should.

At this point I’m almost completely through with the changes I had planned in my remix refactor. Moving forward I will want to launch it then focus on creating a better system for handling updates. My plan at the moment is this:

  • Migrate user data from the original databases to the remixed version.
  • Send out development links to beta testers to verify the data looks correct.
  • Once confirmed, plan a time when the original app will be taken offline, all of the most current user data will be migrated into the remix database, then deploy the remix to the domain where the original app is currently deployed.

From there I will set up the GitHub connections properly, as well as the Neon prod and dev dBs. And learn how to properly manage them in the dev cycle. But I don’t think that makes sense until I’m back on one app only (no remix).

Thoughts?