Quickstart

Quick Start — Node.js

Publish a working Node.js application on Zenifra using GitHub Repository source.

Prerequisites

  • Node.js 18+ installed locally
  • a GitHub account
  • access to the Zenifra console

Note: This quickstart covers only projects with GitHub Repository source.

Step 1 — Create your application

mkdir hello-zenifra
cd hello-zenifra
npm init -y
npm install express

Create index.js:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.json({ message: 'Hello from Zenifra!', time: new Date().toISOString() });
});

app.get('/health', (req, res) => {
  res.json({ status: 'ok' });
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, '0.0.0.0', () => {
  console.log(`Server running on port ${PORT}`);
});

Update package.json with a start command:

{
  "scripts": {
    "start": "node index.js"
  }
}

Confirm that package-lock.json was generated before publishing the project.

Step 2 — Publish to GitHub

Create a repository on GitHub and push the code:

git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/your-username/hello-zenifra.git
git push -u origin main

Step 3 — Create the project on Zenifra

  1. In the console, choose GitHub Repository as the project source.
  2. Select the repository and the main branch.
  3. In the runtime field, select Node.js.
  4. In the Port field, enter 3000.
  5. In build, use the command required by your project or leave it empty if there is no build.
  6. In start, use npm start.
  7. If you want automatic updates on push, enable auto-deploy during creation.
  8. Click Create Project.

Step 4 — Validate the deployment

Open the URL at *.clients.zenifra.com. You will see:

{ "message": "Hello from Zenifra!", "time": "2026-04-30T14:00:00.000Z" }

Also test /health to confirm the application is ready.

If auto-deploy was enabled during creation, Zenifra will update the instance automatically on each push to main.

Troubleshooting

ProblemSolution
The application does not startCheck whether the value configured in the Port field matches the port your application actually listens on
URL does not respondConfirm the application listens on 0.0.0.0
Build failedReview package.json, package-lock.json, and configured commands

Next steps