This guide walks you through everything needed to get Mindloom’s API and Inference Service running on your machine, connect them to Oracle Autonomous Database, and ingest your first piece of technical content. By the end you will have a locally running system that classifies text, returns keywords and related content, and is ready for the React web interface.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/No-Country-simulation/G9-LATAM-Team-58/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Before you start, make sure the following are installed:| Tool | Required version |
|---|---|
| Java | 25 |
| Python | 3.12 |
| Node.js | 22 |
| Docker | Latest stable |
| Docker Compose | V2 (bundled with Docker Desktop) |
The repository ships with the Maven Wrapper (
./mvnw), so a local Maven installation is not required to build or run the API.Setup Steps
Copy the root
.env.example to .env and fill in the required values. This file supplies variables that Docker Compose interpolates into the containers — it is never committed to the repository.# Oracle Autonomous Database — alias from tnsnames.ora inside the wallet.
# Options: techmind_high / techmind_tp / techmind_tpurgent
SPRING_DATASOURCE_URL=jdbc:oracle:thin:@techmind_tp?TNS_ADMIN=/app/wallet
SPRING_DATASOURCE_USERNAME=ADMIN
SPRING_DATASOURCE_PASSWORD=
# OCI Object Storage — the VM authenticates via Instance Principal, no keys needed.
OCI_NAMESPACE=
MODEL_BUCKET=techmind-data
SPRING_DATASOURCE_PASSWORD and OCI_NAMESPACE have no defaults and must be filled in before starting the containers. Leaving them blank will cause the api container to fail on startup when the db profile attempts to open a database connection.Download the Instance Wallet for your Autonomous Database from the OCI Console and unzip it into a
wallet/ directory at the repository root:mkdir -p wallet
# Unzip your downloaded wallet archive into this directory
unzip Wallet_<your-db-name>.zip -d wallet/
Docker Compose mounts this directory read-only at
/app/wallet inside the api container. The TNS_ADMIN environment variable already points there.inference — FastAPI service on internal port 8000 (not published to the host). On first start it downloads model.joblib from the OCI Object Storage bucket defined by MODEL_BUCKET. Subsequent starts reuse the cached artifact.api — Spring Boot service published on host port 8080. It starts only after the Inference Service passes its health check (depends_on: condition: service_healthy), ensuring classification is available before the API accepts traffic.The
api container always starts with SPRING_PROFILES_ACTIVE=db, which activates the database-backed beans. Without this profile the API runs in scaffold mode: spring.autoconfigure.exclude omits DataSourceAutoConfiguration and HibernateJpaAutoConfiguration, and every endpoint that touches the database returns 503 Service Unavailable. Docker Compose sets this profile automatically — you only need to set it manually when running ./mvnw spring-boot:run outside of Docker.{
"status": "UP",
"timestamp": "2026-08-06T02:00:00Z",
"dependencies": [
{ "name": "inference", "enabled": true, "reachable": true, "latencyMs": 154, "message": null },
{ "name": "database", "enabled": true, "reachable": true, "latencyMs": 308, "message": null }
]
}
The web README recommends
pnpm (pnpm install && pnpm dev). Both package managers work. The dev server starts at http://localhost:5173 and points to http://localhost:8080 by default — no additional configuration needed for local development.Send a
POST /content request with a title and body. Only the body field is forwarded to the Inference Service for classification; title is stored alongside the result.curl -X POST http://localhost:8080/content \
-H 'Content-Type: application/json' \
-d '{
"title": "Intro to Spring Boot",
"body": "Spring Boot makes it easy to create stand-alone, production-grade Spring-based applications. It takes an opinionated view of the Spring platform, which paves the way for a faster development experience."
}'
{
"id": "usr-9f2c1e04",
"category": "Backend",
"probability": 0.89,
"keywords": ["Java", "Spring Boot", "API REST"],
"related": [
{
"id": "devto-2015",
"title": "Validación con Bean Validation",
"category": "Backend",
"similarity": 0.76
}
],
"explanation": ["spring", "rest", "endpoint"]
}
iddevto-4821); user-submitted content receives usr-{UUID}categoryprobabilitykeywordsrelatedexplanationWhat’s Next
Your Mindloom instance is running and has indexed its first document. Here are some useful next steps:Architecture
Understand how the four layers interact during ingestion and search.
POST /content
Full reference for the ingestion endpoint, including batch CSV upload.
Semantic Search
Learn how
GET /search?mode=semantic queries Oracle with vector distance.Deployment
Deploy Mindloom to an OCI Ampere A1 VM with the full
--profile web stack.