FlagIt is a mobile app that makes reporting public hazards fast, accurate, and community-driven. Users attach a photo, add a short description, and Google Gemini helps verify whether it's a real public hazard, improves the wording, and suggests a category. The app uses AWS for storage and backend: DynamoDB (reports, votes, comments) and S3 (images). The goal of the app is to help people share hazards in their surroundings and notify peopel and municipalities quickly.
- Expo (React Native) — cross-platform mobile app
- Google Gemini API — vision + text classification and summarization
- AWS DynamoDB — NoSQL database for storing hazard reports and user interactions
- AWS S3 — object storage for hazard images
- AI-Powered Hazard Detection — automatically classifies photos, validates if it’s a public hazard, and proposes a clean summary.
- Instant Reporting — capture or select a photo, add a brief description, and submit in seconds.
- Verification & Filtering — AI helps reduce false/duplicate reports; app only posts when
valid_hazard === true. - Community Engagement — users can upvote/downvote if a hazard still exists and add helpful comments.
- Real-Time Map View — see nearby hazards, open details in a modal, and navigate safely.
npm install
# or
yarn installCreate a .env file in the project root with the following configuration:
# Gemini API
GEMINI_API_KEY=your_gemini_api_key_here
# AWS DynamoDB Configuration
AWS_REGION=us-east-1 # Location based on your account
AWS_ACCESS_KEY_ID=your_aws_access_key_id
AWS_SECRET_ACCESS_KEY=your_aws_secret_access_key
DYNAMODB_TABLE_NAME=Hazard_flags
S3_BUCKET_NAME=your_s3_bucket_nameImportant: Replace the placeholder values with your actual credentials:
- Get your Gemini API key from Google AI Studio
- Get your AWS credentials from the AWS IAM Console
- Ensure your AWS IAM user has permissions for DynamoDB and S3
npx expo start -c --tunnel
# press i for iOS simulator, a for Android, or scan QR with Expo Go