A Python FastAPI data analytics platform with CSV upload, data preview, statistical analysis (summary, correlation, distribution, outlier detection), JWT authentication, and auto-generated OpenAPI documentation.

- CSV Upload & Preview — Upload datasets, preview first N rows, view column metadata
- Statistical Summary — Row/column counts, dtypes, missing values, numeric stats, categorical stats
- Correlation Analysis — Full correlation matrix with strong-pair detection
- Distribution Analysis — Histograms for numeric, value counts for categorical columns
- Outlier Detection — IQR-based outlier detection across all numeric columns
- Top Value Analysis — Frequency distribution for any column
- JWT Authentication — Secure register/login with hashed passwords
- Auto-Generated Docs — Swagger UI at
/docs, ReDoc at /redoc
- SQLAlchemy ORM — Clean data models with relationships
- CORS Enabled — Ready for frontend integration
| Component |
Technology |
| Language |
Python 3.11+ |
| Framework |
FastAPI 0.110 |
| ORM |
SQLAlchemy 2.0 |
| Data |
Pandas, NumPy |
| Auth |
python-jose (JWT), Passlib (bcrypt) |
| Validation |
Pydantic v2 |
| Database |
SQLite |
| Docs |
Swagger UI, ReDoc (built-in) |
# Create virtual environment
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Run the server
uvicorn main:app --reload --port 8000
| Method |
Endpoint |
Description |
| POST |
/api/auth/register |
Register a new user |
| POST |
/api/auth/login |
Login & get JWT token |
| GET |
/api/auth/me |
Get current user profile |
| Method |
Endpoint |
Description |
| GET |
/api/datasets |
List user's datasets |
| POST |
/api/datasets/upload |
Upload a CSV file |
| GET |
/api/datasets/{id} |
Get dataset metadata |
| PUT |
/api/datasets/{id} |
Update name/description |
| DELETE |
/api/datasets/{id} |
Delete dataset & file |
| GET |
/api/datasets/{id}/preview |
Preview first N rows |
| Method |
Endpoint |
Description |
| POST |
/api/analytics/{id}/analyze |
Run analysis job |
| GET |
/api/analytics/{id}/jobs |
List analysis history |
Analysis Types: summary, correlation, distribution, outliers, top_values
# Register
curl -X POST http://localhost:8000/api/auth/register \
-H "Content-Type: application/json" \
-d '{"username":"analyst","email":"analyst@test.com","password":"password123"}'
# Upload CSV
curl -X POST http://localhost:8000/api/datasets/upload \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "name=Sales Data" \
-F "file=@sales.csv"
# Run summary analysis
curl -X POST http://localhost:8000/api/analytics/DATASET_ID/analyze \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"job_type":"summary"}'
datapulse-api/
├── main.py # FastAPI app setup
├── config.py # Configuration
├── database.py # SQLAlchemy engine & session
├── models.py # ORM models (User, Dataset, AnalyticsJob)
├── schemas.py # Pydantic request/response schemas
├── auth.py # JWT auth utilities
├── routers/
│ ├── auth_router.py # Authentication endpoints
│ ├── datasets.py # Dataset CRUD + upload + preview
│ └── analytics.py # Analytics engine (5 analysis types)
├── requirements.txt
└── .gitignore
dev2production.com — We build production-ready software.