Skip to content
/ cenit Public

🚀 Cenit IO - 100% open source integration Platform (iPaaS)

License

Notifications You must be signed in to change notification settings

cenit-io/cenit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8,730 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Cenit

Cenit banner

Smoke: Docker Compose + UI Login codebeat License

Cenit is an open-source integration-platform-as-a-service (iPaaS). It helps teams design integrations, orchestrate data flows, expose APIs, and manage data pipelines across external systems.

Table of contents

What you can build

  • Backendless data APIs from JSON Schema-based Data Types.
  • Integration flows for routing, orchestration, and automation.
  • Data transformation pipelines across JSON, XML, ASN, EDIFACT, X12, UBL, and more.
  • API and integration connectors for third-party services.
  • Event- and schedule-driven integration workloads.

Architecture and stack

Core runtime:

  • Ruby (Rails + Unicorn)
  • MongoDB
  • Redis
  • RabbitMQ

Default local ports:

  • Backend: http://localhost:3000
  • UI: http://localhost:3002
  • RabbitMQ management: http://localhost:15672

Related repository:

Project status

The repository is actively maintained. Current local migration baseline in this branch/repo:

  • Ruby 3.2.2
  • MongoDB 7.0
  • Docker Compose local runtime

Additional migration context is documented in upgrading_notes.md.

Quick start (local Docker Compose)

Prerequisites

  • Docker Desktop (or Docker Engine + Compose v2 plugin)
  • git
  • UI repository checked out as a sibling directory at ../ui (or set CENIT_UI_CONTEXT)

1) Clone repositories

# backend
git clone git@github.com:cenit-io/cenit.git

# UI (sibling directory required by default compose config)
git clone git@github.com:cenit-io/ui.git ../ui

If your UI checkout lives elsewhere:

export CENIT_UI_CONTEXT=/absolute/path/to/ui

2) Start the stack

cd /path/to/cenit
docker compose up -d
docker compose ps

2.1) Fast UI development mode (live reload from sibling ../ui)

Use this when iterating on UI code to avoid rebuilding the nginx UI image:

cd /path/to/cenit
docker compose --profile dev up -d mongo_server redis rabbitmq server ui_dev
docker compose --profile dev ps

Notes:

  • ui_dev serves Vite on http://localhost:3002 with source mounted from ${CENIT_UI_CONTEXT:-../ui}.
  • Keep ui (nginx image service) for production-like checks and CI parity.

3) Verify services

curl -I http://localhost:3000
curl -I http://localhost:3002

On first bootstrap (fresh database), default admin credentials:

  • Email: support@cenit.io
  • Password: password

RabbitMQ default credentials:

  • User: cenit_rabbit
  • Password: cenit_rabbit
  • VHost: cenit_rabbit_vhost

Common local operations

# Follow backend logs
docker compose logs -f server

# Restart backend only
docker compose restart server

# Stop all services
docker compose down

# Full reset (containers + volumes)
docker compose down -v --remove-orphans

Configuration

Important environment knobs used by local scripts:

  • CENIT_SERVER_URL (default http://localhost:3000)
  • CENIT_UI_URL (default http://localhost:3002)
  • CENIT_UI_CONTEXT (path to UI repository for Docker build)
  • CENIT_E2E_AUTOSTART (1 to auto-start stack in E2E scripts)
  • CENIT_E2E_RESET_STACK (1 to reset containers/volumes before E2E)
  • CENIT_E2E_BUILD_STACK (1 to rebuild images before E2E, default 0)
  • CENIT_E2E_HEADED (1 for headed browser runs)

Testing and quality checks

Login E2E smoke

scripts/e2e/cenit_ui_login.sh

Contact data type + records E2E

scripts/e2e/cenit_ui_contact_flow.sh

Driver note:

  • CENIT_E2E_DRIVER=pwcli may hit parser/runtime limits on large run-code payloads.
  • The contact-flow runner automatically falls back to the node-playwright driver when this is detected.

Useful overrides:

# Reuse already-running stack (skip deterministic reset)
CENIT_E2E_AUTOSTART=0 scripts/e2e/cenit_ui_contact_flow.sh

# Deterministic default (clean DB each run, no image rebuild)
CENIT_E2E_RESET_STACK=1 CENIT_E2E_BUILD_STACK=0 scripts/e2e/cenit_ui_contact_flow.sh

# Run headed
CENIT_E2E_HEADED=1 scripts/e2e/cenit_ui_contact_flow.sh

# Slower machines
CENIT_E2E_SERVER_READY_RETRIES=240 \
CENIT_E2E_UI_READY_RETRIES=180 \
scripts/e2e/cenit_ui_contact_flow.sh

UI user journey E2E

scripts/e2e/cenit_ui_user_journey.sh

Flow execution + RabbitMQ smoke

scripts/e2e/cenit_flow_execution_smoke.sh

Artifacts are written under output/playwright/.

Git hooks (pre-push E2E)

Install hooks:

npm install
npm run prepare

Current pre-push behavior:

  • Runs scripts/e2e/cenit_ui_contact_flow.sh
  • Uses fresh stack defaults:
    • CENIT_E2E_RESET_STACK=1
    • CENIT_E2E_BUILD_STACK=0
    • CENIT_E2E_CLEANUP=0 (cleanup disabled for hook stability)

Overrides:

# Reuse running stack
CENIT_E2E_AUTOSTART=0 git push

# Keep current volumes/state
CENIT_E2E_RESET_STACK=0 git push

# Skip image rebuild
CENIT_E2E_BUILD_STACK=0 git push

# Force cleanup phase
CENIT_E2E_CLEANUP=1 git push

# Skip hooks once
HUSKY=0 git push

Troubleshooting

Backend does not become reachable on :3000

docker compose ps -a
docker compose logs --no-color --tail=200 server

If needed, run a full reset and rebuild:

docker compose down -v --remove-orphans
docker compose up -d --build

E2E instability after many local runs

Use a clean boot:

CENIT_E2E_RESET_STACK=1 \
CENIT_E2E_BUILD_STACK=0 \
scripts/e2e/cenit_ui_contact_flow.sh

Contributing

Contributions are welcome and appreciated.

Before opening a PR:

  • Reproduce and describe the problem clearly.
  • Include tests or reproducible validation steps.
  • Keep scope focused and documented.

Security

Please do not report security vulnerabilities in public issues.

Code of conduct

This project follows the code of conduct in CODE_OF_CONDUCT.md.

License

Distributed under the terms in LICENSE.

Screenshots

menu tenants cenit_type mobile_view