Skip to content

ChaokunHong/CARA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🐟 CARA Aquaculture Mobile App

Climate-smart Approach for Reducing Antimicrobial resistance

Flutter FastAPI PostgreSQL License

IoT-enabled mobile platform for Vietnamese shrimp farmers

Features β€’ Quick Start β€’ Architecture β€’ Development β€’ Roadmap


πŸ“± About

CARA is a research-grade mobile application designed for monitoring and reducing antimicrobial use in Vietnamese aquaculture systems. Built for Oxford University Clinical Research Unit (OUCRU) under ICARS Global funding.

Research Objectives

Goal Metric Target
πŸ”¬ Reduce antimicrobial use mg/kg biomass -30%
🌍 Mitigate greenhouse gas CHβ‚„, Nβ‚‚O emissions -20%
🦠 Decrease AMR genes qPCR abundance -40%
🐟 Maintain production FCR, survival rate Stable
πŸ’° Economic viability ROI Positive

πŸ“Έ App Screenshots

πŸ‘¨β€πŸŒΎ Farmer Interface (Glassmorphism Design)

Farmer Home
Home Dashboard
IoT monitoring priority
Real-time Monitoring
Real-time Monitoring
DO, pH, Temperature
Health Recording
Health Recording
Photo + Voice capture

πŸ”¬ Researcher Interface (Full Data Access)

Researcher Home
Research Dashboard
Comprehensive data view
AMU Recording
AMU Recording
Automatic mg/kg calculation
Data Collection
Data Collection
Triangulation validation

Key UI Features:

  • βœ… Glassmorphism design with semi-transparent cards
  • βœ… Network status indicator (green/red cloud icon)
  • βœ… Offline sync badge (shows pending records count)
  • βœ… Role-based interfaces (Farmer simple, Researcher comprehensive)
  • βœ… Vietnamese/English bilingual support
  • βœ… Real-time IoT data visualization

✨ Features

πŸ‘¨β€πŸŒΎ For Farmers (Vietnamese Shrimp Farmers)

🌑️ Real-time IoT Monitoring

  • DO (Dissolved Oxygen)
  • pH levels
  • Temperature
  • Conductivity
  • AI risk scoring (0-100)

πŸ“± Simple Data Recording

  • Photo capture
  • Voice recording
  • Health observations
  • Mortality tracking
  • Offline-first design

πŸ”” Smart Alerts

  • Low oxygen warnings
  • Temperature anomalies
  • Push notifications (<2min)
  • Vietnamese language

πŸ“Š Production Tracking

  • Biomass estimation
  • Feed tracking (FCR)
  • Cost monitoring
  • Harvest planning

πŸ”¬ For Researchers

πŸ“ˆ Data Collection

  • AMU records (automatic mg/kg)
  • Biomass sampling
  • Production parameters
  • Cost tracking
  • Lab results integration

βœ… Quality Control

  • Triangulation validation
  • Photo verification
  • Data completeness checks
  • QA status workflows

🎀 Participatory Evaluation

  • Interview recording
  • Acceptability scoring
  • Multilingual transcription

πŸ“Š Data Export

  • CSV export for R/Python
  • Complete audit trail
  • Quality metrics

πŸ—οΈ Architecture

Tech Stack

Backend

FastAPI (Python 3.11) β†’ PostgreSQL 15 + TimescaleDB
                      β†’ MinIO (S3-compatible storage)
                      β†’ EMQX MQTT (IoT broker)
                      β†’ Redis (cache + Celery)

Mobile App

Flutter 3.x β†’ Provider (state management)
           β†’ Hive (offline storage)
           β†’ Dio (HTTP client)
           β†’ Firebase Cloud Messaging

Infrastructure

Docker Compose β†’ 9 containers
              β†’ Nginx reverse proxy
              β†’ Let's Encrypt SSL
              β†’ Prometheus + Grafana

Project Structure

