PetFolio is a pet social and marketplace platform that allows users to connect with other pet owners, find and list pets for adoption, and buy and sell pet products.
- Email/password sign up and login
- Session persistence across app restarts
- Auto-redirect based on auth state (splash β login β home)
- Profile update (name, bio, location, profile image)
- Logout with confirmation dialog
- Instagram-style scrollable post feed
- Stories row with per-pet story creation
- Pull-to-refresh
- Real-time like updates via Supabase Realtime
- Optimistic like toggle
- Comment bottom sheet with live comment list
- Post sharing via native share sheet
- Post creation (with media upload, caption, location, pet tagging)
- Post editing and deletion (own posts only)
- Story creation (select which pet posts the story)
- Story viewing
- Story deletion
- Notification sent on like, comment, and share
- Shimmer loading skeleton
- Tinder-style swipeable pet card stack
- Swipe right to like, swipe left to pass
- Animated swipe-out and snap-back physics
- Action buttons: Like, Nope, View Profile (Star)
- Filter chips: For You, Same Breed, Nearby
- Text search across pet name, breed, animal type
- Multi-pet selector bar (browse as different pets)
- My Listings tab β manage your breeding-listed pets
- Nearby tab (distance-sorted view)
- Like/match request system
- Duplicate request prevention
- Notification sent to receiver on like
- Owner profile view (bio, location, email, follower/following counts)
- Individual pet profile view (breed, animal type, verified badge, bio)
- Pet carousel selector (switch between owner and each pet)
- Post grid with category filter chips (Playtime, Nap, Outdoor, Food)
- Follower/following count (tappable β opens list)
- Edit owner profile (name, bio, location, profile image upload)
- Edit pet profile (name, breed, age, bio, image upload)
- Add new pet
- Share profile (generates deep link)
- Public care badges row on owner profile
- Visitor profile view (follow/unfollow, send match request, message)
- Logout from profile
- Messages inbox with search
- Unread count badge per thread
- Real-time message delivery via Supabase Realtime
- Message bubbles with date separators
- Floating pill input bar
- Attachment sheet (camera, gallery, document β UI ready, marked coming soon)
- Voice message button (UI ready, marked coming soon)
- Tap avatar to open other pet's profile
- Thread auto-created when a match is accepted (DB trigger)
- Mark thread as read on open
- Activity tab: likes, comments, shares, follows, orders
- Requests tab: incoming breeding match requests
- Accept / Decline match requests inline
- "Like Back" β creates match + opens chat
- Unread count badge on home screen icon
- Mark all as read on open
- Tap notification β navigate to relevant entity (post, order, messages)
When the app is in the background or killed, in-app Supabase Realtime updates stop; Firebase Cloud Messaging delivers system notifications instead.
Client (this repo)
- After login, the app registers an FCM device token and upserts it into Supabase
user_fcm_tokens(lib/services/push_notification_service.dart,lib/repositories/push_token_repository.dart). - Android 13+ uses the existing
POST_NOTIFICATIONSpermission plus a runtime prompt viapermission_handler. - Firebase is wired for PetFolio (
petfolio-197e6):firebase.json,android/app/google-services.json, andlib/firebase_options.dartare generated via FlutterFire CLI (flutterfire configure --project=petfolio-197e6 β¦). Re-run that command if you clone on a new machine or add iOS/Web.google-services.json.exampleremains as a template reference only.
Server (Supabase)
- Apply migration
supabase/migrations/20260505140000_user_fcm_tokens.sql(supabase db pushor Dashboard SQL). - Set Edge secret
FIREBASE_SERVICE_ACCOUNT_JSONto the minified JSON from Firebase Console β Project settings β Service accounts β Generate new private key. - Deploy
supabase functions deploy push-fcmand create a Database Webhook onpublic.notificationsINSERT targeting that function (same pattern as Supabase FCM guide).
Care Diary Tab:
- Daily care log per pet (auto-creates today's log)
- Breakfast / Dinner / Snack feeding toggles
- Water cups tracker (increment/decrement, clamped to goal)
- Mood selector (Sleepy, Happy, Playful, Sick)
- Custom daily checklist with toggle tasks
- Checklist progress bar with percentage
- Personalized nudge messages based on onboarding data
- Edit Goals modal (calorie goal, water goal, exercise goal)
- Bento grid overview: Tasks ring, Calories ring, Water ring
- 7-day streak banner with day flags
- Week completion mask (MonβSun)
- Debounced auto-save (400ms) to Supabase
- Offline-first: serves stale cache immediately, then refreshes
- Care setup banner β onboarding flow
Gamification:
- Care points system (up to 10 pts/day, 2 pts per task)
- 30-day care challenge progress bar
- Streak days counter (current + best)
- Streak freeze mechanic (2 per week)
- Badge unlock system:
- First Log, Streak 3/7/14 days
- Week Complete, Perfect Week
- 30-Day Challenge
- Points 100 / 500
- Nutrition Ninja (7-day feeding streak)
- Hydration Station (7-day water goal streak)
- Mood Tracker (7-day mood streak)
- Achievements screen: level card, stat boxes, 30-day path, badge grid (locked/unlocked)
- Public badge showcase editor (choose up to 3 badges to show on profile)
- Badge sharing via native share
- Health overview card with alert chips (meds due, vet countdown, parasite overdue, active symptoms)
- Vitals & Weight: log weight + BCS score (1β9), weight trend chart (7/30/90d range selector), delta vs prior
- Medications: add/edit/delete medications, mark dose given/skipped, frequency options
- Vet Appointments: add/edit/cancel appointments, upcoming list
- Vaccinations: add, mark complete, scheduled/completed status
- Parasite Prevention: log treatments, overdue alerts, latest per type
- Dental Logs: home brushing and professional cleaning logs
- Allergies: add/remove allergy entries
- Symptoms: log symptom type + severity (mild/moderate/severe) + notes, resolve symptoms, active/resolved split
- Breakfast / Dinner / Snack / Treats tracking
- Calorie progress toward daily goal
- Treat count and kcal tracking
- Product grid (2-column) with category filter chips: All, Food, Toys, Bedding, Grooming, Treats, Accessories
- Personalized greeting header
- Member exclusive promo banner
- Product detail screen
- Add to cart with snackbar confirmation
- Cart with item count badge
- Cart screen (view/manage items)
- Order history screen
- Order status notifications
- Unified search across Posts, Pets, and Products (3 tabs)
- Debounced search (400ms)
- Clear button
- Auto-focus on open
- Post results with like/comment actions
- Pet results β tap to open profile
- Product results β add to cart
- Monthly budget dashboard with progress bar
- Total spending display
- Category breakdown grid (Food, Vet, Grooming, Toys, Accessories, Other)
- Upcoming bills section
- Transaction list with swipe-to-delete
- Add expense modal (title, amount, category, date picker)
- Edit monthly budget dialog
- Period selector (This Month / Last 3 Months / This Year)
- Weight history line chart (fl_chart)
- Height history bar chart (fl_chart)
- Time range selector (3M / 6M / 1Y / ALL)
- Trend indicator chip
- Milestones list
- Log measurement bottom sheet (weight + height)
- Vet listing with rating, distance, specialty, price tier
- Category filter chips (All, General, Dental, Surgery, Emergency)
- Search bar
- Booking detail sheet: date picker (14-day scroll), time slot grid
- Confirm booking with snackbar
- Nearby emergency vet map button
- Pet digital ID / QR code card
- Immediate action grid (CPR, Bleeding, Heatstroke, Fractures)
- 24/7 hotlines (Pet Poison Helpline, ASPCA) with tap-to-call
- Toxic food items list
- SOS floating action button (calls hotline)
- Suggested groups list with member count and join/open button
- Trending categories grid (Training, Nutrition, Puppy Care, Senior Pets)
- Create group button
- Lost Pets / Found Pets tabs
- Pet cards with photo, breed, location, time, reward badge
- Report pet FAB
- Contact finder button
- Share button
- Tinder-style swipe card stack for adoptable pets
- ADOPT / NEXT swipe stamps
- Pet info overlay (name, age, location, tags)
- Verified badge
- Training hero card with level + progress bar
- Skill categories grid (Obedience, Agility, Social, Tricks) with completion progress
- Daily exercises list
- Find Trainers promotion card
- New Session FAB
- Active policy card (plan name, deductible, reimbursement %, annual limit, renewal date)
- Coverage breakdown (Accidents, Illnesses, Diagnostics, Dental)
- Recent claims list with status (Approved/Pending)
- Document vault (PDF/image storage with sync status)
- Insurance perks / multi-pet discount card
- File claim bottom sheet (subject, amount, date, document upload)
- Map view / list view toggle
- Search bar overlay
- Category filter chips (Parks, Cafes, Hotels, Vets)
- Places carousel at bottom of map
- Place cards with rating, distance, open status, directions button
- My location FAB
- (Route registered:
/eventsβPetEventDiscoveryScreen)
- Daily calorie budget card with macro breakdown (Protein/Fats/Carbs)
- Hydration tracker with animated circular progress
- Safe food search bar
- Meal schedule with checkboxes (Breakfast, Lunch, Dinner)
- Dietary profile tags (Grain-Free, Low Sodium, Sensitive Stomach)
- Smart nutrition tip
- Add meal button
- Top-rated sitters list (rating, jobs, price/hr)
- Post a job card
- Upcoming bookings list
- Camera preview with corner frame overlay
- Animated scan line
- Start Precision Scan button
- Import from Gallery button
- Scan history horizontal scroll
- Results sheet: primary match + secondary match with confidence %, breed characteristics, lifespan/weight/group stats
- Add to Pet Profile button
- Featured article hero card
- Category icons (Health, Nutrition, Training, First Aid)
- Tabbed articles (All Topics, Health & Wellness, Behavioral Tips, Expert Guides)
- Article tiles with read time, category, expert-verified badge
- Search bar
- Bookmark button
- Top-rated gear cards (product name, brand, rating, price, review count)
- Category chips (Harnesses, Smart Toys, Feeders, Beds, GPS Trackers)
- Immersive parallax hero header with pet photo
- Pet stats row (Memories, Milestones, Rank)
- Chronological timeline with event types (photo, achievement, health, milestone)
- Inline photo display for photo events
- Reactions (likes, comments) per event
- Add Memory FAB
- Immersive gradient background
- Memorial profile (photo, name, years)
- Quote card
- Treasured moments photo gallery grid
- Messages of love board
- Add a Memory button
- Share button
- (Route registered:
/medical_recordsβPetHealthRecordScreen)
- (Route registered:
/export_recordsβPetHealthRecordExportScreen)
- Light / Dark theme toggle (persisted via SharedPreferences)
- Account info display
- Notifications shortcut
- Liked pets shortcut
- Order history shortcut
- Achievements & badges section (per-pet badge carousel, tap to view detail + share)
- Privacy Policy, Terms of Service, Help & Support links
- App version display
- Sign out with confirmation
- Material Design 3 with custom
PetfolioShadowstheme extension - Playfair Display (headings) + DM Sans (body) typography
- Light and dark theme support
- Responsive layout (max-width constraints for tablet/web)
- Accessibility: semantic labels on nav bar, buttons, progress indicators
- GoRouter with auth-aware redirects and deep link support (50+ routes)
- Riverpod state management with
Notifierpattern throughout - Bootstrap coordinator for parallel cold-start data hydration
- App lifecycle sync (re-syncs data on resume, debounced 30s)
- Supabase Realtime subscriptions (likes, comments, messages)
- Image upload helper (Supabase Storage)
- Local cache for care logs (SharedPreferences)
- Marionette binding for UI automation testing