A cross-platform mobile application built with React Native and Expo that empowers citizens to report and manage garbage cleanup in their communities. This app bridges the gap between concerned citizens and municipal cleanup efforts, making it easy to document, report, and volunteer for garbage cleanup tasks.
- Overview
- Features
- Tech Stack
- Prerequisites
- Installation
- Running the Application
- Building for Production
- Contributing
- License
Garbage Collector is a civic engagement tool that allows users to:
- πΈ Photograph and report garbage in public spaces
- π Specify exact locations of reported garbage
- π€ Volunteer for cleanup tasks
- π Track cleanup progress and impact
- β Verify completed cleanup efforts
The app uses a local SQLite database to store reports and manage volunteer tasks, ensuring data persistence across sessions.
- Interactive multi-slide onboarding flow
- Introduction to app features and purpose
- First-time user setup
- Camera or gallery photo selection
- Location input for reported garbage
- Detailed description of the situation
- User attribution for accountability
- Form validation and error handling
- Browse available cleanup tasks
- Filter by status (Open, In Progress, Resolved, Verified)
- Volunteer for specific tasks
- Update task status with comments
- Activity timeline tracking
- Task verification system
- View all submitted reports
- See report status and timestamps
- Track personal contribution
- Manage user preferences
- View app information
- Framework: React Native (v0.81.5)
- Platform: Expo (~v54.0.30)
- Language: TypeScript (~v5.9.2)
- Navigation: Expo Router (~v6.0.21)
- Database: Expo SQLite (~v16.0.10)
- Animations: React Native Reanimated (~v4.1.1)
- UI Components: Custom components with React Native Gesture Handler
Before you begin, ensure you have the following installed:
- Node.js: v18.x or higher (Download)
- npm: v8.x or higher (comes with Node.js)
- Expo CLI: Install globally via
npm install -g expo-cli - iOS Development (macOS only):
- Xcode 14.0 or higher
- iOS Simulator
- Android Development:
- Android Studio
- Android SDK
- Android Emulator or physical device
-
Clone the repository
git clone <repository-url> cd garbage-collector
-
Install dependencies
npm install
-
Verify installation
npx expo doctor
This command checks for common issues with your Expo installation.
Start the Expo development server:
npm startThis will open the Expo Developer Tools in your browser, where you can:
- Scan the QR code with the Expo Go app (iOS/Android)
- Press
ito open iOS Simulator - Press
ato open Android Emulator - Press
wto open in web browser
npm run iosRuns the app in the iOS Simulator. Requires Xcode to be installed.
npm run androidRuns the app in the Android Emulator or connected device. Requires Android Studio and SDK setup.
npm run webRuns the app in a web browser at http://localhost:8081.
Run ESLint to check for code quality issues:
npm run lint# iOS
eas build --platform ios --profile development
# Android
eas build --platform android --profile development# iOS (requires Apple Developer account)
eas build --platform ios --profile production
# Android
eas build --platform android --profile productionNote: Production builds require setting up an Expo Application Services (EAS) account and configuring
eas.json.
Generate a static web build:
npx expo export:webThe built files will be in the dist/ directory.
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m 'feat: add amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
This project follows Conventional Commits:
feat:- New featuresfix:- Bug fixesrefactor:- Code refactoringdocs:- Documentation changestest:- Test additions or modificationschore:- Maintenance tasks
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Expo
- Icons from @expo/vector-icons
- Powered by React Native
- Documentation and development assistance by Claude by Anthropic
Made with β€οΈ for cleaner communities