How developeracademy-postech/2026-c6-m02-urchin-ios works
Plobby is an iOS beach-cleanup activity app: volunteers can record cleanup activity and photos, explore beaches and community records, track collection goals, and manage profiles and notifications. The principal workflow is recording an activity, including its location, time, trash and photos, then saving it through the record client to Supabase; the app also exposes map, collection, account and notification branches. The README documents the feature/domain/client layering. Several feature-to-client calls and unsampled implementations are not shown, so those relationships are omitted rather than asserted.
Main entry points: SupabaseClient+.swift Supabase backend · MainTabFeature.swift Main tabs · RecordFlowFeature.swift Record flow · RecordClient.swift Record service
Components 24
App shell
- App routing
Plobby/Plobby/App/AppFeature.swift - Main tabs
Plobby/Plobby/Features/MainTab/MainTabFeature.swift - Home
Plobby/Plobby/Features/Home/HomeFeature.swift
Cleanup activity
- Record flow
Plobby/Plobby/Features/Record/RecordFlowFeature.swift - Record form
Plobby/Plobby/Features/Record/RecordForm/RecordFormFeature.swift - Photo picker
Plobby/Plobby/Features/Record/PhotosPicker/PhotosPickerFeature.swift - Record detail
Plobby/Plobby/Features/Record/RecordDetail/RecordDetailFeature.swift - Record service
Plobby/Plobby/Clients/Record/RecordClient.swift - Record models
Plobby/Plobby/Domain/Record/NewRecord.swift
Beach discovery
- Beach map
Plobby/Plobby/Features/Map/MapFeature.swift - Beach service
Plobby/Plobby/Clients/Beach/BeachClient.swift - Beach models
Plobby/Plobby/Domain/Beach/Beach.swift - Goal collection
Plobby/Plobby/Features/Collection/CollectionFeature.swift - Goal service
Plobby/Plobby/Clients/Goal/GoalClient.swift
Member services
- Onboarding
Plobby/Plobby/Features/Onboarding/OnboardingFeature.swift - Sign-up
Plobby/Plobby/Features/SignUp/SignUpFeature.swift - Authentication
Plobby/Plobby/Clients/Auth/AuthClient.swift - Profile service
Plobby/Plobby/Clients/User/UserClient.swift - Notifications
Plobby/Plobby/Clients/Notification/NotificationClient.swift
Platform clients
- Photo library
Plobby/Plobby/Clients/Photo/PhotoLibraryClient.swift - Location
Plobby/Plobby/Clients/Location/LocationClient.swift - Push
Plobby/Plobby/Clients/Push/PushClient.swift - Supabase backend
Plobby/Plobby/Clients/Supabase/SupabaseClient+.swift
Other components
- Volunteer
Connections 25
- Volunteer → App routing: uses app
README.md - App routing → Main tabs: routes tabs
README.md - Main tabs → Home: offers home
- Main tabs → Beach map: offers map
- Main tabs → Goal collection: offers goals
- Volunteer → Record flow: records cleanup
- Record flow → Record form: presents form
- Record form → Record models: collects details
- Record flow → Photo picker: selects photos
- Photo picker → Photo library: loads library
Plobby/Plobby/Clients/Photo/PhotoLibraryClient.swift - Record detail → Record service: loads record
- Record service → Supabase backend: reads writes
Plobby/Plobby/Clients/Record/RecordClient.swift - Record service → Record models: maps records
Plobby/Plobby/Clients/Record/RecordClient.swift - Beach map → Beach service: loads beaches
- Beach service → Supabase backend: queries beaches
Plobby/Plobby/Clients/Beach/BeachClient.swift - Beach service → Beach models: maps beaches
Plobby/Plobby/Clients/Beach/BeachClient.swift - Goal collection → Goal service: loads progress
- Goal service → Supabase backend: reads goals
Plobby/Plobby/Clients/Goal/GoalClient.swift - Onboarding → Authentication: authenticates
- Sign-up → Profile service: updates profile
- Notifications → Supabase backend: reads updates
Plobby/Plobby/Clients/Notification/NotificationClient.swift - Authentication → Supabase backend: auth requests
Plobby/Plobby/Clients/Auth/AuthClient.swift - Profile service → Supabase backend: profile requests
Plobby/Plobby/Clients/User/UserClient.swift - Location → Volunteer: provides location
Plobby/Plobby/Clients/Location/LocationClient.swift - Push → Volunteer: delivers alerts