A Progressive Web App for creating and managing geographic alerts with interactive map integration. Built for the CoMapeo ecosystem, this application provides a mobile-first interface for field work and remote monitoring.
Live Demo | Documentation | Contributing
CoMapeo Alerts Commander is a web application that helps you create and manage location-based alerts across multiple CoMapeo projects. Whether you're monitoring environmental changes, tracking field observations, or coordinating remote teams, this tool provides an intuitive interface for geographic alert management.
- Interactive Maps - Click to select locations, search places, or enter coordinates manually
- Multi-Project Support - Manage alerts across multiple CoMapeo projects simultaneously
- Smart Defaults - Auto-populated detection times and intelligent form handling
- Progressive Web App - Install on any device, feels native, offline-ready app shell
- Multilingual - Full support for English, Portuguese, Spanish, and French
- Flexible Maps - Use Mapbox for premium features or OpenStreetMap for free, open-source mapping
- Node.js 18 or higher
- A CoMapeo server (or use
demo.comapeo.cloudfor testing) - (Optional) Mapbox token for satellite imagery
# Clone the repository
git clone https://github.com/digidem/comapeo-alerts-commander.git
cd comapeo-alerts-commander
# Install dependencies
npm install
# (Optional) Configure Mapbox
cp .env.example .env
# Edit .env and add your Mapbox token
# Start development server
npm run devVisit http://localhost:8080 and you're ready to go!
npm run buildThe production-ready files will be in the dist directory.
Connect to your CoMapeo server:
- Enter your server URL (e.g.,
https://demo.comapeo.cloud) - Provide your bearer token
- Optionally enable "Remember me" to save credentials
- Click on the map to select a location (or search/enter coordinates)
- Click "Continue" to choose projects
- Fill in alert details (times, source, name)
- Submit to create alerts across selected projects
- Select a project from the header dropdown
- All alerts for that project appear on the map
- Click any marker to view alert details
The app supports both Mapbox (premium) and OpenStreetMap (free):
With Mapbox Token:
- Satellite imagery
- High-quality vector tiles
- Premium geocoding
- Faster tile loading
Without Mapbox Token:
- Free OpenStreetMap tiles
- No API key required
- Fully open-source
- Street view only (no satellite)
Get a free Mapbox token at mapbox.com - the free tier includes 50,000 map loads per month.
Install CoMapeo Alerts Commander as a native app:
Desktop:
- Click the install icon in your browser's address bar
- Or check browser menu for "Install" option
Mobile:
- iOS Safari: Tap Share → Add to Home Screen
- Android Chrome: Tap Menu → Add to Home Screen
Once installed, the app feels like a native application. The app shell loads offline, but requires internet for maps and data.
Want to use your own logo instead of the default icon?
- Replace
public/icon.svgwith your logo (SVG recommended) - Run
npm run generate:icons - All icon sizes are generated automatically
See ICONS.md for detailed instructions.
- Configuration Guide - Environment variables, API setup, and customization options
- Troubleshooting - Common issues and solutions
- Icon Customization - How to customize app icons
- Development Guide - Development workflow, scripts, and best practices
- Tech Stack - Detailed information about technologies used
- Testing Guide - End-to-end testing with Playwright
- Deployment Guide - Deploy to Cloudflare Pages
- Docker Guide - Container deployment
# Development
npm run dev # Start dev server
npm run build # Production build
npm run preview # Preview production build
# Code Quality
npm run lint # Run ESLint
npm run lint -- --fix # Auto-fix issues
# Translations
npm run translate:all # Generate all translations
# PWA
npm run generate:icons # Generate app icons
# Testing
npm run test:e2e # Run E2E tests
npm run test:e2e:ui # Run tests with UIThe easiest way to deploy is via Cloudflare Pages with automatic GitHub integration:
- Push code to GitHub
- Connect repository to Cloudflare Pages
- Configure build settings (see DEPLOYMENT.md)
- Automatic deployments on every push
Run with Docker for containerized deployment:
# Pull from Docker Hub
docker pull communityfirst/comapeo-alerts-commander:latest
# Run the container
docker run -p 8080:80 communityfirst/comapeo-alerts-commander:latestSee DOCKER.md for detailed Docker instructions.
We welcome contributions! Here's how to get started:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and linting (
npm run lint && npm run test:e2e) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
See DEVELOPMENT.md for detailed development guidelines.
- Frontend: React 19 + TypeScript 5.9 + Vite 7
- UI: Tailwind CSS + shadcn/ui + Radix UI
- Maps: Mapbox GL / MapLibre GL
- i18n: i18next with auto-translation support
- PWA: Service Workers + Web App Manifest
- Testing: Playwright for E2E tests
For complete technology details, see TECH_STACK.md.
This project is actively maintained and used in production. Features are added based on community needs and feedback.
- Multi-platform Docker support (AMD64, ARM64)
- Automated CI/CD with GitHub Actions
- Comprehensive E2E test suite
- Four-language support (EN, PT, ES, FR)
- Dual map provider support
- Alert clustering for large datasets
- Offline data synchronization
- Push notifications
- Advanced filtering and search
- Export capabilities (CSV, GeoJSON)
Need help?
- Documentation: Start with this README and linked guides
- Issues: GitHub Issues
- Troubleshooting: See TROUBLESHOOTING.md
- CoMapeo: Visit comapeo.cloud
[Add your license information here]
Built with care for the CoMapeo ecosystem.
Special thanks to:
- Mapbox and OpenStreetMap for mapping services
- shadcn/ui for beautiful, accessible components
- The CoMapeo community for feedback and support
Made for environmental monitoring and field work.
Made with ❤️ by Awana Digital