Your AutoDataLab project now has a complete production-grade backend architecture:
- ✅ FastAPI Backend - REST API server (port 8000)
- ✅ Celery Worker - Background job processor
- ✅ PostgreSQL - Database (port 5432)
- ✅ Redis - Cache and message broker (port 6379)
- ✅ MinIO - S3-compatible storage (ports 9000, 9001)
Major_project/
├── backend/
│ ├── app/
│ │ ├── api/ # API endpoints (upload, jobs)
│ │ ├── core/ # Configuration
│ │ ├── worker/ # Celery tasks
│ │ ├── main.py # FastAPI application
│ │ └── storage.py # Job storage
│ ├── Dockerfile # Backend container
│ ├── requirements.txt # Python dependencies
│ └── README.md # Backend documentation
├── project-frontend/ # React frontend (already configured)
├── docker-compose.yml # All services orchestration
├── .env # Environment variables
├── start-dev.bat # Windows quick start
├── start-dev.sh # Linux/Mac quick start
├── QUICKSTART.md # Step-by-step setup guide
├── PRODUCTION_GUIDE.md # Production deployment guide
└── README.md # Project overview
POST /api/v1/upload- Upload CSV and create jobGET /api/v1/jobs/{job_id}/status- Get job status and resultsGET /docs- Interactive API documentation (Swagger)
- ✅ Updated
src/api/client.tsto connect to real backend - ✅ Can switch between MSW mocks and real API via environment variable
- ✅ Ready to use real backend for uploads and job tracking
# Run the setup script
.\start-dev.bat
# In a new terminal, start frontend
cd project-frontend
npm install
npm run dev# Start backend services
docker-compose build
docker-compose up -d
# Start frontend
cd project-frontend
npm install
npm run devAfter starting services:
| Service | URL | Notes |
|---|---|---|
| Frontend | http://localhost:5173 | React UI |
| Backend API | http://localhost:8000 | FastAPI |
| API Docs | http://localhost:8000/docs | Interactive Swagger UI |
| MinIO | http://localhost:9001 | Storage console (minioadmin/minioadmin) |
- Open http://localhost:5173
- Navigate to Upload page
- Upload a CSV file
- Watch real-time progress as the job runs
- View the analysis with:
- Dataset summary
- Data profiling report
- Cleaned CSV download
- Frontend sends file to
POST /api/v1/upload - Backend saves file and creates job
- Celery worker picks up the job:
- Reads CSV with pandas
- Drops duplicates
- Generates profiling report with ydata-profiling
- Uploads artifacts to MinIO
- Updates job status
- Frontend polls
GET /api/v1/jobs/{id}/status - User sees progress and can view/download results
# All services
docker-compose logs -f
# Specific service
docker-compose logs -f backend
docker-compose logs -f worker
# Frontend (in npm terminal)
# Logs appear automatically# List all containers
docker-compose ps
# Should show all as "Up" or "running"# Health check
curl http://localhost:8000
# API docs (open in browser)
start http://localhost:8000/docs- Edit files in
backend/app/ - Changes auto-reload (volume mounted)
- Check logs:
docker-compose logs -f backend
- Edit files in
project-frontend/src/ - Vite hot-reloads automatically
- Check browser console for errors
- Create route in
backend/app/api/your_file.py - Add router to
backend/app/main.py - Update frontend to call new endpoint
- Test in Swagger UI first
- Add task function in
backend/app/worker/tasks.py - Call with
.delay()from API endpoint - Check worker logs to debug
- QUICKSTART.md - Detailed setup guide with troubleshooting
- PRODUCTION_GUIDE.md - Production deployment roadmap
- backend/README.md - Backend-specific documentation
- README.md - Project overview
- ✅ Run the quick start
- ✅ Upload a test CSV file
- ✅ Verify job processing works
- ✅ Check MinIO console to see artifacts
- Customize data processing in
backend/app/worker/tasks.py - Add ML model training (scikit-learn)
- Enhance report generation
- Add more frontend features
- Set up AWS account
- Follow PRODUCTION_GUIDE.md
- Deploy to staging environment
- Add authentication (Auth0/Cognito)
- Deploy to production
→ Start Docker Desktop and wait for it to fully initialize
→ Stop other services: netstat -ano | findstr :8000
→ Or change port in docker-compose.yml
→ Check backend logs: docker-compose logs backend
→ Verify backend is up: http://localhost:8000
→ Check worker logs: docker-compose logs -f worker
→ Restart: docker-compose restart worker
→ Check npm install completed successfully
→ Verify .env exists in project-frontend/
→ Check browser console for errors
- FastAPI: https://fastapi.tiangolo.com/tutorial/
- Celery: https://docs.celeryproject.org/en/stable/
- Docker Compose: https://docs.docker.com/compose/
- ydata-profiling: https://docs.profiling.ydata.ai/
- Use API docs at http://localhost:8000/docs to test endpoints before frontend
- Check worker logs when jobs seem stuck
- MinIO console is useful to verify artifacts are uploaded
- Keep services running - no need to restart Docker often
- Git commit often - especially before major changes
Run through this to verify everything works:
- Docker Desktop is running
-
docker-compose psshows all services as "Up" - http://localhost:8000 returns JSON response
- http://localhost:8000/docs shows Swagger UI
- http://localhost:5173 loads frontend
- Can upload CSV file
- Job status page shows progress
- Worker processes job (check logs)
- Can view analysis page with results
- Can download cleaned CSV
- MinIO console shows uploaded files
Everything is set up and ready to go. The system is:
✅ Production-grade - Proper service separation, queue system, storage ✅ Scalable - Can add more workers, use real S3, deploy to cloud ✅ Developer-friendly - Hot reload, volume mounts, good logging ✅ Well-documented - Multiple guides for different needs
Start with: .\start-dev.bat
Questions? Check:
- QUICKSTART.md for detailed setup
- PRODUCTION_GUIDE.md for architecture
- Logs:
docker-compose logs -f
Happy coding! 🎉
Last updated: November 2025