This guide walks you through running the complete InnovaTech SOA platform on your local development machine. By the end you will have both databases running in Docker, all five Spring Boot services registered with Eureka, and at least one React frontend serving traffic — all communicating through the API Gateway on portDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Nelsoncg98/InnovaTech/llms.txt
Use this file to discover all available pages before exploring further.
8080.
Prerequisites
Before you begin, make sure the following tools are installed and available on yourPATH:
- Docker and Docker Compose — used to run PostgreSQL 15 and MongoDB 6.0 containers. Any recent Docker Desktop release works.
- Java 17 JDK — all Spring Boot services require Java 17. Verify with
java -version. - Apache Maven — used to build and run each Spring Boot service. Verify with
mvn -version. - Node.js 18+ — required only if you intend to run one of the React frontends (
frontend-weborfrontend-pos). Verify withnode -version.
Setup Steps
Clone the Repository
Clone the InnovaTech SOA monorepo to your local machine:The repository root contains the
docker-compose.yml manifest and one directory per service or frontend.Start Infrastructure Databases
From the repository root, launch PostgreSQL and MongoDB as background Docker containers:Docker Compose starts two containers using the following configuration:Confirm both containers are healthy before proceeding:You should see
innovatech-postgres listening on 0.0.0.0:5433 and innovatech-mongo on 0.0.0.0:27017.Start Eureka Server
Eureka must be the first Spring Boot service to start. All other services register with it on boot, so it must be reachable before they launch.Eureka starts on port 8761. Once you see the log line The dashboard will initially show zero registered instances — that is expected at this stage.
Started EurekaServerApplication, open the dashboard to confirm the server is up:Start API Gateway
Open a new terminal, navigate to the The gateway starts on port 8080 and registers the following three route predicates into Spring Cloud Gateway:
All frontends send every request to
api-gateway directory, and start the gateway:| Route ID | Path Prefix | Upstream |
|---|---|---|
ruta-catalogo | /api/v1/catalogo/** | http://localhost:8084 |
ruta-orquestador-pos | /api/v1/ventas-pos/** | http://localhost:8082 |
ruta-inventario | /api/v1/inventario/** | http://localhost:8081 |
http://localhost:8080 — the gateway resolves the correct upstream automatically.Start Domain Services
Each of the three domain services must be started in its own terminal. The order within this step does not matter as long as Eureka is already running.servicio-catalogo — Product catalog backed by MongoDB, runs on port 8084:servicio-inventario — Inventory Kardex backed by PostgreSQL, runs on port 8081:servicio-ventapos — POS sales orchestrator backed by PostgreSQL, runs on port 8082:After each service starts, refresh the Eureka dashboard at
http://localhost:8761. You should see SERVICIO-CATALOGO, SERVICIO-INVENTARIO, and SERVICIO-VENTAPOS appear in the Instances currently registered with Eureka table.Each domain service connects to its database immediately on startup. If PostgreSQL or MongoDB is not yet healthy, the service will fail to start. Always ensure
docker-compose up -d completes successfully before starting any Spring Boot service.Start a Frontend
Choose the frontend that matches your workflow. Both share the same POS Application (Vite starts the dev server and prints a local URL (typically
package.json script structure.Web Storefront (frontend-web) — the React 19 e-commerce channel:frontend-pos) — the React 19 point-of-sale channel for physical stores:http://localhost:5173). Both frontends proxy all API calls through the gateway at http://localhost:8080.You can run both frontends at the same time in separate terminals. Vite will assign
frontend-pos to the next available port (typically http://localhost:5174) if 5173 is already taken.Verify Installation
Once all services are running, use the following URLs to confirm each component is healthy:| Component | URL | What to Check |
|---|---|---|
| Eureka Dashboard | http://localhost:8761 | All three domain services listed as UP |
| API Gateway health | http://localhost:8080/actuator/health | {"status":"UP"} |
| Catalog Swagger UI | http://localhost:8084/swagger-ui.html | Interactive API docs for servicio-catalogo |
Sample API Call — Inventory Stock Check
The followingcurl command queries the inventory service for the current stock level of a product, routed through the API Gateway:
{productoId} with a valid product identifier from your catalog. The gateway forwards the request to servicio-inventario on port 8081 and returns the stock count as a plain integer (e.g., 42) directly to the caller.
Startup Order Reference
Always follow this startup sequence to avoid registration and connection errors:
- Databases first —
docker-compose up -d(PostgreSQL on5433, MongoDB on27017) - Eureka Server — port
8761must be reachable before any other Spring Boot service starts - API Gateway — port
8080; registers routes but does not connect to a database - Domain services —
servicio-catalogo(8084),servicio-inventario(8081),servicio-ventapos(8082) in any order - Frontends —
frontend-weband/orfrontend-posafter all backend services are up