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
Connect GitHub
Authorise our GitHub app with least-privilege scopes — just enough to read the repository we're deploying, nothing more.
- 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
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
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.