Architecture Overview - nself-org/nchat GitHub Wiki

Architecture Overview

nself-chat System Architecture - High-level design and technical overview.

Version: 1.0.0 | Last Updated: April 17, 2026


🎯 Executive Summary

nself-chat is a production-ready, white-label team communication platform built as a monorepo with separate backend and frontend concerns. It supports 6 platforms (Web, iOS, Android, Windows, macOS, Linux) from a single React codebase.

Key Design Principles:

  • Separation of Concerns: Backend (nself CLI) and Frontend (React) are independent
  • Code Reuse: Shared packages across all platform apps
  • Type Safety: 100% TypeScript with zero errors
  • Production Ready: Zero compromises on quality, security, or performance

πŸ—οΈ System Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        nself-chat v1.0.0                        β”‚
β”‚                    Multi-Platform Chat System                   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β–²
                              β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚                                           β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”                         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    Frontend    β”‚                         β”‚     Backend     β”‚
β”‚   (React 19)   │◄─────────────────────────  (nself CLI)    β”‚
β”‚                β”‚     GraphQL/WebSocket   β”‚                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚                                           β”‚
        β”‚                                           β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚     Platform Apps                  β”‚    β”‚   Backend Services       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ β€’ Web (Next.js 15)                 β”‚    β”‚ β€’ PostgreSQL (database)  β”‚
β”‚ β€’ iOS (Capacitor 6)                β”‚    β”‚ β€’ Hasura (GraphQL)       β”‚
β”‚ β€’ Android (Capacitor 6)            β”‚    β”‚ β€’ Auth (Nhost)           β”‚
β”‚ β€’ Windows (Electron 33)            β”‚    β”‚ β€’ MinIO (storage)        β”‚
β”‚ β€’ macOS (Electron 33)              β”‚    β”‚ β€’ Redis (cache)          β”‚
β”‚ β€’ Linux (Electron 33)              β”‚    β”‚ β€’ MeiliSearch (search)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚ β€’ Mailpit (email dev)    β”‚
                                          β”‚ β€’ Nginx (proxy)          β”‚
                                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“ Monorepo Structure

Project Layout

nself-chat/
β”œβ”€β”€ backend/                  # Backend infrastructure (nself CLI)
β”‚   β”œβ”€β”€ migrations/          # SQL migrations (222 tables)
β”‚   β”œβ”€β”€ hasura/             # GraphQL metadata and permissions
β”‚   β”œβ”€β”€ nginx/              # Reverse proxy configuration
β”‚   β”œβ”€β”€ postgres/           # PostgreSQL init scripts
β”‚   β”œβ”€β”€ auth/               # Auth service configuration
β”‚   β”œβ”€β”€ schema.dbml         # Database schema (DBML format)
β”‚   β”œβ”€β”€ docker-compose.yml  # Generated by nself build
β”‚   β”œβ”€β”€ .env                # Local environment config
β”‚   └── README.md           # Backend documentation
β”‚
β”œβ”€β”€ frontend/                # Frontend monorepo (all platforms)
β”‚   β”œβ”€β”€ apps/
β”‚   β”‚   β”œβ”€β”€ web/            # Next.js 15 web application
β”‚   β”‚   β”‚   β”œβ”€β”€ src/        # Source code
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ app/    # Next.js App Router
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”‚   β”‚   └── services/
β”‚   β”‚   β”‚   β”œβ”€β”€ public/     # Static assets
β”‚   β”‚   β”‚   β”œβ”€β”€ package.json
β”‚   β”‚   β”‚   └── README.md
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ mobile/         # Capacitor mobile app
β”‚   β”‚   β”‚   β”œβ”€β”€ src/        # React source code
β”‚   β”‚   β”‚   β”œβ”€β”€ android/    # Native Android project
β”‚   β”‚   β”‚   β”œβ”€β”€ ios/        # Native iOS project
β”‚   β”‚   β”‚   β”œβ”€β”€ capacitor.config.json
β”‚   β”‚   β”‚   └── README.md
β”‚   β”‚   β”‚
β”‚   β”‚   └── desktop/        # Electron desktop app
β”‚   β”‚       β”œβ”€β”€ src/
β”‚   β”‚       β”‚   β”œβ”€β”€ main/   # Main process (Node.js)
β”‚   β”‚       β”‚   β”œβ”€β”€ preload/# Preload scripts
β”‚   β”‚       β”‚   β”œβ”€β”€ renderer/# Renderer process (React)
β”‚   β”‚       β”‚   └── adapters/# Platform adapters
β”‚   β”‚       β”œβ”€β”€ build/      # Build resources (icons)
β”‚   β”‚       β”œβ”€β”€ electron-builder.json
β”‚   β”‚       └── README.md
β”‚   β”‚
β”‚   β”œβ”€β”€ packages/           # Shared packages (code reuse)
β”‚   β”‚   β”œβ”€β”€ ui/            # Radix UI components
β”‚   β”‚   β”œβ”€β”€ config/        # Configuration types
β”‚   β”‚   β”œβ”€β”€ lib/           # Utility functions
β”‚   β”‚   β”œβ”€β”€ graphql/       # GraphQL client & queries
β”‚   β”‚   β”œβ”€β”€ auth/          # Authentication logic
β”‚   β”‚   β”œβ”€β”€ state/         # State management (Zustand)
β”‚   β”‚   └── types/         # TypeScript types
β”‚   β”‚
β”‚   β”œβ”€β”€ tooling/           # Development tooling
β”‚   β”‚   └── eslint/        # Shared ESLint config
β”‚   β”‚
β”‚   β”œβ”€β”€ package.json       # Root workspace config
β”‚   β”œβ”€β”€ pnpm-workspace.yaml
β”‚   └── README.md
β”‚
β”œβ”€β”€ .wiki/                 # Complete documentation (228 files)
β”‚   β”œβ”€β”€ Home.md           # Documentation home
β”‚   β”œβ”€β”€ getting-started/
β”‚   β”œβ”€β”€ features/
β”‚   β”œβ”€β”€ guides/
β”‚   β”œβ”€β”€ api/
β”‚   β”œβ”€β”€ deployment/
β”‚   └── ...
β”‚
β”œβ”€β”€ .github/              # GitHub Actions CI/CD
β”‚   └── workflows/        # 19 workflow files
β”‚
β”œβ”€β”€ .claude/              # Claude Code context (gitignored)
β”‚   └── v092/            # Current version tracking
β”‚
β”œβ”€β”€ scripts/              # Build and utility scripts
β”œβ”€β”€ package.json          # Root package.json
β”œβ”€β”€ README.md            # Project overview
└── LICENSE              # MIT License

