Skip to content

Sabbir Mohammad Sami web developer

ResumeDownload Resume

All notes

(Deployment)4 min read

Steps to Deploy Project on VPS

Deploying a Next.js app to an Ubuntu VPS comes down to eight steps: clone the repository, install dependencies, build, start it on a port, keep it alive with PM2, put NGINX in front as a reverse proxy with gzip and long-lived static caching, add HTTPS with Certbot, then check that NGINX and PM2 are both running.

Isometric illustration of three server racks wired to a cloud, with a shield above them, captioned “Upload Next JS Project on VPS”

Clone the Repository

Navigate to the home/ubuntu directory and clone your project repository:

Bash
cd /home/ubuntu
git clone https://github.com/sabbirsami/sales-sync-up.git

Install Dependencies

Move into the project directory and install dependencies using npm:

Bash
cd sales-sync-up
npm i

Build the Project

Run the build command to generate the production-ready files:

Bash
npm run build

Start the Application

Start the application on port 3005:

Bash
npm start -p 3005

Set Up PM2 for Process Management

Use PM2 to manage your application process:

Bash
pm2 start npm --name sales -- start

Save the PM2 process list to ensure it persists after reboots:

Bash
pm2 save

Set up PM2 to start on system boot:

Bash
pm2 startup

Configure NGINX

1. Install NGINX (if not already installed):

Bash
sudo apt install nginx -y

2. Create an NGINX Configuration File:

  • Create a new file in /etc/nginx/sites-available/sales:
Bash
sudo nano /etc/nginx/sites-available/sales
  • Add the following configuration (replace krishijaat.com with your domain):
