Core Components:
Express.js for routing and API endpointsJanusGraph + Cassandra for scalable graph storageKafka for stream-based ingestionGremlin for graph traversalPrometheus for metrics collectionSwagger for auto-generated docsThe project is structured as it follows:
app/
├── logs/ # Winston log files (error.log, combined.log)
├── src/
│ ├── __mocks__/ # Mocks
│ ├── __tests__/ # Unit tests
│ ├── auth/ # OAuth strategies
│ ├── config/ # Swagger, Prometheus, environment
│ ├── controllers/ # Express route handlers
│ ├── db/ # Gremlin client setup
│ ├── kafka/ # Kafka consumer setup
│ ├── logger/ # Winston logger (logger.ts)
│ ├── monitoring/ # Prometheus metrics endpoint
│ ├── routes/ # Express route definitions
│ ├── services/ # Business logic (ingestionService, vertex/edge logic)
│ ├── utils/ # Helpers (e.g., sanitize.ts)
│ └── app.ts # Express entry point
├── Dockerfile # Container image
├── docker-compose.yml # Docker services including Kafka, Zookeeper
├── package.json
├── tsconfig.json
├── .env