πŸ”§ Backend Architecture

nself CLI Stack

The backend uses nself CLI v1.0.6 for a complete BaaS (Backend as a Service) stack.

Core Services (required):

  1. PostgreSQL 16 - Primary database with 60+ extensions
  2. Hasura 2.x - GraphQL Engine with permissions
  3. Auth - Nhost Authentication service
  4. Nginx - Reverse proxy + SSL termination

Optional Services (configurable via .env):

  • nself-admin - Admin UI (port 3021)
  • MinIO - S3-compatible object storage
  • Redis - Cache and session storage
  • MeiliSearch - Full-text search engine
  • Mailpit - Email testing (dev only)
  • Monitoring Stack - Grafana, Prometheus, Loki, etc.

Database Schema

222 tables organized by feature:

  • Core Tables: users, profiles, channels, messages, threads
  • RBAC: roles, permissions, user_roles
  • Features: reactions, bookmarks, pins, attachments
  • Advanced: guilds, categories, broadcasts, bots
  • Multi-Tenancy: workspaces, subscriptions, billing
  • Analytics: events, metrics, audit_logs

Schema Format: DBML (Database Markup Language) in backend/schema.dbml

GraphQL API

Hasura provides:

  • Auto-generated GraphQL API from PostgreSQL schema
  • Real-time subscriptions via WebSocket
  • Role-based permissions (RBAC)
  • Remote schemas for custom business logic
  • Actions for REST API integration

