Skip to content

nlsfnr/sc2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

170 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SC

A full-stack multi-tenant SaaS platform built as a monorepo. Features a layered Python backend with IAM (authentication, RBAC + ABAC authorization, multi-tenant orgs/projects), real-time cache invalidation over SSE, a background task queue with Redis Streams and RabbitMQ support, and a React frontend with OpenAPI-generated type-safe API client.

Tech Stack

Layer Technologies
Backend Python 3.13, FastAPI, SQLModel / SQLAlchemy, Alembic, Pydantic, asyncpg
Frontend React 19, Vite, TanStack Router + Query, Zod, Tailwind CSS, Radix UI
Auth JWT sessions, Argon2 password hashing, OTP (SMS/email), RBAC + ABAC
Infrastructure PostgreSQL, Redis (cache, pub/sub, task queue), Traefik, Docker
Task Queue Redis Streams or RabbitMQ (pluggable), delayed task scheduling
Real-time SSE with Redis Pub/Sub, automatic React Query invalidation
API Contract OpenAPI spec generated from FastAPI, TypeScript client via @hey-api/openapi-ts
Monorepo uv workspaces (Python), pnpm + Turborepo (JS), Make for orchestration
Quality Strict mypy, ruff, ESLint, pytest with branch coverage

Monorepo Structure

├── py/                          # Python workspace (uv)
│   ├── packages/
│   │   ├── lib/                 # Shared Pydantic utilities and types
│   │   ├── core/                # Domain models, services, migrations, task queue, sync
│   │   ├── api/                 # FastAPI routers, serialization, auth, pagination
│   │   └── dev/                 # Test infrastructure: fixtures, builders, test doubles
│   └── apps/
│       └── zuma/                # Deployable ASGI app: config, CLI, templates, Docker
│
├── js/                          # JavaScript workspace (pnpm + Turbo)
│   ├── packages/
│   │   ├── api-client/          # OpenAPI-generated Axios client + React Query hooks
│   │   ├── client/              # Data layer: auth context, sync, query wrappers, stores
│   │   ├── core/                # Feature UI: auth forms, org/project components
│   │   ├── ui/                  # Design system: Radix primitives, Tailwind, components
│   │   ├── eslint-config/       # Shared ESLint configuration
│   │   └── typescript-config/   # Shared TypeScript configuration
│   └── apps/
│       └── web/                 # Vite app shell with file-based routing
│
├── docs/                        # MkDocs Material documentation site
├── infra/                       # Docker images and swarm deployment
├── local/                       # Docker Compose for local development
└── Makefile                     # Top-level orchestration: ci, local, docs

Quick Start

Prerequisites: Docker and Docker Compose.

# Start the full stack (API, worker, database, cache, web)
make local

# API:  http://localhost:8000/api/v1
# Web:  http://localhost:5173
# Docs: http://localhost:8000/api/v1/docs

For local development without Docker, you'll also need uv (Python), pnpm, and Node 20+.

# Run CI checks (format, typecheck, test) for all packages
make ci

# Build and serve documentation
make docs-serve

Documentation

See the docs/ directory for detailed documentation on the architecture and subsystems, built with MkDocs Material.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors