SIH 25 Problem Statement ID: 25040
Organization: Ministry of Earth Sciences (MoES) - Indian National Centre for Ocean Information Services (INCOIS)
FloatChat is an enterprise-grade AI-powered conversational system that democratizes access to ARGO oceanographic data through natural language processing and voice interaction. Users can explore complex ocean datasets through intuitive conversations in multiple languages (English/Hindi).
- 🤖 AI-Powered Chat: Natural language queries using Google Gemini Studio API
- 🎤 Voice Interface: Multilingual voice input/output with real-time processing
- 🗺️ Interactive Visualizations: Geospatial maps and scientific charts
- 📊 6-Year Dataset: 2,056 NetCDF files (9.77GB) from 2020-2025
- 🔍 RAG Pipeline: Vector similarity search with FAISS/ChromaDB
- 🌐 Multilingual: Support for English, Hindi, and regional languages
- 📈 Real-time Analytics: Temporal trend analysis and pattern recognition
- Python 3.11+
- PostgreSQL 15+ with PostGIS
- Redis 6+
- Docker & Docker Compose
- Clone the repository
git clone https://github.com/your-org/floatchat.git
cd floatchat- Set up virtual environment
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows- Install dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt # For development- Configure environment
cp env.example .env
# Edit .env with your API keys and database credentials- Start services
docker-compose up -d postgres redis- Initialize database
python scripts/init_database.py
python scripts/load_sample_data.py- Run the application
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000- Access the application
- API Documentation: http://localhost:8000/docs
- Frontend Interface: http://localhost:8501
- Health Check: http://localhost:8000/health
┌─────────────────────────────────────────────────────────────────┐
│ FloatChat System │
├─────────────────────────────────────────────────────────────────┤
│ Frontend Layer (Streamlit/Dash) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Voice UI │ │ Chat Widget │ │ Visualization │ │
│ │ - Microphone │ │ - Text Input │ │ - Maps │ │
│ │ - Speaker │ │ - History │ │ - Charts │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ API Gateway Layer (FastAPI) │
│ /api/chat | /api/voice/* | /api/floats | /api/visualize │
├─────────────────────────────────────────────────────────────────┤
│ AI Processing Layer │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Speech Engine │ │ Gemini LLM │ │ RAG Pipeline │ │
│ │ - STT/TTS │ │ - Query Parse │ │ - Vector DB │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ Data Layer │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ PostgreSQL │ │ Vector DB │ │ ARGO Data │ │
│ │ + PostGIS │ │ FAISS/Chroma │ │ 2,056 Files │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
- Files: 2,056 NetCDF files
- Size: 9.77 GB
- Coverage: Daily ocean profiles
- Parameters: Temperature, Salinity, Pressure, BGC data
- Regions: Focus on Indian Ocean with global coverage
- "Show me temperature trends in Arabian Sea over the last 3 years"
- "Compare salinity patterns between 2020 and 2024 monsoon seasons"
- "मुझे बंगाल की खाड़ी में तापमान प्रोफाइल दिखाओ" (Hindi)
- "What were ocean conditions during Cyclone Amphan in 2020?"
floatchat/
├── app/ # Main application code
│ ├── main.py # FastAPI app entry point
│ ├── core/ # Core configuration
│ ├── api/ # API routes
│ ├── services/ # Business logic
│ ├── models/ # Data models
│ └── utils/ # Utilities
├── frontend/ # Frontend application
├── data/ # Data storage
├── scripts/ # Utility scripts
├── tests/ # Test suite
├── docs/ # Documentation
├── docker/ # Docker configurations
└── .github/ # CI/CD workflows
# Run tests
pytest tests/ -v --cov=app
# Code formatting
black app/ tests/
isort app/ tests/
# Linting
flake8 app/ tests/
mypy app/
# Security scan
bandit -r app/
safety check
# Start development server
uvicorn app.main:app --reload
# Database migrations
alembic upgrade head
# Load test data
python scripts/load_sample_data.pyPOST /api/v1/chat/query- Process natural language queriesGET /api/v1/chat/history- Retrieve conversation historyPOST /api/v1/chat/feedback- Submit user feedback
POST /api/v1/voice/transcribe- Speech-to-text conversionPOST /api/v1/voice/synthesize- Text-to-speech generationGET /api/v1/voice/languages- Supported languages
GET /api/v1/floats/search- Search floats by criteriaGET /api/v1/floats/{float_id}- Get specific float dataGET /api/v1/floats/{float_id}/profiles- Get float profiles
POST /api/v1/visualize/map- Generate map visualizationsPOST /api/v1/visualize/profile- Create profile plotsPOST /api/v1/visualize/timeseries- Time-series charts
- Unit Tests: Fast, isolated component tests
- Integration Tests: Component interaction tests
- E2E Tests: End-to-end workflow validation
- Performance Tests: Load and stress testing
# All tests
pytest
# Specific test category
pytest tests/unit/
pytest tests/integration/
pytest tests/e2e/
# With coverage
pytest --cov=app --cov-report=html
# Performance tests
pytest tests/performance/ -v# Build and run
docker-compose up -d
# Scale services
docker-compose up -d --scale app=3
# View logs
docker-compose logs -f app# Build production image
docker build -t floatchat:latest .
# Deploy to Railway/Render
# See deployment documentation in docs/deployment/- API Documentation - Comprehensive API reference
- User Guide - End-user documentation
- Developer Guide - Development setup and guidelines
- Deployment Guide - Production deployment instructions
- JWT-based authentication
- API rate limiting
- Input validation and sanitization
- HTTPS enforcement
- Security headers (CSP, HSTS, etc.)
- SQL injection prevention
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
See CONTRIBUTING.md for detailed guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
- INCOIS for oceanographic data and domain expertise
- ARGO Program for global ocean observation data
- Google Gemini for AI/LLM capabilities
- Open Source Community for excellent tools and libraries
- Issues: GitHub Issues
- Documentation: Project Wiki
- Email: floatchat-support@your-org.com
Built with ❤️ for the oceanographic community and Smart India Hackathon 2025