{"id":25976001,"url":"https://github.com/amrit-dash/coffee-mapper-web","last_synced_at":"2026-05-02T22:40:28.849Z","repository":{"id":277462809,"uuid":"932504706","full_name":"amrit-dash/coffee-mapper-web","owner":"amrit-dash","description":"A comprehensive web dashboard application built with Flutter for tracking and managing coffee plantations in Koraput. The application provides real-time monitoring, data visualization, and management tools for coffee plantation initiatives.","archived":false,"fork":false,"pushed_at":"2025-09-08T06:39:51.000Z","size":11206,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-08T08:27:41.818Z","etag":null,"topics":["firebase","firebase-auth","firebase-firestore","firebase-hosting","flutter","flutter-web","flutter-web-app","google-maps-api"],"latest_commit_sha":null,"homepage":"https://coffeemapper.web.app","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amrit-dash.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-14T02:42:24.000Z","updated_at":"2025-09-08T06:39:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"a34dae77-c45d-47b2-9236-e7400719b21b","html_url":"https://github.com/amrit-dash/coffee-mapper-web","commit_stats":null,"previous_names":["amrit-dash/coffee-mapper-web"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/amrit-dash/coffee-mapper-web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amrit-dash%2Fcoffee-mapper-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amrit-dash%2Fcoffee-mapper-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amrit-dash%2Fcoffee-mapper-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amrit-dash%2Fcoffee-mapper-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amrit-dash","download_url":"https://codeload.github.com/amrit-dash/coffee-mapper-web/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amrit-dash%2Fcoffee-mapper-web/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279181400,"owners_count":26120948,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-16T02:00:06.019Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["firebase","firebase-auth","firebase-firestore","firebase-hosting","flutter","flutter-web","flutter-web-app","google-maps-api"],"created_at":"2025-03-05T03:32:58.087Z","updated_at":"2025-10-16T11:03:16.450Z","avatar_url":"https://github.com/amrit-dash.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Coffee Mapper Web Dashboard 🌱☕\n\n\u003cdiv align=\"center\"\u003e\n\n![Coffee Mapper Logo](https://i.ibb.co/zWyCyM2x/logo-white.png)\n\n\nA comprehensive web dashboard application built with Flutter for tracking and managing coffee plantations in Koraput. The application provides real-time monitoring, data visualization, and management tools for coffee plantation initiatives.\n\n[![Flutter](https://img.shields.io/badge/Flutter-^3.5.4-blue?style=for-the-badge\u0026logo=flutter\u0026logoColor=white\u0026labelColor=02569B)](https://flutter.dev/)\n[![Dart](https://img.shields.io/badge/Dart-^3.0.0-blue?style=for-the-badge\u0026logo=dart\u0026logoColor=white\u0026labelColor=0175C2)](https://dart.dev)\n[![Firebase](https://img.shields.io/badge/Firebase-Enabled-orange?style=for-the-badge\u0026logo=firebase\u0026logoColor=white\u0026labelColor=FFCA28)](https://firebase.google.com/)\n[![License](https://img.shields.io/badge/License-MIT-green?style=for-the-badge\u0026logo=license\u0026logoColor=white\u0026labelColor=34D058)](LICENSE)\n[![PRs](https://img.shields.io/badge/PRs-welcome-brightgreen?style=for-the-badge\u0026logo=github\u0026logoColor=white\u0026labelColor=238636)](CONTRIBUTING.md)\n[![Developer](https://img.shields.io/badge/Developer-Amrit_Dash-blue?style=for-the-badge\u0026logo=about.me\u0026logoColor=white\u0026labelColor=00A98F)](https://about.me/amritdash)\n[![Twitter Follow](https://img.shields.io/twitter/follow/amritdash?style=for-the-badge\u0026logo=twitter\u0026logoColor=1DA1F2\u0026labelColor=white)](https://twitter.com/amritdash)\n[![Build](https://img.shields.io/github/actions/workflow/status/amrit-dash/coffee-mapper-web/flutter.yml?branch=main\u0026style=for-the-badge\u0026logo=github-actions\u0026logoColor=white\u0026labelColor=2088FF)](https://github.com/amrit-dash/coffee-mapper-web/actions)\n\n[Features](#-features) • [Installation](#-getting-started) • [Contributing](#-contributing) • [Support](#-support)\n\n\u003cdiv align=\"center\"\u003e\n\n### 🌐 Live Deployments\n\n[![Production](https://img.shields.io/badge/Production-Live-success.svg)](https://coffeemapper.web.app)\n[![Development](https://img.shields.io/badge/Development-Live-yellow.svg)](https://coffee-mapper-dashboard.web.app)\n\nTry out our [Production Environment](https://coffeemapper.web.app) or [Development Environment](https://coffee-mapper-dashboard.web.app)\n\n\u003c/div\u003e\n\n\u003c/div\u003e\n\n## ✨ Features\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"https://i.ibb.co/LdKkn58s/image-2025-02-14-073354846.png\" alt=\"Dashboard Preview\" width=\"800px\"/\u003e\n\u003c/div\u003e\n\n### 📊 Real-time Dashboard\n  - 📈 Live metrics and statistics\n  - 📊 Interactive data visualization\n  - 🎯 Comprehensive plantation overview\n  - 📱 Progress tracking and monitoring\n\n### 🌿 Plantation Management\n  - ☕ Coffee plantation tracking\n  - 🌳 Shade tree management\n  - 📏 Area and perimeter calculations\n  - 🗺️ Geolocation mapping\n\n### 📋 Data Filtering \u0026 Analysis\n  - 🔍 Multi-level filtering (District, Block, Village, Panchayat)\n  - 📑 Region-based categorization\n  - 📊 Performance metrics\n  - 📈 Survival rate tracking\n\n### 👥 User Management\n  - 🔐 Secure authentication\n  - 👮 Role-based access control\n  - 👨‍💼 Admin dashboard\n  - 📝 User activity tracking\n\n### 🗺️ Interactive Maps\n  - 🌍 Google Maps integration\n  - 📍 Polygon visualization\n  - 🚩 Boundary mapping\n  - 📌 Location-based insights\n\n### 📸 Media Management\n  - 🖼️ Image galleries\n  - 📄 Documentation storage\n  - 📸 Boundary images\n  - 📹 Progress documentation\n\n## 🚀 Getting Started\n\n### Prerequisites\n\nBefore you begin, ensure you have the following installed:\n- Flutter SDK (^3.5.4)\n- Dart SDK (^3.0.0)\n- Firebase CLI\n- A Google Maps API key\n- Git\n\n### 🔑 API Keys and Configuration\n\n1. **Firebase Setup**:\n   - Create two Firebase projects (development and production)\n   - Enable Authentication, Firestore, and Hosting\n   - Set up Firebase configuration:\n     ```bash\n     # Copy template files\n     cp .github/templates/firebase.json.template firebase.json\n     cp .github/templates/firestore.rules.template firestore.rules\n     cp .github/templates/storage.rules.template storage.rules\n     cp .github/templates/firestore.indexes.json.template firestore.indexes.json\n     cp .github/templates/.firebaserc.template .firebaserc\n     ```\n   - Update the configuration files:\n     - In `firebase.json`:\n       - Replace `your-site-name` with your Firebase hosting site name\n       - Update `your-region` with your preferred region (e.g., \"asia-east1\")\n     - In `.firebaserc`:\n       - Replace `your-project-id` with your default Firebase project ID\n       - Update `your-dev-project-id` and `your-prod-project-id` with your development and production project IDs\n       - Configure hosting targets for your sites\n     - Update security rules in `firestore.rules` and `storage.rules`:\n       - Replace the default open access rules with your security requirements\n       - Uncomment and modify the example secured rules as needed\n     - In `firestore.indexes.json`:\n       - Replace the example index with your required Firestore indexes\n       - Add additional indexes as needed for your queries\n\n2. **Google Maps Setup**:\n   - Create a Google Cloud Project\n   - Enable Maps JavaScript API\n   - Create API key with appropriate restrictions\n   - Add the key to your environment configuration\n\n### ⚡ Quick Start\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/amrit-dash/coffee-mapper-web.git\n   cd coffee_mapper_web\n   ```\n\n2. Install dependencies:\n   ```bash\n   flutter pub get\n   ```\n\n3. Configure Firebase:\n   ```bash\n   cp lib/config/firebase_options_dev.template.dart lib/config/firebase_options_dev.dart\n   cp lib/config/firebase_options_prod.template.dart lib/config/firebase_options_prod.dart\n   ```\n\n4. Set up environment variables:\n   ```bash\n   cp .env.template .env\n   ```\n   Update the following in your `.env` file:\n   ```\n   GOOGLE_MAPS_API_KEY=your_api_key\n   FIREBASE_API_KEY=your_firebase_key\n   ```\n\n5. Run the application:\n   ```bash\n   flutter run -d chrome\n   ```\n\n### 🔧 Environment Setup\n\n#### Development Environment\n```bash\n# Install Firebase tools\nnpm install -g firebase-tools\n\n# Login to Firebase\nfirebase login\n\n# Initialize Firebase\nfirebase init\n\n# Select features:\n# - Firestore\n# - Hosting\n# - Authentication\n```\n\n#### Production Environment\n```bash\n# Deploy to production\n./deploy.sh prod\n\n# Deploy to development\n./deploy.sh dev\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e📱 Supported Platforms\u003c/summary\u003e\n\n| Platform | Support |\n|----------|---------|\n| Web      | ✅      |\n| Android  | 🚧      |\n| iOS      | 🚧      |\n| Windows  | ❌      |\n| macOS    | ❌      |\n| Linux    | ❌      |\n\n\u003c/details\u003e\n\n## 🔧 Development vs Production\n\nThe application supports both development and production environments:\n\n### 🛠️ Development\n```bash\n./deploy.sh dev\n```\n- Uses development Firebase project\n- Enables debugging features\n- Development-specific configurations\n- Live at: [coffee-mapper-dashboard.web.app](https://coffee-mapper-dashboard.web.app)\n\n### 🚀 Production\n```bash\n./deploy.sh prod\n```\n- Uses production Firebase project\n- Optimized performance\n- Production-specific security rules\n- Live at: [coffeemapper.web.app](https://coffeemapper.web.app)\n\n## 🏗️ Project Structure\n\n```\nlib/\n├── config/          # ⚙️ Configuration files\n├── models/          # 📦 Data models\n├── screens/         # 📱 Application screens\n├── services/        # 🔧 Business logic and API services\n├── utils/          # 🛠️ Utility functions\n└── widgets/        # 🎨 Reusable UI components\n    ├── dialogs/    # 💬 Dialog components\n    ├── forms/      # 📝 Form components\n    ├── layout/     # 🎯 Layout components\n    ├── map/        # 🗺️ Map-related components\n    └── tables/     # 📊 Data table components\n```\n\n## 🔒 Security\n\n- 🔐 Firebase Authentication for user management\n- 🔑 Secure API key handling\n- 🛡️ Environment-specific security rules\n- 🔒 Data access control\n- 🔄 Regular security updates\n\n\u003e ⚠️ **Important Security Note**: The template files in `.github/templates/` contain open access rules for demonstration purposes only. Never use these rules in production. Always implement proper security rules based on your application's requirements before deploying.\n\n## 🤝 Contributing\n\nWe love your input! Check out our [Contributing Guidelines](CONTRIBUTING.md) to get started.\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 👥 Core Team\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://about.me/amritdash\"\u003e\n\u003cimg src=\"https://avatars.githubusercontent.com/amrit-dash\" width=\"100px\" alt=\"Amrit Dash\"/\u003e\n\u003cbr/\u003e\n\u003cb\u003eAmrit Dash\u003c/b\u003e\n\u003c/a\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://about.me/amritdash\"\u003e🌐\u003c/a\u003e • \n\u003ca href=\"https://github.com/amrit-dash\"\u003e🐙\u003c/a\u003e\n\u003c/div\u003e\n\n## 🙏 Acknowledgments\n\n* 🎯 Flutter Team for the amazing framework\n* 🔥 Firebase for backend services\n* 🗺️ Google Maps Platform for mapping services\n\n## 🔧 Technical Details\n\n### 📝 Firestore Rules Configuration\n\n```javascript\nrules_version = '2';\nservice cloud.firestore {\n  match /databases/{database}/documents {\n    // Common functions\n    function isAuthenticated() {\n      return request.auth != null;\n    }\n    \n    function isAdmin() {\n      return isAuthenticated() \u0026\u0026 \n        get(/databases/$(database)/documents/admins/$(request.auth.uid)).data != null;\n    }\n\n    // Collection access rules\n    match /plantations/{document=**} {\n      allow read: if isAuthenticated();\n      allow write: if isAdmin();\n    }\n    \n    match /metrics/{document=**} {\n      allow read: if isAuthenticated();\n      allow write: if isAdmin();\n    }\n    \n    match /users/{userId} {\n      allow read: if isAuthenticated() \u0026\u0026 (request.auth.uid == userId || isAdmin());\n      allow write: if isAdmin();\n    }\n  }\n}\n```\n\n### 🚀 Deployment Process\n\n#### Development Deployment\n```bash\n# 1. Build the web app\nflutter build web --web-renderer canvaskit --release --dart-define=ENVIRONMENT=development\n\n# 2. Deploy to Firebase Hosting (Development)\nfirebase use development\nfirebase deploy --only hosting\n\n# Alternative: Use deployment script\n./deploy.sh dev\n```\n\n#### Production Deployment\n```bash\n# 1. Build the web app with optimizations\nflutter build web --web-renderer canvaskit --release --dart-define=ENVIRONMENT=production\n\n# 2. Deploy to Firebase Hosting (Production)\nfirebase use production\nfirebase deploy --only hosting\n\n# Alternative: Use deployment script\n./deploy.sh prod\n```\n\n### 🧪 Testing Guidelines\n\n#### Unit Tests\n```dart\n// Example test structure\nvoid main() {\n  group('Plantation Service Tests', () {\n    late PlantationService plantationService;\n    \n    setUp(() {\n      plantationService = PlantationService();\n    });\n    \n    test('should calculate area correctly', () {\n      final coordinates = [\n        LatLng(0, 0),\n        LatLng(0, 1),\n        LatLng(1, 1),\n        LatLng(1, 0),\n      ];\n      \n      final area = plantationService.calculateArea(coordinates);\n      expect(area, closeTo(111.32, 0.01));\n    });\n  });\n}\n```\n\n#### Integration Tests\n```bash\n# Run integration tests\nflutter drive --driver=test_driver/integration_test.dart --target=integration_test/app_test.dart -d chrome\n```\n\n#### Performance Testing\n```bash\n# Run performance tests\nflutter run --profile --trace-skia\n```\n\n#### Test Coverage\n```bash\n# Generate coverage report\nflutter test --coverage\ngenhtml coverage/lcov.info -o coverage/html\n```\n\n## 📞 Support\n\nFor support and inquiries:\n- 📧 Support Email: geospatialtech.production@gmail.com\n- 👨‍💻 Developer Contact: amrit.dash60@gmail.com\n- 📚 Links Document: [Coffee Mapper Links](https://docs.google.com/document/d/1tTvSK8hoXd7UaeSKX60f-Dl1YoWcQjqIl2ckJ6YS2qU/edit?usp=sharing)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\nMade with ❤️ for Koraput's Coffee Farming Community\n\n[Website](https://coffeemapper.web.app)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famrit-dash%2Fcoffee-mapper-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famrit-dash%2Fcoffee-mapper-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famrit-dash%2Fcoffee-mapper-web/lists"}