A comprehensive web application for plant phenotyping data management, built with Next.js, Supabase, and MinIO.
Choose your setup:
- Development Setup - For local development
- Production Setup - For production deployment
Before starting, ensure you have:
- Docker installed
- Python 3.8 or higher
bloom-v2/
├── web/ # Next.js frontend application
├── langchain/ # LangChain AI agent (ReAct agent with chat API)
├── bloommcp/ # FastMCP server (Bloom analysis tools)
├── supabase/ # Supabase configuration and migrations
│ └── migrations/ # Database migration files
├── minio/ # MinIO storage configuration
│ └── init/ # Bucket initialization scripts
├── scripts/ # Utility scripts for data loading
├── test_data/ # Sample data for testing
├── docker-compose.dev.yml # Development stack configuration
├── docker-compose.prod.yml # Production stack configuration
└── Makefile # Helper commands
- Frontend: Next.js (hot reload) - http://localhost:3000
- Database: PostgreSQL via Supabase -
localhost:${POSTGRES_HOST_PORT:-5432} - Storage: MinIO Console - http://localhost:9101
- AI Agent: LangChain agent - http://localhost:5002
- MCP Server: Bloom FastMCP (Bloom tools) - http://localhost:8811
- Swagger UI: PostgREST API browser - http://localhost:8085
- Studio: Supabase Studio - http://localhost:55323
- Frontend: Next.js (optimized build) - http://yourdomain.com
- Database: PostgreSQL via Supabase
- Storage: MinIO S3
- AI Agent: LangChain agent
- MCP Server: Bloom FastMCP (Bloom tools)
- All services behind Nginx reverse proxy
make dev-up # Start development stack
make dev-down # Stop development stack
make prod-up # Start production stack
make prod-down # Stop production stack
make dev-logs # View development logs
make prod-logs # View production logsmake init # Generate .env.dev from .env.dev.example (fresh secrets)
make migrate-local # Apply all migrations to the local dev DB
make check # Verify the stack: roles, schemas, migrations, id sequences
make verify-dev # Clean reset -> up -> migrate -> check (destructive)
make test-integration # Run integration tests against the local stack
make reset-storage # Reset database and storage (DEV only)
make load-test-data # Load CSV test data into databaseThe full first-run workflow (WSL2 notes, port overrides, etc.) lives in DEV_SETUP.md — the single source of truth for getting started.
make upload-images # Upload test images to MinIO
make create-bucket BUCKET=name [PUBLIC=true] # Create new bucket
make list-buckets # List all storage bucketssee [DEV_SETUP.md](./DEV_SETUP.md)
see [PROD_SETUP.md](./PROD_SETUP.md)
The repository includes sample test data:
- 14 CSV files with reference data
- 72 sample plant scan images
- Scripts to load data automatically
Load test data with:
make load-test-data # Loads CSV data into database
make upload-images # Uploads images to MinIO/S3For issues and questions:
- Review logs with
make dev-logsormake prod-logs - Open an issue on GitHub
Last Updated: March 2026