A microservices-based logistics management system with event-driven architecture.
- Microservices: Auth, Shipment, Warehouse, Tracking, API Gateway
- Communication: REST (synchronous) + RabbitMQ (asynchronous pub/sub)
- Security: JWT-based authentication via API Gateway
- Containerization: Docker & Docker Compose
- Database: PostgreSQL (one database per service)
- Docker Desktop (or Docker Engine + Docker Compose)
- Node.js LTS (for local development, not required for infrastructure)
# Clone the repository
git clone <repository-url>
cd ds_new
# Copy environment variables
cp .env.example .env
# Edit .env if needed (defaults work for local development)# Start PostgreSQL and RabbitMQ
docker-compose up -d
# Verify services are running
docker-compose psPostgreSQL:
# Check PostgreSQL is accessible
docker exec -it dlms-postgres psql -U postgres -c "\l"
# You should see: auth_db, shipment_db, warehouse_db, tracking_dbRabbitMQ:
- Open browser: http://localhost:15672
- Login:
admin/admin(default from .env.example) - You should see the RabbitMQ management interface
# Stop services
docker-compose down
# Stop and remove volumes (clean slate)
docker-compose down -vds_new/
├── services/
│ ├── auth-service/ # User authentication & JWT
│ ├── shipment-service/ # Shipment CRUD & events
│ ├── warehouse-service/ # Inventory & assignment
│ ├── tracking-service/ # Status tracking & notifications
│ └── api-gateway/ # Single entry point
├── scripts/
│ └── init-databases.sql # Database initialization
├── docker-compose.yml # Infrastructure services
├── .env.example # Environment variables template
├── .gitignore # Git ignore rules
├── IMPLEMENTATION_PLAN.md # Detailed implementation plan
└── README.md # This file
Create a .env file from .env.example:
cp .env.example .envKey variables:
POSTGRES_USER/POSTGRES_PASSWORD- Database credentialsRABBITMQ_USER/RABBITMQ_PASSWORD- RabbitMQ credentials- Database names for each service
- Service ports (will be used in later milestones)
- PostgreSQL:
postgres/postgres - RabbitMQ:
admin/admin
The system uses separate databases for each service:
auth_db- User authentication datashipment_db- Shipment recordswarehouse_db- Inventory and assignmentstracking_db- Tracking history
Databases are automatically created on first startup via scripts/init-databases.sql.
- AMQP Port: 5672
- Management UI: http://localhost:15672
- Default Exchange: Direct exchange (configured per service)
# Connect to PostgreSQL
docker exec -it dlms-postgres psql -U postgres
# List databases
\l
# Connect to specific database
\c auth_db
# Exit
\q- Open http://localhost:15672
- Login with credentials
- Check "Overview" tab for broker status
- Check "Queues" tab (will be empty until services start)
See IMPLEMENTATION_PLAN.md for detailed milestone breakdown.
Current Status: Milestone 1 - Infrastructure Setup ✅
If ports 5432 or 5672 are already in use:
# Check what's using the port (Windows PowerShell)
netstat -ano | findstr :5432
netstat -ano | findstr :5672
# Edit docker-compose.yml to use different portsIf databases don't appear:
# Check PostgreSQL logs
docker logs dlms-postgres
# Manually create databases
docker exec -it dlms-postgres psql -U postgres -c "CREATE DATABASE auth_db;"# Check RabbitMQ logs
docker logs dlms-rabbitmq
# Remove volume and restart
docker-compose down -v
docker-compose up -d- ✅ Milestone 1: Infrastructure Setup (Current)
- ⬜ Milestone 2: Auth Service
- ⬜ Milestone 3: API Gateway
- ⬜ Milestone 4: Shipment Service
- ⬜ Milestone 5: Event Infrastructure
See IMPLEMENTATION_PLAN.md for complete roadmap.
[Add your license here]
[Add contributors here]