Skip to main content

Tech Stack

info

Fluvius Framework is built on modern Python technologies and best practices.

Core Technologies

Python

Version: Python 3.12+

Why Python 3.12+?

  • Modern type hints
  • Improved async/await
  • Better performance
  • Pattern matching support

Features Used:

  • Type hints
  • Async/await
  • Dataclasses
  • Enums

FastAPI

Purpose: REST API framework

Why FastAPI?

  • High performance
  • Automatic API documentation
  • Type validation with Pydantic
  • Async support

Usage:

from fastapi import FastAPI
from fluvius.fastapi import FluviusFastAPI

app = FluviusFastAPI()

Pydantic

Purpose: Data validation and serialization

Why Pydantic?

  • Type validation
  • JSON serialization
  • Data models
  • Settings management

Usage:

from pydantic import BaseModel

class User(BaseModel):
name: str
email: str

SQLAlchemy / Alembic

Purpose: Database ORM and migrations

Why SQLAlchemy?

  • Database abstraction
  • Query builder
  • Migration support
  • Multiple database support

Usage:

from sqlalchemy import create_engine
from alembic import alembic

Database Technologies

PostgreSQL

Purpose: Primary relational database

Why PostgreSQL?

  • ACID compliance
  • JSON support
  • Full-text search
  • Extensions

Usage:

from fluvius.data import PostgreSQLDriver

driver = PostgreSQLDriver(connection_string)

MongoDB

Purpose: Document database support

Why MongoDB?

  • Document storage
  • Flexible schema
  • Horizontal scaling
  • JSON-like documents

Usage:

from fluvius.data import MongoDBDriver

driver = MongoDBDriver(connection_string)

SQLite

Purpose: Development and testing

Why SQLite?

  • Zero configuration
  • File-based
  • Fast for development
  • Easy testing

Usage:

from fluvius.data import SQLiteDriver

driver = SQLiteDriver(database_path)

Async Technologies

asyncio

Purpose: Async runtime

Why asyncio?

  • Native Python async
  • High concurrency
  • Non-blocking I/O
  • Event loop

aiohttp / httpx

Purpose: Async HTTP client

Why aiohttp/httpx?

  • Async HTTP requests
  • Connection pooling
  • Timeout handling
  • SSL support

Background Processing

ARQ

Purpose: Redis-based job queue

Why ARQ?

  • Async job processing
  • Task scheduling
  • Retry logic
  • Redis backend

Usage:

from fluvius.worker import Worker, task

@task
async def process_payment(payment_id: str):
# Background processing
pass

Redis

Purpose: Job queue backend

Why Redis?

  • Fast in-memory store
  • Pub/sub support
  • Job queue
  • Caching

Authorization

Casbin

Purpose: Policy-based access control

Why Casbin?

  • RBAC support
  • ABAC support
  • Policy engine
  • Multiple backends

Usage:

from fluvius.casbin import CasbinEnforcer

enforcer = CasbinEnforcer()

Testing

pytest

Purpose: Testing framework

Why pytest?

  • Simple syntax
  • Fixtures
  • Parametrization
  • Plugins

Usage:

import pytest

@pytest.mark.asyncio
async def test_create_user():
# Test code
pass

pytest-asyncio

Purpose: Async test support

Why pytest-asyncio?

  • Async test support
  • Fixture support
  • Event loop management

Development Tools

Ruff

Purpose: Fast Python linter

Why Ruff?

  • Fast performance
  • Multiple rules
  • Auto-fix support
  • Modern Python

mypy

Purpose: Static type checking

Why mypy?

  • Type checking
  • IDE integration
  • Error detection
  • Type inference

Black (Optional)

Purpose: Code formatter

Why Black?

  • Consistent formatting
  • Auto-formatting
  • PEP 8 compliance

Deployment

Docker

Purpose: Containerization

Why Docker?

  • Consistent environments
  • Easy deployment
  • Isolation
  • Scalability

Docker Compose

Purpose: Multi-container orchestration

Why Docker Compose?

  • Local development
  • Service orchestration
  • Environment setup

Kubernetes (Optional)

Purpose: Container orchestration

Why Kubernetes?

  • Production deployment
  • Auto-scaling
  • Service mesh
  • Load balancing

Monitoring & Observability

Structured Logging

Purpose: Application logging

Why Structured Logging?

  • JSON logs
  • Searchable
  • Parseable
  • Integration with log aggregators

Prometheus (Optional)

Purpose: Metrics collection

Why Prometheus?

  • Time-series metrics
  • Alerting
  • Query language
  • Integration

OpenTelemetry (Optional)

Purpose: Distributed tracing

Why OpenTelemetry?

  • Request tracing
  • Performance monitoring
  • Service maps
  • Standard protocol

Package Management

pip

Purpose: Package installation

Standard Python package manager

uv (Optional)

Purpose: Fast package manager

Why uv?

  • Faster than pip
  • Better dependency resolution
  • Lock file support

Version Control

Git

Purpose: Version control

Standard version control system

CI/CD

GitHub Actions

Purpose: Continuous integration

Why GitHub Actions?

  • Integrated with GitHub
  • Easy configuration
  • Free for open source

GitLab CI (Optional)

Purpose: Alternative CI/CD

Why GitLab CI?

  • Integrated with GitLab
  • Flexible pipelines

Technology Choices Summary

CategoryTechnologyPurpose
LanguagePython 3.12+Core language
Web FrameworkFastAPIREST API
ValidationPydanticData validation
Database ORMSQLAlchemyDatabase abstraction
MigrationsAlembicSchema migrations
Async RuntimeasyncioAsync support
Job QueueARQBackground jobs
Cache/QueueRedisCaching & queues
AuthorizationCasbinAccess control
TestingpytestTest framework
LintingRuffCode quality
Type CheckingmypyStatic analysis
ContainerizationDockerDeployment
OrchestrationKubernetesProduction scaling

Compatibility

Python Versions

  • Minimum: Python 3.12
  • Recommended: Python 3.12+
  • Tested: Python 3.12, 3.13

Operating Systems

  • Linux: Fully supported
  • macOS: Fully supported
  • Windows: Supported (with WSL recommended)

Database Versions

  • PostgreSQL: 12+
  • MongoDB: 5.0+
  • SQLite: 3.35+

Next Steps