Skip to content

Build & Deploy

Build

No build step. package.json:

{
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "nodemon server.js",
    "dev":   "nodemon server.js"
  }
}

Both start and dev invoke nodemon. In production, this is a smell — nodemon is a dev-only watcher; for production you'd want node server.js (likely under PM2). Verify production actually overrides this.

Deploy artefacts present in this repo

  • No Dockerfile
  • No Jenkinsfile
  • No .github/workflows/
  • No nginx.conf
  • No ecosystem.config.js (PM2)
  • No deploy script (no push.sh, no shell script)

Compared to siblings: | Repo | Dockerfile | Jenkinsfile | nginx.conf | PM2 ecosystem | GH Actions | |------|:---:|:---:|:---:|:---:|:---:| | someli-api | ✅ | ✅ | ✅ | ✅ | ✅ | | someli-platform | ✅ | ✅ | ✅ | (start.sh + EFS) | ❌ | | designer-api | ✅ | ❌ | ✅ | ❌ | ❌ | | Someli-Designer | ✅ | ❌ | ❌ | ❌ | ❌ | | admin_console_R | ❌ | ❌ | ❌ | ❌ | ❌ | | Someli-admin-api (this) | ❌ | ❌ | ❌ | ❌ | ❌ | | someli-dashboard-be | ❌ | ❌ | ❌ | ❌ | ❌ |

This repo has the least deploy infrastructure of the four backends. Either:

  • Production deploy happens via a process owned outside the repo (manual git pull + pm2 start server.js on the Lightsail box), or
  • The repo is awaiting a copy of the someli-api deploy scaffolding

In either case, this is a gap. Audit recommendation: copy someli-api/Dockerfile, someli-api/Jenkinsfile, and someli-api/nginx.conf here, adapt port numbers (5002 → whatever the admin API uses in prod), and commit.

How it runs in practice

Working assumption (verify with the ops owner):

  1. SSH to the admin-API Lightsail box
  2. cd /path/to/Someli-admin-api && git pull
  3. pm2 restart admin-api (or pm2 start server.js --name admin-api)
  4. nginx (configured at OS level, not in this repo) proxies the admin hostname to port 5002

This works but it's fragile — every step is human action with no audit trail. A typical PR that lands here is not deployed automatically.

Branch model

Inferred from sibling repo READMEs (someli-dashboard-be/README.md documents this pattern most clearly):

featuredevuatmain. PRs into dev. Merge dev to uat for QA. Merge uat to main for prod.

This repo's branch list (audit-time view) was not enumerated in detail. The HEAD commit at audit time is b82df49 on main (2026-01-12).

What "build & deploy" should look like

A reasonable target state (Phase 0 in enterprise-readiness.md):

  1. DockerfileFROM node:20-slimWORKDIR /appCOPY package*.jsonRUN yarn install --productionCOPY .EXPOSE 5002CMD ["node", "server.js"]
  2. CI — GitHub Actions (or Jenkins) that on push to dev_admin_api deploys to dev; on push to main deploys to prod
  3. PM2 ecosystem — declare the process, log paths, env file, restart policy
  4. nginx configserver { … proxy_pass http://127.0.0.1:5002; … }
  5. Documented manual rollbackpm2 reload with the previous commit; or docker stop && docker run <previous-tag>

None of this is hard. ~1 day of engineer time.