DEV Community

Cover image for Automating SaaS Deployment: Automating SaaS Deployment: A Solo Developer’s CI/CD Journey
bobby1974
bobby1974

Posted on

Automating SaaS Deployment: Automating SaaS Deployment: A Solo Developer’s CI/CD Journey

Automating SaaS Deployment: A Solo Developer’s CI/CD Journey

🚀 The Challenge: The Struggles of Manual Deployment

For a long time, my workflow as a solo developer was completely manual. Every time I updated my project, I had to:

✅ Develop everything on my MacBook
✅ Manually upload backend files via FileZilla
✅ Copy and paste frontend updates into the public_html directory
✅ Worry about accidentally breaking the website
✅ Keep a local backup of my React Native mobile project without versioning

This worked—but it was slow, error-prone, and frustrating.


🔄 Enter Git, GitHub & CI/CD: The Game-Changer

I wanted to move to Continuous Integration and Deployment (CI/CD) but didn’t know where to start. The idea of automating deployments felt complex. Slowly, a structured plan emerged.

✅ Step 1: Structuring the Project for Better Organization

Instead of keeping everything in one place, I created three separate projects:

📂 Backend → Handles API requests & database interactions.
📂 Frontend-Web → React.js SaaS website.
📂 Frontend-Mobile → React Native mobile app.

Each part became its own GitHub repository, so I could update and deploy them independently.


🚀 The Breakthrough: Automating Deployment via GitHub Actions

I wanted my workflow to be as simple as:
Make changes
Push to GitHub
Files automatically deploy to the server

How We Built It:

  1. Set up Git repositories for backend, frontend-web, and frontend-mobile
  2. Configured GitHub Actions to handle FTP deployment
  3. Stored credentials securely using GitHub Secrets
  4. Automated React.js build processes before deployment
  5. Kept the mobile app backed up until it’s ready for the App Store & Play Store

📌 The Final Workflow: Simplicity & Power

Now, every time I push my code, the latest version is automatically deployed. No more manual uploads, no more deployment worries!

Backend updates → Automatically deployed via FTP.
Frontend-web updates → Built, then deployed via FTP.
Frontend-mobile → Temporarily stored for backup until final release.

🚀 What once took 30-45 minutes per update now happens instantly!


💡 A Message to Developers

If you’re struggling with manual deployments, this guide will help you transform your workflow. CI/CD isn’t just for big teams—it’s a lifesaver for solo developers too!

I have also documented the entire step-by-step process of how this CI/CD pipeline was built, including:
✅ Git & GitHub setup
✅ Folder structure for efficient deployment
✅ CI/CD pipeline with GitHub Actions
✅ Automating deployments using FTP

💡 Read the full tutorial here: [Insert Link to the CI/CD Instructions Post]


📌 Helpful Git, GitHub, and CLI Commands for Developers

🔹 Git Commands

Command Description
git init Initialize a new Git repository
git clone <repo-url> Clone an existing repository
git branch -M main Rename the current branch to main
git add . Stage all changes for commit
git commit -m "message" Commit changes with a message
git push origin main Push changes to GitHub
git pull origin main Pull latest changes from GitHub
git status Check the status of your repo
git log --oneline View commit history
git reset --soft HEAD~1 Undo last commit but keep changes

🔹 GitHub Commands

Command Description
gh repo create <repo-name> Create a new repository using GitHub CLI
gh auth login Authenticate GitHub CLI
gh issue list List all issues in a repo
gh pr create Create a pull request
gh secret set <name> -b"value" Add a secret to GitHub Actions

🔹 Useful CLI Commands

Command Description
ls -la List files with details
mkdir <folder-name> Create a new folder
rm -rf <folder-name> Delete a folder and its contents
chmod 755 <file> Change file permissions
pm2 restart all Restart all Node.js applications
curl -I <url> Check if a website is reachable

🚀 These commands will help streamline your development and deployment process Mahaprabhu!

Top comments (0)