CARA_APP/
β”œβ”€β”€ backend/              # FastAPI backend services
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ api/v1/      # REST API endpoints
β”‚   β”‚   β”œβ”€β”€ models/      # SQLAlchemy ORM models
β”‚   β”‚   β”œβ”€β”€ services/    # Business logic layer
β”‚   β”‚   └── core/        # Config, security, database
β”‚   β”œβ”€β”€ Dockerfile
β”‚   └── requirements.txt
β”‚
β”œβ”€β”€ mobile_app/           # Flutter mobile application
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ main.dart    # Application entry point
β”‚   β”‚   β”œβ”€β”€ core/        # Core services & utilities
β”‚   β”‚   β”œβ”€β”€ features/    # Feature modules (home, auth, etc.)
β”‚   β”‚   └── shared/      # Reusable widgets & themes
β”‚   β”œβ”€β”€ ios/             # iOS platform configuration
β”‚   β”œβ”€β”€ android/         # Android platform configuration
β”‚   └── pubspec.yaml     # Flutter dependencies
β”‚
β”œβ”€β”€ infra/
β”‚   β”œβ”€β”€ docker/          # Docker Compose setup
β”‚   β”‚   β”œβ”€β”€ docker-compose.yml
β”‚   β”‚   └── init-db.sql
β”‚   └── nginx/           # Nginx reverse proxy config
β”‚
β”œβ”€β”€ scripts/             # Development automation
β”‚   β”œβ”€β”€ quickstart.sh    # One-command startup
β”‚   β”œβ”€β”€ run.sh           # Mobile app launcher
β”‚   └── verify_sprint1.sh
β”‚
└── docs/
    └── images/          # UI screenshots for README

Database Schema

Core Tables (10 tables)

farmers              -- Farmer profiles (name, phone, consent)
ponds                -- Pond metadata (species, volume, density)
amu_records          -- AMU tracking (auto mg/kg calculation)
biomass_estimates    -- Fish sampling data
production_parameters -- FCR, survival, yield
costs                -- Economic tracking
alerts               -- AI risk alerts
lab_results          -- qPCR AMR gene data
interviews           -- Participatory evaluation
audit_logs           -- Complete audit trail

Key Features:

  • βœ… Automatic mg/kg calculation (PostgreSQL computed column)
  • βœ… Multi-language enums (Vietnamese/English)
  • βœ… Complete audit trail for compliance
  • βœ… TimescaleDB for IoT time-series data

πŸš€ Quick Start

Prerequisites

πŸ“‹ Development Environment (Click to expand)

Already installed and verified:

  • βœ… Docker 27.4.0 & Docker Compose 2.30.3
  • βœ… Flutter 3.35.5 / Dart 3.9.0
  • βœ… Xcode 16.4 + CocoaPods 1.16.2
  • βœ… Android Studio Ladybug 2024.2.1
  • βœ… Ruby 3.4.0 + ffi 1.17.0
  • βœ… Homebrew 4.4.14

One-Command Setup

# Clone repository
git clone https://github.com/ChaokunHong/CARA.git
cd CARA

# Start all backend services (9 Docker containers)
./scripts/quickstart.sh

# Run mobile app
./run.sh  # Auto-detects available devices

That's it! The script will:

  1. βœ… Start PostgreSQL, TimescaleDB, MinIO, EMQX, Redis
  2. βœ… Initialize database schema with sample data
  3. βœ… Verify all services are healthy
  4. βœ… Launch Flutter app on selected device

Available Services

Service URL Credentials
API Documentation http://localhost:8000/docs -
MinIO Console http://localhost:9001 minioadmin / minioadmin123
EMQX Dashboard http://localhost:18083 admin / cara_admin123
PostgreSQL localhost:5432 cara_user / cara_password
Backend API http://localhost:8000 -

Environment Configuration

# Copy example environment file
cp backend/.env.example backend/.env

# Edit configuration (optional)
nano backend/.env

Key variables:

# Database
POSTGRES_URI=postgresql://cara_user:cara_password@localhost:5432/cara_db

# MinIO (S3-compatible storage)
MINIO_ENDPOINT=localhost:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin123

# JWT Authentication
JWT_SECRET=your-secret-key-here
JWT_ALGORITHM=HS256
JWT_ACCESS_TOKEN_EXPIRE_MINUTES=30

# EMQX MQTT Broker
EMQX_URL=mqtt://localhost:1883

πŸ’» Development

Backend Development

cd backend

# Install dependencies
pip install -r requirements.txt

# Run database migrations
alembic upgrade head

# Start development server
uvicorn app.main:app --reload --port 8000

# Run tests
pytest tests/ -v --cov=app

# Check API health
curl http://localhost:8000/health

Mobile App Development

cd mobile_app

# Install dependencies
flutter pub get

# Generate Hive type adapters
flutter pub run build_runner build --delete-conflicting-outputs

# Run on iOS simulator
flutter run -d "iPhone 15 Pro"

# Run on Android emulator
flutter run -d "Pixel 8"

# Code analysis
flutter analyze

# Run tests
flutter test

Test Accounts

{
  "farmer": {
    "phone": "+84901234567",
    "name": "Nguyen Van A",
    "role": "farmer"
  },
  "researcher": {
    "phone": "+84903456789",
    "name": "Tran Thi B",
    "role": "researcher"
  }
}

