An interactive 3D visualization tool for microservices architecture. ServiceScape transforms service catalogs into a LEGO-style cityscape — domains become colored districts, teams stack into towers, and each service is a brick with studs on top. Dependency edges arc between buildings in real time.
- LEGO Cityscape: Services render as LEGO bricks with studs, teams stack them into towers, and domains form snap-on colored baseplates over a shared green world plate.
- Authentic LEGO Aesthetic: Classic LEGO color palette, plastic material shading, and studio-lit toy photography lighting.
- Dependency Visualization: Toggle dependency edges (declared vs. observed) with smooth arc routing between buildings.
- Interactive: Click buildings to inspect service details; hover for team and domain info.
- Search & Filter: Find services, teams, and domains instantly; filter dependency types independently.
- LOD Rendering: Level-of-detail system — detailed bricks up close, simplified geometry at distance for smooth performance.
- camelCase API: Full snake_case → camelCase conversion layer between PostgreSQL and the frontend API contract.
| Layer | Stack |
|---|---|
| Frontend | React 18, TypeScript, Three.js, @react-three/fiber, @react-three/drei, Vite |
| Backend | Node.js, Express, PostgreSQL, Knex |
| Testing | Vitest, React Testing Library |
| DevOps | Docker, Docker Compose |
- Node.js 18+
- Docker & Docker Compose
-
Install dependencies:
npm install
-
Start Database:
docker-compose up -d postgres
-
Run Migrations & Seeds:
npm run migrate -w @servicescape/backend npm run seed -w @servicescape/backend
-
Start Development Servers:
npm run dev
-
Access Application:
- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
# All packages
npm test
# Backend only
npm test -w @servicescape/backend
# Frontend only
npm test -w @servicescape/frontenddocker-compose -f docker-compose.prod.yml up --build -dAccess the app at http://localhost:8080.
packages/
backend/ # Express API, PostgreSQL repositories, case-conversion utilities
frontend/ # React + Three.js 3D scene, LEGO components, stores, hooks
shared/ # Shared TypeScript types and utilities
plans/ # Implementation plan history
| Component | Role |
|---|---|
Scene.tsx |
Three.js canvas, lighting, camera |
CityLayout.tsx |
Top-level layout orchestration |
Domain.tsx |
District baseplates per domain |
Building.tsx |
Tower per team |
LegoBrick.tsx |
LEGO brick geometry (box + studs) |
LegoBaseplate.tsx |
Instanced stud-grid baseplate |
ServiceFloor.tsx |
Single service floor inside a building |
DependencyLayer.tsx |
Dependency edge arcs |
CameraController.tsx |
Orbit controls and camera reset |
| Module | Role |
|---|---|
routes/ |
REST endpoints (/domains, /teams, /services, /dependencies) |
services/ |
Business logic and case-conversion orchestration |
repositories/ |
PostgreSQL query layer |
utils/caseConverters.ts |
snake_case → camelCase API response transformation |
See packages/backend/API.md for full endpoint documentation.
- Fork the repository
- Create a feature branch (
git checkout -b feat/your-feature) - Commit changes following Conventional Commits
- Push and open a Pull Request
MIT