First hour with the repo
Orientation: what MikeOSS.Azure is, the invariants that keep the fork mergeable, the code-verified architecture, and where the migration record lives.
MikeOSS.Azure
The Mike application — frontend + backend — adapted to run end-to-end on Microsoft Azure inside the customer's own tenancy. Removes the hosted-Supabase / hosted-LLM dependencies of the upstream codebase so data residency obligations stay inside one Azure tenant boundary.
Based on the upstream Mike repository under AGPL-3.0. The Azure adaptations and the local-first development stack are added by Altien.
Choose your path
This repository supports three deployment paths. Pick the one that matches your goal.
1. Local development (no Azure, ~5 minutes)
Docker Postgres + PostgREST + Caddy + Azurite + Node backend + Next.js dev server. The full vertical works on your laptop with no hosted dependencies and no Azure subscription required.
→ Step-by-step: docs/runbook-local-stack.md
# Quick summary
npm install --prefix backend && npm install --prefix frontend
cp backend/.env.example backend/.env
cp frontend/.env.local.example frontend/.env.local
docker compose -f docker-compose.dev.yml up -d
# (mint JWTs, fill env vars — see the runbook)
npm run dev --prefix backend &
npm run dev --prefix frontend
# open http://localhost:3000
Optional: validate Microsoft Entra sign-in locally without any Azure deployment — see docs/runbook-entra-local-auth.md.
2. Self-hosted Azure deployment (no Bicep, ~10 minutes)
Manual provisioning of the minimum Azure footprint Mike needs: 5 Azure resources + 1 Container App. No Bicep, no Key Vault, no VNet, no Managed Identity. Run schema migrations from your laptop. The trade-off is that Postgres / Storage / ACR are publicly reachable (with auth); fine for self-host or small-team use, not for paying customers.
→ Step-by-step: docs/azure-prereqs.md
You will provision:
- Resource Group
- Container Apps Environment
- Postgres Flexible Server (16+) with PGCRYPTO + VECTOR extensions
- Storage Account (with one blob container)
- Container Registry
- One Container App running backend + PostgREST sidecar
The same guide includes a "Going to production" appendix that layers in private endpoints, Managed Identity, Key Vault, and the rest of the production-grade hardening for when you graduate beyond minimal.
3. Azure Marketplace package (one-click)
Altien publishes a managed marketplace deployment that automates everything in option 2. Recommended for customers who want the integrated experience.
→ See [link to marketplace listing] (when available).
Repository layout
backend/— Express API, document processing, schema migrations, install configurator, runtime/configendpoint.frontend/— Next.js application, statically exported.- backend/migrations/ — schema migrations (run via
node-pg-migrate). - scripts/local-stack/ — local-dev support files (Postgres role init, Caddy proxy config, JWT minter).
docs/— runbooks and design docs.azure-prereqs.md— Azure self-host guiderunbook-local-stack.md— local dev guiderunbook-entra-local-auth.md— local Entra dev guidefork-delta.md— files diverged from upstream
Required services (any deployment)
- At least one LLM provider key: Anthropic, OpenAI, Gemini, or Azure OpenAI.
- LibreOffice at runtime for DOC/DOCX → PDF conversion (bundled in
the Docker image; if you run the backend natively, install it
yourself:
apt install libreoffice).
Checks
npm run build --prefix backend
npm run build --prefix frontend
npm run lint --prefix frontend
License
AGPL-3.0-only. See LICENSE.
Contributing
See AGENTS.md for contributor guidance, env-var hygiene rules, and the AGPL publication model.