back to work
2026 · live saas · inbox · website builder

Iroh Platform.

stack
  • fastapi
  • python
  • sqlalchemy
  • postgresql
  • redis
  • celery
  • websockets
  • next.js
  • typescript
  • ant design
  • docker
status
live
dilan/iroh-platform
live
activity pulse
fastapipythonsqlalchemy
overview

Live cloud-native multi-tenant SaaS for SMB customer communication, CRM, commerce, bookings, reservations, website builder publishing, platform administration, and AI-assisted operations. It brings WhatsApp, Instagram, email, customer records, catalogs, checkout, invoices, payment proof, bookings, follow-up, and public websites into one tenant-isolated workspace.

approach

FastAPI with SQLAlchemy 2.0, Pydantic, Alembic, PostgreSQL, Redis/Celery workers, WebSockets, JWT/RBAC tenant security, plan enforcement, audit logging, object storage, and webhook routers. The frontend uses Next.js 16, React 19, TypeScript, Tailwind CSS, Ant Design, SWR, Recharts, and Chart.js for dashboard analytics across sales, orders, customers, payments, campaigns, bookings, communication, and team activity. A standalone Node.js WhatsApp bridge manages tenant-specific messaging sessions.

functionality

Omnichannel inbox

WhatsApp, Instagram, and email conversations are pulled into a shared workspace so staff can respond with customer context instead of switching tools.

Website builder and publishing

Tenants can manage pages, reusable sections, publish manifests, products, services, custom domains, booking pages, and public inquiry flows.

CRM and customers

Contacts, customers, conversation history, sources, notifications, and follow-up records stay tied to the active tenant.

Catalog, checkout, and payments

Product catalogs, order drafts, checkout, invoices, bank accounts, bank-transfer proof, COD, payment status, and revenue reporting are connected.

Bookings and reservations

Service appointments, venue-style reservations, availability, calendars, booking settings, public booking pages, and status tracking share one workflow.

Analytics dashboard

The live front summarizes sales, orders, customers, payments today, campaigns, booking overview, communication volume, team activity, top products, and recent orders.

AI concierge foundation

Embeddings, retrieval, memory, and specialist agents prepare the platform to answer product, order, booking, and reservation intents.

Platform administration

Super-admin, billing, plan limits, audit logging, tenant management, and subscription enforcement keep the SaaS operating model controlled.

case study

Problem

Many SMBs manage sales conversations, customer records, product catalogs, payment proof, bookings, and follow-ups across separate tools. Owners lose visibility, staff duplicate data, and customer messages slip between channels.

Solution

Iroh centralizes communication and commerce operations while preserving tenant boundaries. Businesses get an omnichannel inbox, CRM, product catalog, checkout, booking and reservation flows, website builder publishing, billing controls, platform admin workflows, analytics, and AI concierge assistance in one operating dashboard.

technical architecture
01

Backend

  • FastAPI application with modular API v1 routes, SQLAlchemy 2.0 models, Pydantic schemas, Alembic migrations, PostgreSQL, JWT authentication, tenant membership checks, super-admin access, plan limits, and subscription enforcement.
  • Redis and Celery isolate messaging, appointment, subscription, AI, Instagram, WhatsApp, notification, and system jobs from user-facing API latency.
02

Frontend

  • Next.js dashboard modules for WhatsApp/Instagram inboxes, contacts, customers, catalog, orders, payments, campaigns, appointments, reservations, calendar, websites, billing, bank accounts, notifications, platform admin, analytics, and copilot.
  • Public website rendering paths support published tenant sites, product/service pages, booking pages, and inquiry capture.
03

Messaging and AI

  • Standalone Node.js WhatsApp bridge with Express, Baileys, QR code generation, and tenant-specific session handling.
  • AI concierge foundation using LiteLLM/Ollama gateway setup, embeddings, retrieval, memory, and specialist agents for product, booking, and reservation intents.
request flows top → bottom
key contributions
  1. 01Designed the product around a tenant-first SaaS model with shared infrastructure, tenant-scoped records, RBAC, plan limits, and subscription status enforcement.
  2. 02Built service layers for contacts, inboxes, products, orders, appointments, reservations, websites, billing, notifications, platform admin, and tenant management.
  3. 03Implemented real-time workflows with WebSockets, webhook ingestion, background workers, and tenant-specific WhatsApp bridge sessions.
  4. 04Developed commerce flows for catalogs, checkout, order drafts, payments, bank accounts, payment notifications, invoice generation, and proof verification.
  5. 05Created booking, reservation, website builder, publishing, public inquiry, domain, analytics dashboard, and AI concierge foundations.
security and reliability
  • Tenant access is derived from authenticated membership, not request body trust.
  • Super-admin routes require explicit super-admin authorization.
  • Suspended or expired tenants are blocked with subscription-aware enforcement.
  • Webhook and background-worker boundaries keep long-running messaging and AI tasks out of request latency.
  • Alembic migrations preserve schema history across tenant, billing, inbox, commerce, booking, website, and AI modules.
interview talking points
  • How tenant isolation is enforced across dependencies, models, and services.
  • Why messaging and webhook workflows are separated from dashboard CRUD operations.
  • How Celery/Redis improves reliability for notifications, webhook processing, AI tasks, and system jobs.
  • How the dashboard connects sales, inbox, booking, payment, campaign, and team metrics.
  • How a supervisor pattern can route product, order, booking, reservation, and general intents.
  • Why immutable website publish records are safer than serving draft database state.