Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8,774 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

1) Clone the repository

git clone https://github.com/cenit-io/cenit.git
cd cenit

2) Start the stack

docker compose up -d --wait --wait-timeout 300
scripts/smoke/compose_stack.sh

The default stack runs the five published services needed to evaluate Cenit:

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

Default admin credentials on a fresh database:

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

No source checkout or local image build of the UI is required.

2.1) Contributor development mode

Clone the UI as a sibling repository before using the development override:

git clone https://github.com/cenit-io/ui.git ../ui
scripts/compose-dev.sh up -d --wait --wait-timeout 300

This builds both images from local source. Set CENIT_UI_CONTEXT if the UI checkout is not at ../ui.

Fast UI development mode (live reload)

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

cd /path/to/cenit
scripts/compose-dev.sh --profile dev up -d mongo_server redis rabbitmq server ui_dev
scripts/compose-dev.sh --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.

2.2) Explicit image-only (prod-like) mode

cd /path/to/cenit
scripts/compose-prod.sh up -d
scripts/compose-prod.sh ps

This uses:

  • docker-compose.yml + docker-compose.prod.yml
  • published images from GHCR (pull_policy defaults to missing)

GHCR tag policy (from publish workflows):

  • master branch -> ghcr.io/cenit-io/cenit:latest and ghcr.io/cenit-io/ui:latest
  • develop branch -> ghcr.io/cenit-io/cenit:develop and ghcr.io/cenit-io/ui:develop
  • release tags v*.*.* -> semver tags
  • every publish -> immutable sha-<gitsha> tag

Run prod-like using develop images:

CENIT_SERVER_IMAGE=ghcr.io/cenit-io/cenit:develop \
CENIT_UI_IMAGE=ghcr.io/cenit-io/ui:develop \
scripts/compose-prod.sh up -d

Run prod-like pinned to immutable SHA tags:

CENIT_SERVER_IMAGE=ghcr.io/cenit-io/cenit:sha-<server_sha> \
CENIT_UI_IMAGE=ghcr.io/cenit-io/ui:sha-<ui_sha> \
scripts/compose-prod.sh up -d

For strict refresh from registry each run:

CENIT_PULL_POLICY=always scripts/compose-prod.sh up -d

2.3) Repro mode with non-default host ports (redirect/debug)

Use this to reproduce host/port redirect issues (for example, verify UI does not fall back to localhost:3000).

cd /path/to/cenit
REPRO_SERVER_PORT=13000 REPRO_UI_PORT=13002 scripts/compose-repro.sh up -d
REPRO_SERVER_PORT=13000 REPRO_UI_PORT=13002 scripts/smoke/repro_runtime_ports.sh

Default repro port mapping:

  • Backend host port: 13000 -> container 8080
  • UI host port: 13002 -> container 80

Optional public URL overrides (if not using localhost):

REPRO_SERVER_PUBLIC_URL=http://127.0.0.1:13000 \
REPRO_UI_PUBLIC_URL=http://127.0.0.1:13002 \
scripts/smoke/repro_runtime_ports.sh

3) Verify services

scripts/smoke/compose_stack.sh

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_SERVER_IMAGE (prod-like server image tag, default ghcr.io/cenit-io/cenit:latest)
  • CENIT_UI_IMAGE (prod-like UI image tag, default ghcr.io/cenit-io/ui:latest)
  • CENIT_UNICORN_WORKERS (backend worker count, default 2 for local evaluation)
  • CENIT_MAXIMUM_UNICORN_CONSUMERS (RabbitMQ consumer workers, default 2)
  • CENIT_PULL_POLICY (prod-like pull policy, default missing; use always for strict pulls)
  • CENIT_COMPOSE_FILES (default: docker-compose.yml:docker-compose.dev.yml)
  • CENIT_COMPOSE_FILE (legacy single-file override, still supported)
  • CENIT_BASE_COMPOSE_FILE (helper override for base file)
  • CENIT_DEV_COMPOSE_FILE (helper override for dev file)
  • CENIT_PROD_COMPOSE_FILE (helper override for prod-like file)
  • CENIT_REPRO_COMPOSE_FILE (helper override for repro file)

Image labels:

  • GHCR images are published with OCI metadata labels (source/revision/created) via docker/metadata-action.

Testing and quality checks

Backend API integration checks

scripts/e2e/cenit_api_login.sh
scripts/e2e/cenit_api_contact_flow.sh
scripts/e2e/cenit_api_integration_journey.sh

Browser journeys are owned by the Cenit UI repository. From a sibling UI checkout, run npm run e2e:login, npm run e2e:contact-flow, npm run e2e:user-journey, or npm run e2e:integration-journey.

Browser smoke: no localhost redirect during auth bootstrap

# Default URL
scripts/smoke/cenit_ui_no_localhost_redirect.sh

# Repro stack URL
CENIT_UI_URL=http://localhost:13002 scripts/smoke/cenit_ui_no_localhost_redirect.sh

This smoke fails if any browser request hits http://localhost:3000 during initial auth flow.

Pre-apply repro gate (runtime + browser checks)

REPRO_SERVER_PORT=13000 REPRO_UI_PORT=13002 scripts/smoke/repro_preapply_gate.sh

Use this as the required gate before Terraform apply or other deploy steps when validating the localhost redirect fix path.

Flow execution + RabbitMQ smoke

scripts/e2e/cenit_flow_execution_smoke.sh

Git hooks (pre-push E2E)

Install hooks:

npm install
npm run prepare

Current pre-push behavior:

  • Runs the backend API v3 login, contact-flow, and strict integration journey.
  • Does not require or invoke the UI repository.

Overrides:

# Skip the backend API E2E gate once
SKIP_E2E_HOOKS=1 git push

Troubleshooting

Backend does not become reachable on :3000

scripts/compose-dev.sh ps -a
scripts/compose-dev.sh logs --no-color --tail=200 server

If needed, run a full reset and rebuild:

scripts/compose-dev.sh down -v --remove-orphans
scripts/compose-dev.sh up -d --build

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

Releases

Packages

Used by

Contributors

Languages