Products

PaaS — App Platform

Connect GitHub and our team builds and releases your app to Saudi infrastructure. Automated deploy-on-push is available by request (private beta).

Overview

Deployments run through a Git-based pipeline: clone the repository, build a Docker image, and run it as a container behind Nginx. It's the same path every site takes, so builds are reproducible and pinned to a specific commit.

Connect your GitHub repository, we auto-detect the framework, build it in an isolated environment, and run it in Riyadh with a subdomain and automatic SSL — the initial deploy runs automatically, with no approval step from Mahsumah. Auto-redeploy on every push is in private beta and rolling out: connect the GitHub app and each push to your branch rebuilds automatically. Managed WordPress/Laravel and white-glove migrations remain team-assisted.

How it works

  1. 1

    Connect GitHub

    Authorise our GitHub app with least-privilege scopes — just enough to read the repository we're deploying, nothing more.

  2. 2

    Import your repository

    Pick the repo and branch to deploy and tell us the framework and build command. Our team reviews the import request.

  3. 3

    We provision the deployment

    The pipeline clones the repo, builds the Docker image, allocates an internal port, and creates the Nginx virtual host and TLS certificate.

  4. 4

    Redeploy on new commits

    For a new release we clone the target commit, rebuild the image, and swap the container. During private beta this is triggered with our team; self-serve auto-deploy is rolling out.

Under the hood

  • Pipeline stages: git clone → Docker build → run container. Each image is pinned to the commit it was built from.

  • Least-privilege GitHub scopes: the integration reads only what it needs to build your project.

  • Next.js builds use standalone output for a lean runtime image; other stacks build with their own toolchain inside the pipeline.

  • New containers are brought up and health-checked before the previous version stops serving, so redeploys don't drop traffic.

  • Environment variables are injected at deploy time. Note: NEXT_PUBLIC values are baked in at build, so changing them requires a rebuild.

Key facts

Pipeline
git clone → Docker build → run container
Source
GitHub (or a Git repository you share)
GitHub auto-deploy
Private beta / team-assisted
Build for Next.js
Standalone output
Rollback
Redeploy a previous commit

What's included

  • GitHub connection with least-privilege access scopes

  • Repository import reviewed and provisioned by our team

  • Reproducible Docker builds pinned to a specific commit

  • Automatic Nginx virtual host and internal port allocation

  • Let's Encrypt certificate issued as part of provisioning

  • Rebuild-and-swap redeploys that keep the old version serving until the new one is healthy

  • Environment variables and secrets set per deployment

  • Team-assisted rollout with self-serve automation in private beta

Frequently asked questions

Is push-to-deploy fully automated?

Not yet for everyone. Fully self-serve GitHub auto-deploy is in private beta. Today you connect GitHub and import your repo, and our team provisions and triggers deployments. Automation is rolling out gradually.

Can I roll back a bad release?

Yes. Because each image is pinned to a commit, we can rebuild and redeploy an earlier commit to bring the previous version back.

What GitHub permissions do you need?

Least-privilege scopes — read access to the specific repository we deploy. We don't request more than the build needs.

Why did my NEXT_PUBLIC change not take effect?

NEXT_PUBLIC_* variables are compiled into the client bundle at build time. Changing one requires a fresh build, not just a restart — let us know and we'll rebuild.

Start on Mahsumah Cloud

Start in minutes, or let our team migrate your current platform for you.