Documentation

Get up and running with ArchiTide.

Installation, configuration, and module-by-module guides for operators and developers.

Getting started

ArchiTide ships as a runnable prototype (single-file, SQLite) and a production codebase scaffold (modular FastAPI backend, React + Vite frontend, Postgres, Redis, Kubernetes manifests). Most teams start with the prototype to evaluate, then move to the production stack for staging and live tenants.

Time to first asset: ~5 minutes from a clean machine to logging in and creating your first record.

Installation

Prototype (SQLite, single process)

# 1. Install Python dependencies
pip3 install --user fastapi uvicorn sqlalchemy aiosqlite pydantic \
  pydantic-settings python-jose passlib python-multipart httpx \
  structlog jsonschema numpy bcrypt greenlet

# 2. Run
python3 prototype.py

# 3. Open http://localhost:8000

Production (Docker Compose)

# Copy .env.example → .env and fill in secrets
cp .env.example .env

# Bring up backend, frontend, postgres, redis, nginx
docker compose up -d

# Apply migrations
docker compose exec backend alembic upgrade head

Kubernetes

Kustomize overlays for staging and production live in infra/k8s/overlays/. Apply with kubectl apply -k infra/k8s/overlays/staging.

First login

The prototype ships with a demo tenant and admin account:

  • Email: admin@acme.com
  • Password: admin123

For production, the first administrator is created during the onboarding wizard, and the demo seed is disabled.

Core concepts

A few ideas show up across the entire product. Internalizing them up front saves a lot of clicks later.

  • Tenant — every record is scoped by tenant_id; row-level security is enforced at the database, not the application layer.
  • Asset lifecycle — a strict state machine: available → in_use → maintenance → retired → disposed. Transitions emit events to the audit log.
  • Custom fields — asset types own their schema; adding a field never requires a migration.
  • Saved views — persistent filter sets per user, optionally shareable.
  • Audit chain — every write produces an audit record; records are linked by SHA-256 hash for tamper detection.

Module guides

Each module ships with a dedicated guide covering the key workflows, fields, and integrations.

A
Assets

Create, assign, transfer, retire — bulk actions, custom fields, QR codes

I
Inventory

Receive, issue, adjust — weighted-average costing and low-stock alerts

PO
Purchase Orders

Upload a PO, auto-extract lines, approve, convert to assets

WO
Work Orders

Maintenance ticketing, downtime tracking, parts and labor

D
Depreciation

Pick a method, edit a schedule, run the monthly batch

AI
AI Insights

Forecast demand, score maintenance risk, query in plain English

Integrations

ArchiTide integrates outbound via webhooks and inbound via the REST API. Built-in connectors include:

  • SMTP — transactional email (alerts, digests, password resets).
  • Slack / Teams / Zapier — inbound webhooks for low-stock, expiring warranty, and work-order events.
  • QuickBooks / NetSuite / Xero — CSV journal-entry exports from the accounting module.
  • OIDC SSO — Google, Microsoft Entra ID, Okta. SCIM provisioning is on the roadmap.

Production deploy

See DEPLOY_LINUX.md in the repository for the full step-by-step. The short version:

  1. Provision Postgres 16, Redis, an SMTP relay, and an S3-compatible bucket.
  2. Set environment variables — see .env.example.
  3. Run migrations: alembic upgrade head.
  4. Bring up the backend behind your TLS termination of choice; serve the React build from a CDN or nginx.
  5. Wire the metrics endpoint into Prometheus and the audit firehose into your SIEM.

Getting help

Stuck? The fastest paths:

  • Email info@archipelagointeractive.com — one-business-day SLA.
  • Open an issue in your private support workspace (link is in your welcome email).
  • For an urgent production incident, page our on-call via the runbook delivered at deploy time.
Looking for the API surface? Every running instance serves Swagger UI at /docs and the OpenAPI schema at /openapi.json.