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