GreenGuide is an AI-powered waste management iOS application that helps users make environmentally conscious disposal decisions. Simply snap a photo of any item, and GreenGuide uses advanced computer vision and reasoning models to identify the object, determine the proper disposal method, and provide personalized environmental impact feedback.
Backend Repository: GreenGuide Backend
- Smart Image Classification: Real-time object identification using NVIDIA's Nemotron AI models
- Multi-Category Disposal: Classifies items into 6 categories (Recyclable, Compostable, Landfill, Hazardous, E-waste, Textile)
- Preparation Guidance: Step-by-step instructions for proper item preparation before disposal
- Confidence Scoring: Transparent AI confidence levels (High/Medium/Low) for each classification
- Local History Storage: SwiftData-powered persistent storage of all scanned items
- Statistics Dashboard: Real-time visualization of environmental impact metrics
- Category Breakdown: Visual progress bars showing disposal distribution
- Environmental Metrics: Track COβ savings, energy conservation, water saved, and more
- Native iOS Design: Built entirely with SwiftUI for smooth, modern interactions
- Camera & Photo Library: Seamless integration with iOS photo capabilities
- Dark Mode Support: Automatic adaptation to system appearance
- Animated Launch Screen: Polished first-impression experience
- Language: Swift 5.9
- UI Framework: SwiftUI 3.0
- Data Persistence: SwiftData (iOS 17+)
- Networking: URLSession + async/await
- Image Processing: UIKit ImagePicker, CoreImage
- Backend API: RESTful FastAPI service
GreenGuide/
βββ Models/
β βββ ScanRecord.swift # SwiftData model for scan history
β βββ APIService.swift # Network layer & API responses
βββ Views/
β βββ LaunchScreen.swift # Animated launch screen
β βββ MainTabView.swift # Tab navigation container
β βββ ScanView.swift # Main scanning interface
β βββ HistoryView.swift # Scan history & detail views
β βββ ImpactDashboardView.swift # Statistics & impact tracking
βββ Components/
β βββ ImagePicker.swift # UIKit-SwiftUI bridge
β βββ CategoryCard.swift # Reusable category display
β βββ ConfidenceBadge.swift # Confidence level indicator
βββ GreenGuideApp.swift # App entry point
- macOS 13.0 or later
- Xcode 15.0 or later
- iOS 17.0+ device or simulator
- Active GreenGuide backend instance
-
Clone the repository
git clone https://github.com/elisha-et/greenguide-ios.git cd greenguide-ios -
Open in Xcode
open GreenGuide.xcodeproj
-
Configure Backend URL
In
APIService.swift, update the backend URL:static let baseURL = "YOUR_BACKEND_URL" // Example: "https://greenguide-backend.onrender.com"
-
Build and Run
- Select your target device/simulator
- Press
β + Rto build and run - Grant camera and photo library permissions when prompted
This app requires the GreenGuide backend service. Follow the setup instructions at: GreenGuide Backend Repository
| Scan View | Results | History | Dashboard |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
@Model
final class ScanRecord {
var id: UUID
var date: Date
var objectName: String
var category: String
var categoryIcon: String
var categoryColor: String
var confidence: Double
var environmentalFeedback: String
var primaryMetric: String
var preparationSteps: [String]
var imageData: Data?
}struct ClassificationResponse: Codable {
let success: Bool
let is_waste_item: Bool
let object: String?
let category: String?
let category_info: CategoryInfo?
let preparation_steps: [String]?
let confidence: Confidence?
let environmental_impact: EnvironmentalImpact?
}- Export Functionality: Share impact statistics as images
- Notifications: Reminders for recycling days
- Community Features: Compare impact with friends
- Offline Mode: Cache classifications for offline access
- AR Mode: Point camera at items for real-time classification
- Location-Based Tips: Local recycling center information
- Multi-Language Support: Internationalization
- Test camera capture with various lighting conditions
- Verify photo library integration
- Test with edge cases:
- Blurry images
- Multiple objects
- Non-waste items (people, landscapes)
- Validate data persistence across app restarts
- Test deletion and history management
- Unit tests for API response parsing
- SwiftData CRUD operations
- Image processing pipeline
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request