NGINX
server {
    server_name sales.baitsbd.com;

    gzip on;
    gzip_proxied any;
    gzip_types application/javascript application/x-javascript text/css text/javascript;
    gzip_comp_level 5;
    gzip_buffers 16 8k;
    gzip_min_length 256;

    location /_next/static/ {
        alias /home/ubuntu/sales-sync-up/.next/static/;
        expires 365d;
        access_log off;
    }

    location / {
        proxy_pass http://127.0.0.1:3005;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

3. Enable the Configuration: Create a symbolic link to the sites-enabled directory:

Bash
sudo ln -s /etc/nginx/sites-available/sales /etc/nginx/sites-enabled/

4. Test and Restart NGINX: Test the NGINX configuration:

Bash
sudo nginx -t

Restart NGINX to apply changes:

Bash
sudo systemctl restart nginx

Set Up SSL with Certbot

1. Install Certbot:

Bash
sudo apt install certbot python3-certbot-nginx -y

2. Obtain an SSL Certificate: Run Certbot to enable HTTPS for your domain:

Bash
sudo certbot --nginx -d sales.baitsbd.com

3. Test Certificate Renewal: Perform a dry run to ensure automatic renewal works:

Bash
sudo certbot renew --dry-run

Verify Deployment

1. Check NGINX Status: Ensure NGINX is running:

Bash
sudo systemctl status nginx

2. Restart PM2 Process: Restart your application using PM2:

Bash
pm2 restart sales

Additional Notes

  • Ensure your domain (sales.baitsbd.com) points to the server's IP address (62.72.30.40).
  • Replace sales.baitsbd.com with your actual domain in the NGINX configuration.
  • If you encounter permission issues with Git, ensure your SSH keys are correctly configured.

NGINX Configuration Template

Here's the NGINX configuration template for reference:

NGINX
server {
    server_name yourdomain.com www.yourdomain.com;

    gzip on;
    gzip_proxied any;
    gzip_types application/javascript application/x-javascript text/css text/javascript;
    gzip_comp_level 5;
    gzip_buffers 16 8k;
    gzip_min_length 256;

    location /_next/static/ {
        alias /home/ubuntu/sales-sync-up/.next/static/;
        expires 365d;
        access_log off;
    }

    location / {
        proxy_pass http://127.0.0.1:3005;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Troubleshooting

  • Permission Denied (Public Key): Ensure your SSH key is added to your GitHub account.
  • NGINX Syntax Errors: Use sudo nginx -t to test the configuration.
  • PM2 Not Starting: Check logs using pm2 logs sales.

Common Questions

How do I deploy a Next.js app to a VPS?
Clone the repository onto the server, run npm install and npm run build, then start the app under PM2. Put NGINX in front as a reverse proxy to the app’s port and add HTTPS with Certbot. pm2 save and pm2 startup bring the app back after a reboot.
Why use PM2 to run a Node.js app?
PM2 keeps the process alive: it restarts the app when it crashes, and after pm2 startup and pm2 save it starts it again when the server reboots. It also keeps the logs, which pm2 logs <name> shows when something goes wrong.
What does NGINX do in front of Next.js?
NGINX is the reverse proxy. It listens on ports 80 and 443, forwards each request to the app on its local port (3005 here), and holds the SSL certificate. One NGINX can serve several apps on the same server, one per domain.
How do I add free SSL to a site on a VPS?
Install Certbot with its NGINX plugin (sudo apt install certbot python3-certbot-nginx -y), then run sudo certbot --nginx -d your-domain.com. Let’s Encrypt certificates renew automatically; sudo certbot renew --dry-run checks that renewal works.
Topic
Deployment
Published
Reading
4 min · 650 words
Sections
12
Tags
  • Next.js
  • VPS
  • NGINX
  • PM2
  • Certbot
  • Ubuntu

Experience

( 03 roles — 2+ years )

Full-stack developer in Dhaka, Bangladesh. Building for clients in Germany and Bangladesh since 2022.

  1. (01)

    August 2025 — Present

    Full-Stack Developer

    Susko GmbH · Full Time · Remote

    • Developed and enhanced an AI-powered SaaS and social media automation platform — AI content, image and video generation, automated scheduling and publishing, multi-account and content-team management, Meta, Instagram and Google integrations, WhatsApp-based content generation and scheduling, admin controls and subscription management.
    • Built a full-stack Padel court management and automation system that connects physical court hardware to a real-time web dashboard — court and player management, game control and live scores over WebSocket — and worked on the sensor electronics, PCB design, footprint verification, Gerber validation and JLCPCB manufacturing.
    • Built and maintained automation workflows with n8n, webhooks, APIs and external service integrations that take manual steps out of business processes.
    • Delivered 40+ production websites and full-stack applications for German clients across industries in React, Next.js and TypeScript — shop management, review management and automation, fundraising platforms, menu management, QR code generation and other custom business tools.
    • Optimized backend performance across production applications — database queries, API paths, data processing and Redis-based workflows — for faster, more responsive apps.

    Next.js · React · TypeScript · Node.js · Python · Prisma · Redis · WebSocket · n8n · OpenAI

  2. (02)

    March 2024 — May 2025

    Software Developer

    Bangladesh Associate of IT Solutions · Full Time · On-site

    • Developed a full-stack inventory management system tracking products, sales, payments, returns, waste products, customer ledgers and SMS notifications, in React, TypeScript, Express and MySQL.
    • Scaled an accounting management platform from a single-client application into a multi-user system, with financial dashboards, journal entries, transaction management, reporting and data visualization.
    • Deployed and maintained web applications on cPanel and VPS servers — production deployments, domain configuration, server setup and troubleshooting.
    • Delivered websites for schools, madrasas and other organizations, turning client requirements into responsive, production-ready web applications.
    • Developed and redesigned production and company portfolio websites in React, Next.js and TypeScript, with a focus on responsive design and user experience.

    React · Next.js · TypeScript · Express · MySQL · Tailwind CSS · cPanel · VPS

  3. (03)

    November 2023 — April 2024

    Full-Stack Developer

    Diginie IT · Internship · Remote

    • Completed a remote internship as a full-stack developer, building and maintaining client web applications in Next.js, TypeScript and Tailwind CSS.
    • Turned designs into responsive pages that held together on every screen size, and kept existing client sites running.

    Next.js · TypeScript · Tailwind CSS · GitHub

About

( Dhaka, Bangladesh )

Sabbir Mohammad Sami — full-stack web & app developer at Susko GmbH, building for the web since 2022.

Sabbir Mohammad Sami, smiling and looking off to the side, seated on a white block in a black sweater — black-and-white studio portrait

I’m a full-stack developer from Dhaka who cares about the part people actually touch — unusual layouts, careful CSS, motion that means something — and about the code underneath being just as clean.

( Story )

I grew up in Dhaka and studied arts and humanities at Kabi Nazrul Government College. Alongside my studies I joined a web development course, and that is where the real growth started — surprise. Alongside work, I am now in my third year of Honours in Economics at National University.

My first website was a tourism site about the place I most wanted to visit. I built it in class 10.

Today I build AI products, automation and client platforms at Susko GmbH, after two years of shipping inventory, accounting and client sites at BAITS. What I am after has not changed: interfaces that look good and back-ends that run smoothly, from the same pair of hands.

Honest, down to earth, and fond of hard work. My inbox is always open — for a project, or just to say hi.

  1. ( Education )

    1. Kabi Nazrul Government College

      • Arts and humanities
      • Dhaka, Bangladesh
    2. National University, Bangladesh

      Session 2023–2024 · Now

      • Honours in Economics — 3rd year
      • Department of Economics
  2. ( Co-curricular )

    —

    Bangladesh National Cadet Corps (BNCC)

    • 1 No Battalion, Ramna Regiment
    • Rank: Cadet Corporal
  3. ( Languages )

    Bangla, English, Hindi

    • Bangla — native
    • English — comfortable
    • Hindi — fluent

( Skills )

Expertise
React · Next.js · JavaScript · TypeScript · MongoDB · Bootstrap · Tailwind CSS · shadcn/ui · GitHub · Figma
Comfortable
Flutter · Dart · MySQL · Mongoose · Express · TanStack Query · Firebase · React Router · Photoshop
Familiar
Zod · Framer Motion · GSAP · JWT · Axios · CORS · Stripe · Vercel

( Questions )

Who is Sabbir Mohammad Sami?

Sabbir Mohammad Sami (S M Sami) is a full-stack web and app developer from Dhaka, Bangladesh. Since August 2025 Sami has worked as a Full-Stack Developer at Susko GmbH in Germany, after building inventory and accounting platforms at Bangladesh Associate of IT Solutions (BAITS). Sami has been building for the web since 2022.

What does Sabbir Mohammad Sami build?

Sami builds websites, web apps, mobile apps and AI products end to end: company and restaurant websites, booking and management platforms, an AI social media platform (Kocial), an AI review manager (ReviewSync) and a Flutter money app (Sompi). That includes 40+ production websites for clients in Germany and Bangladesh.

Which technologies does Sami work with?

Sami works across the MERN stack — MongoDB, Express, React and Node.js — and with Next.js, TypeScript, Tailwind CSS, MySQL, PostgreSQL, Prisma and Redis. Mobile apps are built in Flutter and Dart. AI features use the OpenAI API, n8n automations and webhooks, and motion uses GSAP.

Does Sami build mobile apps with Flutter?

Yes. Sami builds cross-platform apps in Flutter and Dart. Sompi, Sami’s own money tracker, runs on Android, iOS, the web and the desktop from one Flutter codebase, with Riverpod for state and an encrypted SQLite store, so every account and transaction stays on the device.

Does Sami build AI products?

Yes. At Susko GmbH Sami builds AI SaaS: Kocial writes captions, generates images and publishes to Facebook and Instagram for agencies, and ReviewSync answers Google reviews in a business’s own voice. Sami also builds n8n workflows that connect AI models to business tools.

How can I hire Sami as a web or app developer in Dhaka?

Email smsami.dev@gmail.com or use the contact form on this site with a short note about the project. Sami works with clients in Dhaka, across Bangladesh and abroad — remotely for companies in Germany — and replies in English or Bangla.

( Contact )

Contact

( Available for projects )

Based in Dhaka, Bangladesh (GMT+6). Happy to talk in English, Bangla or Hindi.

Let’s work together.

Have an exciting project you need help with? Send me an email, give me a call, or write below — a project, a question, or just to say hi.

( Write to me )

* Required