I've created a dental clinic management system using React with Vite, Express Node, and PostgreSQL with Knex and TypeScript. This system is intended to be used by multiple PCs in a clinic, so I'm planning to deploy it on a dedicated Windows server within a LAN network.
For my first client, I set everything up on a dedicated PC where I installed Git, PostgreSQL, and Node. I cloned my GitHub repository using a fine-grained key and promptly revoked it after. After running npm install and npm run build on both the frontend and backend, I created the database and the .env.production file.
I used PM2 to keep the system running and set up Task Scheduler to auto-start the application whether the user is logged in or not. I also made sure to create a backup script and assigned the PC a static IP so that other PCs can connect directly using the designated server IP and port.
This approach worked well for the first clinic, and now I'm preparing to replicate this for a second clinic. I have a few questions about my current deployment method:
1. What do you think of my current deployment strategy?
2. For my upcoming deployment to additional clinics where individual updates won't be provided, should I create a single branch for these new clinics and manually pull updates to each server, or is there a more efficient method?
While Docker is an option, I'm concerned about the resource usage on client PCs since it can take up quite a bit of RAM, making it seem somewhat excessive. I'd love to hear any thoughts or solutions you might suggest for improving my setup for the first two clients and ideas for the new system.
3 Answers
Are you the same young developer who was concerned about data security a while back? It sounds like you're making progress! But seriously, keeping individual branches isn't the best idea long-term.
Your current method works for a couple of clinics, but managing separate branches for each client could become a nightmare as you scale. I suggest consolidating your codebase into one main version and shifting client-specific configurations to a settings file. Streamlining your deployment with an automated install/update script would make your life much easier. While Docker might add unnecessary complexity for small setups, focusing on packaging the app and standardizing the update processes could save you a lot of hassle down the line!
Totally agree! Using a simple script to check for updates during startup makes sense. An installer could also ease things for non-tech users. Docker isn't essential unless the clients are really tech-savvy, but it might help in keeping things consistent across installations.
Yeah, the branching approach felt right at first, but one codebase for all clinics would streamline updates greatly. I'm considering hosting the latest versions on a server that checks for updates, prompting users to accept installations automatically. What do you think?
Branching out for each client is going to complicate things quickly. My advice is to centralize features for all clinics on a single server and control access through an authorization mechanism. I recommend using a CI/CD pipeline for deployments—this can automate updates without you having to manually check each server. Docker is a great way to replicate environments, and the resource overhead is typically minimal, so don't dismiss it entirely!

Haha, yeah, that’s me! Still learning, and that’s why I’m looking for advice now.