Modern enterprise platform for Italian statistical data processing with production-grade FastAPI backend, comprehensive security, and Docker deployment.
Osservatorio is developing a modern platform for Italian statistical data access. The core REST API and database layer are functional, with ISTAT data integration and Kubernetes infrastructure in development.
- ๐ Core API: FastAPI backend functional with JWT authentication
- โก Database: DuckDB analytics + SQLite metadata hybrid working
- ๐ก๏ธ Security: JWT auth, rate limiting, security middleware implemented
- ๐ณ Docker: Multi-stage builds ready (image deployment untested)
- โธ๏ธ Kubernetes: Infrastructure manifests complete (cluster deployment untested)
- ๐ค Export Formats: Universal data export (CSV, JSON, Parquet) implemented
# Clone and run with Docker Compose
git clone https://github.com/AndreaBozzo/Osservatorio.git
cd Osservatorio
docker-compose up -d
# Access services:
# - FastAPI: http://localhost:8000
# - Dashboard: http://localhost:8501
# - API Docs: http://localhost:8000/docs
# 1. Clone and setup
git clone https://github.com/AndreaBozzo/Osservatorio.git
cd Osservatorio
python -m venv venv && source venv/bin/activate # or venv\Scripts\activate on Windows
# 2. Install with modern dependency management
pip install -e .[dev] # Development dependencies
# or pip install -e .[dev,performance,security] # All optional dependencies
# 3. Run services
make test-fast # Quick test suite
python -m uvicorn src.api.fastapi_app:app --reload # FastAPI server
streamlit run dashboard/app.py # Dashboard
# Test FastAPI endpoint
curl http://localhost:8000/health
# Or use Python client
python -c "from src.api.production_istat_client import ProductionIstatClient; client=ProductionIstatClient(); print('โ
System ready:', client.get_status()['status'])"
Osservatorio uses a microservices-ready architecture with production patterns:
๐ FastAPI REST API (OpenAPI/Swagger docs)
โ (Security Middleware + JWT Auth)
๐ Business Logic Layer (Circuit Breakers + Rate Limiting)
โ (Async Processing)
๐ Data Layer: DuckDB Analytics + SQLite Metadata + Redis Cache
โ (Smart Routing + Fallback)
๐ฎ๐น ISTAT SDMX API (509+ datasets)
- FastAPI Backend: Modern async web framework with automatic OpenAPI documentation
- Security Layer: JWT authentication, OWASP-compliant middleware, rate limiting
- Data Processing: DuckDB for analytics, SQLite for metadata, Redis for caching
- DevOps Ready: Docker containers, GitHub Actions CI/CD, comprehensive testing
- Monitoring: Health checks, performance metrics, security scanning
# REST API access
import requests
response = requests.get("http://localhost:8000/api/v1/dataflows?limit=10")
dataflows = response.json()
# Or use Python client
from src.api.production_istat_client import ProductionIstatClient
client = ProductionIstatClient(enable_cache_fallback=True)
dataset = client.fetch_dataset("DCIS_POPRES1") # Population data
- OpenAPI/Swagger: Interactive API docs at
/docs
endpoint - RESTful Design: Standard HTTP methods with JSON responses
- Authentication: JWT token-based security with API key support
- Rate Limiting: Fair usage policies with intelligent throttling
- Container Ready: Multi-stage Docker builds for development and production
- Basic CI: GitHub Actions with unit testing and code quality checks
- Security First: Bandit security scanning, pre-commit hooks
- Monitoring: Health checks, performance metrics, structured logging
- Python 3.9-3.12: Multi-version compatibility with matrix testing
- FastAPI Framework: High-performance async web framework
- Docker Deployment: Multi-stage builds with development and production targets
- Basic CI: Automated unit testing and code quality checks
- JWT Authentication: Secure token-based authentication
- OWASP Middleware: Security headers and best practices
- Bandit Scanning: Automated security vulnerability detection
- Dependency Monitoring: Automated vulnerability checking with Safety
- Async Processing: Non-blocking operations for better throughput
- Circuit Breakers: Automatic fault detection and recovery
- Rate Limiting: Configurable request throttling
- Health Monitoring: Comprehensive system status and metrics
- Redis Caching: High-performance distributed caching
- Architecture Overview - System design and patterns
- Production Client API - Complete API reference
- Project Status - Current development state
- Developer Guide - Commands and development context
- DevOps Guide - Deployment with Docker Compose
We welcome contributions! Here's how to get started:
- Check the Issues for tasks that need help
- Read our Contributing Guide for development standards
- Join Discussions for questions and ideas
- Test First: Run
pytest tests/ -v
to ensure everything works
- Modern Tooling: ruff, black, mypy, and pre-commit hooks
- Comprehensive Testing: Unit, integration, and performance tests
- Security First: Bandit scanning, dependency checking, OWASP compliance
- Basic CI Integration: GitHub Actions with unit testing and code quality
- ๐๏ธ Government Agencies: Access official Italian statistics for policy making
- ๐ข Businesses: Market research and economic analysis with reliable data
- ๐ Researchers: Academic research with comprehensive Italian datasets
- ๐ Analysts: BI dashboards and reporting with PowerBI integration
- ๐ Journalists: Data journalism with verified official sources
Development Status Achieved:
- โ FastAPI Backend: Modern async API with OpenAPI docs functional
- โ Database Layer: DuckDB + SQLite hybrid working
- โ Authentication: JWT auth, rate limiting, security middleware
- โ Code Quality: ruff, black, pre-commit hooks, security scanning
- โ Docker Build: Multi-stage Dockerfile (container deployment untested)
โ ๏ธ Kubernetes: Complete manifests created (cluster deployment untested)โ ๏ธ CI Pipeline: Basic unit tests (integration/deployment testing limited)
Core functionality working, infrastructure and BI integrations need validation.
- ๐ Issues: GitHub Issues for bug reports
- ๐ฌ Discussions: GitHub Discussions for questions
- ๐ Documentation: docs/ folder for comprehensive guides
- ๐ฏ Live Dashboard: osservatorio-dashboard.streamlit.app
MIT License - see LICENSE file for details.
๐ฏ Ready to explore Italian statistical data?
๐ Run docker-compose up -d
or make install && make test-fast
to get started
Built with modern Python, FastAPI, and Docker for the Italian data community