API Endpoints:

  • GraphQL: /v1/graphql
  • WebSocket: /v1/graphql (ws://)
  • Admin Console: /console

πŸ’» Frontend Architecture

Multi-Platform Strategy

One codebase β†’ Six platforms using React 19:

Platform Technology Build Output
Web Next.js 15 (SSR/SSG) Static HTML + JS
iOS Capacitor 6 + WebView .ipa (App Store)
Android Capacitor 6 + WebView .apk/.aab (Play Store)
Windows Electron 33 .exe installer
macOS Electron 33 .dmg disk image
Linux Electron 33 .AppImage/.deb/.rpm

Shared Packages

Monorepo design maximizes code reuse:

// Example: Importing from shared packages
import { Button } from '@nself-chat/ui'
import { useAuth } from '@nself-chat/auth'
import { apolloClient } from '@nself-chat/graphql'
import { logger } from '@nself-chat/lib'

Benefits:

  • βœ… Single source of truth for types
  • βœ… Consistent UI across all platforms
  • βœ… Shared business logic
  • βœ… Easier testing and maintenance

Platform Adapters

Each platform has adapters for native features:

Mobile Adapters (frontend/apps/mobile/src/adapters/):

  • storage/ - AsyncStorage β†’ LocalStorage interface
  • auth/ - Biometric authentication (Face ID, Touch ID)
  • notifications/ - Push notifications (FCM/APNS)
  • camera/ - Photo capture and gallery access
  • network/ - Connectivity monitoring

Desktop Adapters (frontend/apps/desktop/src/adapters/):

  • storage/ - electron-store β†’ LocalStorage interface
  • notifications/ - Native desktop notifications
  • clipboard/ - System clipboard access
  • filesystem/ - File system operations
  • window/ - Window management

State Management

Zustand 5.0 for local state:

// Example: Auth store
import { create } from 'zustand'

const useAuthStore = create((set) => ({
  user: null,
  login: (user) => set({ user }),
  logout: () => set({ user: null }),
}))

Apollo Client 3.12 for server state:

// Example: GraphQL query
const { data, loading } = useQuery(GET_MESSAGES, {
  variables: { channelId },
})

UI Component Library

Radix UI primitives + Tailwind CSS styling:

  • Accessible (WCAG 2.1 AA compliant)
  • Unstyled primitives (full control)
  • Dark/light mode support
  • Consistent across all platforms

πŸ” Security Architecture

Authentication Flow

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Client  │─────▢│   Auth   │─────▢│ Hasura   β”‚
β”‚ (Browser)β”‚      β”‚ Service  β”‚      β”‚ GraphQL  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
     β”‚                  β”‚                  β”‚
     β”‚                  β”‚                  β”‚
     β–Ό                  β–Ό                  β–Ό
  JWT Token      JWT Secret         JWT Validation
  (httpOnly      (HMAC-SHA256)      (x-hasura-* claims)
   cookie)

Auth Methods:

  • Email + Password
  • Magic Links (passwordless)
  • 11 OAuth Providers (Google, GitHub, Apple, etc.)
  • 2FA/TOTP (optional)
  • Biometric (mobile)

Authorization (RBAC)

5 built-in roles with granular permissions:

  1. Owner - Full access to everything
  2. Admin - User and channel management
  3. Moderator - Content moderation
  4. Member - Standard user
  5. Guest - Limited read-only access

Permission Examples:

// Hasura permission rules (simplified)
{
  "select": {
    "filter": {
      "_or": [
        { "channel.type": "public" },
        { "channel.members.user_id": "X-Hasura-User-Id" }
      ]
    }
  }
}

Data Security

  • End-to-End Encryption: Signal Protocol (Double Ratchet)
  • Transport Security: HTTPS/TLS 1.3
  • Database Encryption: At-rest encryption (optional)
  • Secrets Management: Environment variables + vault
  • Input Sanitization: DOMPurify for XSS prevention
  • CSRF Protection: SameSite cookies
  • Rate Limiting: Redis-based rate limiting

πŸš€ Deployment Architecture

Development Environment

Developer Machine
β”œβ”€β”€ Backend (Docker)
β”‚   └── 8 services running via nself CLI
└── Frontend (Node.js)
    └── pnpm dev (port 3000)

Production Architecture (Recommended)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Load Balancer                  β”‚
β”‚         (nginx, Cloudflare, etc.)           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚                   β”‚
β”Œβ”€β”€β”€β–Όβ”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”
β”‚  Web   β”‚         β”‚ Backend β”‚
β”‚ Nodes  β”‚         β”‚ Cluster β”‚
β”‚ (Next) β”‚         β”‚(Hasura) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    β”‚                   β”‚
    β”‚              β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”
    β”‚              β”‚   DB    β”‚
    └──────────────▢(Postgres)
                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Deployment Options

Option Best For Complexity
Vercel Web app only Low
Docker Self-hosted Medium
Kubernetes Enterprise scale High
AWS/GCP/Azure Full control High

πŸ“Š Data Flow

Real-Time Messaging

User A                    Server                    User B
  β”‚                         β”‚                         β”‚
  │─────(1) Send Msg───────▢│                         β”‚
  β”‚      (GraphQL)          β”‚                         β”‚
  β”‚                         β”‚                         β”‚
  │◀────(2) Confirm ────────│                         β”‚
  β”‚      (200 OK)           β”‚                         β”‚
  β”‚                         β”‚                         β”‚
  β”‚                         │──(3) Push Msg──────────▢│
  β”‚                         β”‚   (WebSocket)           β”‚
  β”‚                         β”‚                         β”‚
  β”‚                         │◀────(4) Ack─────────────│
  β”‚                         β”‚                         β”‚

Steps:

  1. User A sends message via GraphQL mutation
  2. Server validates, saves to DB, returns confirmation
  3. Server pushes message to User B via WebSocket subscription
  4. User B acknowledges receipt

File Upload Flow

Client                 Frontend              MinIO            Database
  β”‚                       β”‚                    β”‚                 β”‚
  │─(1) Select File──────▢│                    β”‚                 β”‚
  β”‚                       β”‚                    β”‚                 β”‚
  β”‚                       │─(2) Get Upload URL─▢│                β”‚
  β”‚                       β”‚                    β”‚                 β”‚
  β”‚                       │◀─(3) Signed URL────│                 β”‚
  β”‚                       β”‚                    β”‚                 β”‚
  │◀─(4) Upload Direct────┼────────────────────▢│                β”‚
  β”‚                       β”‚                    β”‚                 β”‚
  β”‚                       │─(5) Save Metadata──┼────────────────▢│
  β”‚                       β”‚                    β”‚                 β”‚
  │◀─(6) Success──────────│                    β”‚                 β”‚

Benefits:

  • Direct upload to S3 (faster)
  • No frontend server load
  • Scalable file storage

πŸ”„ Development Workflow

Git Branch Strategy

main (production)
  β”‚
  └── develop (staging)
        β”‚
        β”œβ”€β”€ feature/new-feature
        β”œβ”€β”€ fix/bug-fix
        └── refactor/code-cleanup

CI/CD Pipeline

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Commit    │────▢│  CI Checks  │────▢│   Deploy    β”‚
β”‚  (GitHub)   β”‚     β”‚  (Actions)  β”‚     β”‚ (Vercel)    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”
                    β”‚             β”‚
              β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”
              β”‚   Lint   β”‚  β”‚   Test   β”‚
              β”‚   Type   β”‚  β”‚   Build  β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

CI Checks:

  • βœ… Linting (ESLint)
  • βœ… Type checking (TypeScript)
  • βœ… Unit tests (Jest)
  • βœ… Integration tests
  • βœ… E2E tests (Playwright)
  • βœ… Security scans (TruffleHog)
  • βœ… Build verification

πŸ“ˆ Performance Optimizations

Frontend

  • Code Splitting: Dynamic imports, route-based splitting
  • Image Optimization: Next.js Image component, Sharp.js
  • Bundle Analysis: Webpack Bundle Analyzer
  • Lazy Loading: React.lazy for heavy components
  • Memoization: React.memo, useMemo, useCallback
  • Virtual Scrolling: For long message lists

Backend

  • Database Indexes: Optimized indexes for common queries
  • Connection Pooling: PgBouncer for PostgreSQL
  • Caching: Redis for frequently accessed data
  • Query Optimization: Hasura performance hints
  • CDN: Static assets on CDN (Cloudflare, etc.)

Monitoring

  • Sentry: Error tracking and performance monitoring
  • Grafana: Metrics dashboards
  • Prometheus: Metrics collection
  • Loki: Log aggregation

πŸ§ͺ Testing Strategy

Test Pyramid

           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
           β”‚  E2E Tests  β”‚  (Playwright)
           β”‚    ~150     β”‚
           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚Integration    β”‚  (Jest)
          β”‚   Tests       β”‚
          β”‚    ~250       β”‚
          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚   Unit Tests       β”‚  (Jest)
       β”‚     ~600           β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Coverage Goals:

  • Unit Tests: >80%
  • Integration Tests: Critical paths
  • E2E Tests: User journeys

πŸ“š Technology Stack Summary

Frontend

Category Technology Version
Framework Next.js 15.1.6
UI Library React 19.0.0
Language TypeScript 5.7.3
Styling Tailwind CSS 3.4.17
State Zustand 5.0.3
GraphQL Apollo Client 3.12.8
UI Components Radix UI Latest
Forms React Hook Form 7.54.2
Validation Zod 3.24.1

Backend

Category Technology Version
Database PostgreSQL 16
GraphQL Hasura 2.x
Auth Nhost Auth Latest
Storage MinIO Latest
Search MeiliSearch 1.x
Cache Redis 7.x
Proxy Nginx Latest
Infrastructure nself CLI 0.4.2

Mobile/Desktop

Category Technology Version
Mobile Capacitor 6.2
Desktop Electron 33.2
Build Tool Vite 6.0

DevOps

Category Technology Purpose
CI/CD GitHub Actions Automation
Monitoring Sentry Error tracking
Logging Loki Log aggregation
Metrics Prometheus Metrics collection
Dashboards Grafana Visualization

πŸ”— Additional Resources


Next Steps: Quick Start | Installation | Deployment