Buscador AI privado sobre documentos corporativos, multi-tenant.
- Go 1.23 — binario único, rápido, tipado fuerte.
- Postgres 17 + pgvector — datos + embeddings.
- Typesense — búsqueda lexical / hybrid.
- OpenAI embeddings — vectores para RAG.
- Chi — HTTP router.
- sqlc — queries tipadas compile-time.
- goose — migraciones.
- river — jobs en background sobre Postgres.
- mcp-go — servidor MCP (protocolo Model Context Protocol).
- zerolog — logging estructurado.
Hexagonal / Clean. Detalles en docs/adr/.
cmd/ ← binarios (server, worker)
internal/
domain/ ← entidades puras, sin dependencias
app/ ← casos de uso (orquestan dominio)
ports/ ← interfaces que la app necesita de infra
infra/ ← adapters concretos (pg, typesense, http, mcp, ...)
config/ ← configuración validada al arranque
logger/ ← logger estructurado
migrations/ ← SQL versionado (up/down)
docs/adr/ ← Architecture Decision Records
Requiere Docker + el traefik compartido de dev-toolbox corriendo.
# 1. Genera certs para los hosts .localhost
./scripts/gen-certs.sh
# 2. Añade las rutas al traefik de dev-toolbox (ver ADR-0005)
# 3. Abre el devcontainer en VS Code
code .
# F1 → "Dev Containers: Reopen in Container"
# 4. Dentro del devcontainer:
make up # levanta Postgres, Typesense
make migrate # aplica migraciones
make dev # arranca el servidor con hot-reload (air)| Servicio | URL |
|---|---|
| API | https://oroi.localhost |
| Typesense | https://typesense-oroi.localhost |
| Typesense Dashboard | https://typesense-oroi-dashboard.localhost |
make help # lista comandos disponibles
make up # docker compose up
make down # docker compose down
make migrate # aplica migraciones
make rollback # revierte última migración
make sqlc # regenera queries tipadas
make dev # air hot-reload
make build # compila binarios a /bin/
make test # tests
make lint # golangci-lint
make fmt # gofmt + goimports