πŸ“ˆ Development Roadmap

βœ… Sprint 1-2 (Completed)

View Sprint 1 details

Infrastructure Setup

  • Monorepo project structure
  • Docker Compose environment (9 containers)
  • PostgreSQL + TimescaleDB database
  • MinIO object storage
  • EMQX MQTT broker
  • FastAPI backend with JWT auth
  • Complete database schema (10 tables)
  • iOS & Android platform setup
View Sprint 2 details

User Interface & Offline Foundation

  • Dual role system (Farmer/Researcher)
  • Glassmorphism UI design
  • Photo capture + preview
  • Offline queue system (Hive + connectivity_plus)
  • Auto-sync when network recovers
  • Network status indicator with sync badge
  • AudioService & FileUploadService preparation

🚧 Sprint 3 (Current - Week 3)

IoT Real-time Monitoring

  • EMQX MQTT integration
  • DO, pH, temperature, conductivity display
  • TimescaleDB time-series storage
  • Pond dashboard with live data
  • AI risk scoring (0-100 scale)
  • Smart alert triggers (<2min push)

πŸ“… Upcoming Sprints

Sprint Focus Key Deliverables
4 Alert System Push notifications, alert history, acknowledgment
5 AMU & Biomass Full AMU workflow, biomass sampling, mg/kg auto-calc
6 Participatory Evaluation Interview recording, acceptability scoring
7 Data Export CSV export, lab results, sample tracking
8 Security & QA Triangulation validation, audit logging
9 Performance Load testing, production deployment, monitoring
10 Pilot Launch 6 farmers onboarding, training materials

πŸ§ͺ Testing

Backend Tests

# Unit tests with coverage
pytest tests/ -v --cov=app --cov-report=html

# Integration tests
pytest tests/integration/ -v

# Load testing (Apache Bench)
ab -n 1000 -c 10 http://localhost:8000/health

Mobile App Tests

# Unit tests
flutter test

# Widget tests
flutter test test/widget_test.dart

# Integration tests
flutter test integration_test/

# Code coverage
flutter test --coverage
genhtml coverage/lcov.info -o coverage/html

End-to-End Tests

# Full workflow test
./scripts/test_e2e.sh

# Performance benchmarks
flutter drive --target=test_driver/perf_test.dart

πŸ“Š Performance Targets

Metric Target Current
API Response Time (P95) <500ms ~100ms βœ…
Mobile App Launch <3s ~2s βœ…
Offline Queue Capacity 100+ records 200+ βœ…
IoT Data Latency <2min TBD 🚧
Photo Upload Time <5s TBD 🚧
Test Coverage >80% ~70% 🟑

πŸ”’ Security

  • Authentication: JWT with refresh tokens
  • Password Hashing: Bcrypt (cost factor 12)
  • Transport Security: TLS 1.2+ enforced
  • Rate Limiting: 100 requests/minute per IP
  • Audit Logging: Complete CRUD trail
  • Row-Level Security: Farmer data isolation
  • Secret Management: Environment variables only
  • CORS: Whitelist origins only

πŸ“š Documentation

Resource Description
API Documentation Interactive Swagger UI (FastAPI)
API ReDoc Alternative API documentation
MinIO Console Object storage management
EMQX Dashboard MQTT broker monitoring

🀝 Contributing

This is a research project under active development. For development guidelines:

  1. Follow existing code patterns and project structure
  2. Write tests for new features (>80% coverage)
  3. Use English for all code, comments, and commit messages
  4. Ensure all tests pass before submitting changes
  5. Update README.md if adding new features

πŸ“„ License

This is a research project under Oxford University Clinical Research Unit (OUCRU). Not for commercial use without permission.


πŸ‘₯ Team

Research Team

  • Lead Researcher: Sonia Lewycka (slewycka@oucru.org)
  • Project: CARA - Climate-smart AMR Reduction in Aquaculture
  • Funding: ICARS Global

Technical Team

  • Technical Lead: Chaokun Hong
  • Backend: FastAPI + PostgreSQL + TimescaleDB
  • Mobile: Flutter + Dart
  • Infrastructure: Docker + Nginx + Let's Encrypt

🌟 Acknowledgments

  • Oxford University Clinical Research Unit (OUCRU)
  • ICARS Global Funding Program
  • Vietnamese Aquaculture Farmers (Pilot Participants)
  • Open Source Community (Flutter, FastAPI, PostgreSQL)

Built with ❀️ for sustainable aquaculture

⬆ Back to Top

About

CARA Aquaculture Mobile App - IoT monitoring system for Vietnamese farmers

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published