Project Info
Inspiration
Hey! We're TideParty, but our names are Oleg and Anthony. We LOVE tide pooling in Santa Cruz. It’s a relaxing activity that many people enjoy, and Santa Cruz is an ideal place for it thanks to its rocky cliffs and abundant marine life. However, when people go tide pooling, they often don’t know what they’re looking at. We built this app to help people identify marine organisms in real time, learn about them, and gain a deeper appreciation for ocean conservation.
What it does
Tide Party is an interactive mobile app that turns tide pooling into a fun, educational experience: Discover and navigate to local tide pooling spots Identify marine life in real time by pointing your camera at a sea creature Take photos and collect the creatures you find Learn detailed information about each species Earn badges by collecting creatures and answering quiz questions Join party rooms with friends and race to find the most creatures
How we built it
We built the app using SwiftUI for the frontend and Firebase for backend storage and real-time features. For marine life recognition, we trained a custom machine learning model using PyTorch and converted it into an Apple-compatible Core ML model for on-device inference.
Challenges we ran into
Training the model was our biggest challenge. Due to the limited available image data, we relied heavily on image augmentation to improve performance. Collecting and labeling data was also difficult, and early versions of the model suffered from underfitting. After extensive preprocessing and training, we were able to build a generalized model capable of accurately classifying Santa Cruz tide pool marine life with 94% accuracy.
Accomplishments we're proud of
We’re proud that we were able to fully realize our original vision, from real-time classification to multiplayer features. Achieving high model accuracy, building a polished UI, and designing a friendly mascot to enhance the user experience were major wins for us.
What we learned
We learned how to work quickly and effectively under pressure, how to design thoughtful UI/UX animations and interactions in Swift, and how to train and deploy a machine learning model within a real mobile application.
What's next
Next, we want to release Tide Party to real users. It would be especially impactful for school field trips, where students can compete to discover marine life together. We also plan to: Expand and improve our tide pool location map Train a more robust model to classify additional species Support multiple creature detections in a single frame Add online leaderboards and public party rooms Partner with charities focused on local ocean conservation
TideParty 🌊
TideParty is an iOS application designed to enhance the tide pooling experience through AI-powered creature identification, gamified discovery, and safety education.
✨ Key Features
🔍 AI Scanner & Discovery
- Real-time Identification: Uses CoreML (
TidePoolIdentifier.mlpackage) to identify sea creatures in real-time. - Discovery Results: Shows detailed information about captured creatures.
- "Let's Learn": Educational fact sheets powered by Generative AI (Cerebras/Gemini).
- Interactive Quizzes: Test your knowledge about the creatures you find to earn XP.
🏠 Landing & Dashboard
- Dynamic Dashboard: Displays current weather conditions and forecast.
- AI Insights: "Otto's Insights" provides daily tide pooling tips and fun facts.
- Donate Card: Direct links to ocean conservation charities (Ocean Conservancy, Surfrider, etc.).
🤝 Party Mode
- Group Experience: Join parties with friends to explore together.
- Gamification: Earn XP, level up, and compete on leaderboards.
👤 User Account & Badges
- Profile: Track your exploration stats.
- Badge System: Unlock badges for milestones (e.g., finding 5 starfish, visiting 10 spots).
- Customization: Set unlocked badges as your profile icon.
📍 Spots & Navigation
- Tide Pool Map: Locate nearby tide pools.
- Conditions: View tide charts and weather for specific spots.
🛡️ Safety & Education
- T.I.D.E. Code: Onboarding pledge to ensure respectful interaction with marine life.
- Safety First: Mandatory safety pledge confirmation on every app launch.
📂 Project Structure
The project is organized into the following main directories:
TideParty/Features/
Contains the UI and specific logic for each feature area:
- Landing/: Main home screen (
LandingView.swift), AI Insights (AIInsightView.swift). - Scanner/: Camera logic (
ScannerView.swift), ML model (TidePoolIdentifier.mlpackage), and result pages (DiscoveryResultView.swift). - Account/: User profile, badge grid, and settings (
AccountView.swift). - Onboarding/: Login/Signup flow (
OnboardingViews.swift) and T.I.D.E. code education. - Safety/: App launch safety pledge (
SafetyPledgeView.swift). - Party/: Group session logic and views.
- Spots/: Map and location-based features (
SpotsListView.swift,SpotsMapView.swift).
TideParty/Services/
Core application services managed as singletons:
AuthManager.swift: Firebase authentication.UserStatsService.swift: Manages user progress, badges, and XP.PartyService.swift: Handles realtime coordination for party mode.LocationManager.swift: CoreLocation wrapper.CameraManager.swift: AVFoundation setup.
TideParty/Data/
Data models and external data services:
- Models/: Swift structs for
Badge,TideSpot,Weather, etc. - Services/:
CerebrasService.swift/GenAIService.swift: Interfaces for AI text generation.WeatherService.swift: Fetches weather data.TideService.swift: Fetches tide data.
TideParty/Components/
Reusable UI components used across multiple features.
DonateCard.swift: Conservation donation promotion card.
TideParty/Assets.xcassets/
Contains all images, icons, and color sets (e.g., MainBlue, OttoBook, OttoMonacle, Badge icons).
🛠️ Tech Stack
- SwiftUI: Main UI framework.
- CoreML: On-device machine learning for image recognition.
- Firebase: Backend for Authentication and Firestore (database).
- AVFoundation: Camera handling.
- MapKit: Location and mapping.
🚀 Getting Started
- Open
TideParty.xcodeprojin Xcode. - Ensure you have a valid development team selected.
- Build and run on a simulator or device (requires iOS 16+).
Analysis
View
Metric
- 25
- 25
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- SwiftIn code
- FirebaseClaimed
- Google GeminiClaimed
- PythonClaimed
- PyTorchClaimed
1 of 5 appear in the indexed code. 4 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
306 KB
Source files
52
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
omrynskyi/TideParty
186 files · 37.7 MB · @ 2b1c074
Structure
Interface
9 files · 5%Screens, components and styles rendered to the user.
Application logic
76 files · 41%Domain rules, services and shared utilities.
+4 moreData & schema
7 files · 4%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Swift98%
- Markdown2%
Share of indexed source by file size. Binary and vendored files are excluded.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.