Skip to content

Tech Stack & Deployment

Derived from pom.xml and application.yml across all NeoCore services.


Showcase App

Layer Technology
Runtime React 18.2 · TypeScript · Vite ~5 · Node
Routing react-router-dom v6
Testing Playwright (E2E) · Vitest (unit)
Build npm run buildtsc && vite build
Deploy Static dist/ behind NGINX / Spring Cloud Gateway

Arcat Portal (Dev Portal)

Layer Technology
Runtime React 18.2 · TypeScript 5.3.3 · Vite 8.x · Node 18+
Routing react-router-dom 6.21
State @tanstack/react-query 5.17
Diagrams mermaid 10.6 · reactflow 11.10
API swagger-ui-react 5.11
Markdown react-markdown 10.1
Icons lucide-react 0.309
Compression pako 2.1
Build npm run build (prebuild zips DB artefacts)
Deploy Static or Docker

Microservices Registry

Service Port Context Path Kafka Redis Eureka
General Ledger Service 8088 /api/v1/general-ledger
Product Service 8083 /api/v1/products
Customer Service 8082 /api/v1/customers
Deposit Service 8081 /api/v1/deposits
Transaction Service 8085 /api/v1/transactions
Share Service 8086 /api/v1/shares
System Setup Service 8089 /api/v1/system-setup
Periodic Activity 8087 /api/v1/periodic-activity
Bank & Branch Service 8090 /api/v1/bank-branch
Common Service 8091 /api/v1/common

Cross-cutting Stack

Component Version
Java 17
Spring Boot 3.2.0
Spring Cloud 2023.0.0
springdoc-openapi 2.3.0
Pattern Library
Circuit Breaker Resilience4j
Retry Resilience4j
Half-open state Resilience4j
Inter-service calls OpenFeign (5s timeout)
Component Detail
ORM Spring Data JPA
Migrations Flyway 10.17.1 — runs on startup
Connection pool HikariCP — max 10, min 5, timeout 30s
Component Detail
Kafka Spring Kafka · JSON serialization · 7/10 services · group: {service-name}-group
Redis Spring Data Redis + Lettuce · 8/10 services · TTL 600s
Library Version
common-utils 1.0.0-SNAPSHOT
transfer-objects 1.0.0-SNAPSHOT
messaging 1.0.0-SNAPSHOT

Database

Detail Value
Engine PostgreSQL
Host 103.216.94.145:5443
Database neocoredb
Schema pattern {service-name}_db-linux
Exception common-service → localhost:5432/common_db
Migrations Flyway — every startup
Pool HikariCP · max 10 · min 5 · timeout 30s

Infrastructure

Service Host Used by
Kafka localhost:9092 7 / 10 services
Redis localhost:6379 8 / 10 services · TTL 600s
Eureka localhost:8761 7 / 10 services
Config Server localhost:8888 Disabled by default

Quick Commands

# Package a service (skip tests)
mvn -q -DskipTests package

# Run a service
java -jar target/{service}-0.0.1-SNAPSHOT.jar

# Portal dev server
cd cbms-ai-dev-portal/arcat-portal && npm run dev

# Showcase dev server
cd cbms-ai-frontend && npm run dev

# Run Playwright E2E tests
npx playwright test

# Start backing services (Docker)
docker compose up -d postgres kafka redis

# Create common DB (one-time)
createdb -h localhost -U postgres common_db

# Override datasource (service startup)
java -jar target/{service}.jar \
  --spring.datasource.url=jdbc:postgresql://103.216.94.145:5443/neocoredb \
  --spring.datasource.username=neocore \
  --spring.datasource.password=Admin1000

Environment Variables

Variable Purpose
SPRING_DATASOURCE_URL PostgreSQL JDBC URL
SPRING_DATASOURCE_USERNAME DB username
SPRING_DATASOURCE_PASSWORD DB password
SPRING_KAFKA_BOOTSTRAP_SERVERS Kafka broker address
SPRING_DATA_REDIS_HOST Redis host
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE Eureka server URL
CONFIG_SERVER_ENABLED Enable/disable config server (false by default)