Edumate consists of multiple services:
- Frontend (Node.js)
- Backend (Spring Boot)
- NLP Service (Python / FastAPI)
- Database (PostgreSQL via Docker)
Each service can be developed independently, but the recommended way to run the full system locally is via Docker Compose.
All repositories are separate:
frontend
backend
nlp-service
.github (infrastructure)
.github contains shared Docker configuration.
git clone https://github.com/edumate-app/backend
git clone https://github.com/edumate-app/frontend
git clone https://github.com/edumate-app/nlp-service
git clone https://github.com/edumate-app/.githubGo to .github:
cd .github
docker compose up --buildThis will start:
- PostgreSQL (
localhost:5432) - Backend (Spring Boot) (
localhost:8080) - NLP Service (FastAPI) (
localhost:8000)
cd edumate-nlp-service
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
uvicorn main:app --reload --host 0.0.0.0 --port 8000docker build -t edumate-nlp .
docker run -p 8000:8000 edumate-nlpcd edumate-backend
./mvnw spring-boot:runBackend runs on:
http://localhost:8080
NLP_URL=http://localhost:8000
DB_URL=jdbc:postgresql://localhost:5432/edumatecd edumate-frontend
npm install
npm run devFrontend runs on:
http://localhost:3000
From edumate-dev:
services:
postgres:
image: postgres:16
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: edumate
ports:
- "5432:5432"
backend:
build: ../edumate-backend
ports:
- "8080:8080"
depends_on:
- postgres
- nlp-service
nlp-service:
build: ../edumate-nlp-service
ports:
- "8000:8000"
frontend:
build: ../edumate-frontend
ports:
- "3000:3000"- Frontend → Backend:
http://localhost:8080 - Backend → NLP:
http://nlp-service:8000(Docker) - Backend → NLP (local dev):
http://localhost:8000
docker compose up --builddocker compose downdocker volume rm edumate_postgres_data- Services communicate via Docker network when running in Compose
- Each service can still be run independently
- NLP service should stay stateless
- Backend is the main orchestrator of business logic