Re#22
Merged
Merged
Conversation
Add a new research document exploring building a mobile social/shop/fitness app using Flutter and Supabase. The file captures architecture ideas, integration considerations (auth, database, storage, real-time), and implementation/deployment notes to guide future development and prototyping. File added at docs/RESEARCH_flutter_supabase_mobile_social_shop_fitness.md.
Configure VS Code to use UTF-8 encoding globally and for Markdown files by adding files.encoding and a [markdown] block to .vscode/settings.json. Also update docs/RESEARCH_flutter_supabase_mobile_social_shop_fitness.md (binary change) to reflect latest research notes.
Add comprehensive user-stories and actor documentation (docs/USER_STORIES_platform_social_matching_commerce_care.md, v1.0, 2026-05-04). Includes research summary, personas, C4-style diagrams (Mermaid), detailed epics and acceptance criteria across onboarding, feed, matching, commerce, care, notifications, accessibility, a sample story map and traceability matrix, references, and next steps (prioritization, metrics, compliance notes).
… pet_profile_screen Co-authored-by: Cursor <cursoragent@cursor.com>
syed-reza98
marked this pull request as ready for review
May 4, 2026 17:21
There was a problem hiding this comment.
Pull request overview
This PR expands the follow-list experience so profile stats can open follower/following screens for owners as well as pets, while also extracting shared bottom-nav spacing helpers and adding product research docs.
Changes:
- Generalizes the followers screen into a multi-mode list for pet followers, owner followers, and following, with new routes and profile-stat entry points.
- Extracts bottom-nav spacing constants/helpers into
lib/utils/layout_utils.dartand updates screens to import from the shared utility. - Adds large product/research markdown docs plus minor config/comment cleanup.
Reviewed changes
Copilot reviewed 15 out of 16 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
lib/views/pet_profile_screen.dart |
Makes owner follower/following stats tappable and switches layout helper import. |
lib/views/pet_followers_screen.dart |
Generalizes the followers UI into a reusable list screen with navigation into pet/user profiles. |
lib/views/marketplace_screen.dart |
Repoints bottom-nav spacing import to shared layout utils. |
lib/views/main_layout.dart |
Removes in-file bottom-nav spacing helpers and imports shared layout utils. |
lib/views/home_screen.dart |
Repoints bottom-nav spacing import to shared layout utils. |
lib/views/discovery_screen.dart |
Repoints bottom-nav spacing import to shared layout utils. |
lib/utils/routes.dart |
Adds routes for pet followers, user followers, and user following lists. |
lib/utils/pet_navigation.dart |
Adds helper for navigating to user profiles. |
lib/utils/layout_utils.dart |
New shared bottom-nav spacing constants/helper. |
lib/repositories/follow_repository.dart |
Adds repository methods for owner followers/following and refactors follower profile lookup. |
lib/main.dart |
Adds a non-functional inline comment near imports. |
lib/controllers/follow_controller.dart |
Adds Riverpod providers for owner follower lists and following lists. |
docs/USER_STORIES_platform_social_matching_commerce_care.md |
Adds product/user-story planning document. |
docs/RESEARCH_flutter_supabase_mobile_social_shop_fitness.md |
Adds stack/research reference document. |
android/gradle.properties |
Normalizes the commented JDK override line. |
.vscode/settings.json |
Adds UTF-8 encoding settings for the workspace/Markdown. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| else | ||
| Future.value([]), | ||
| if (petIds.isNotEmpty) | ||
| supabase.from('pets').select('id, name, image_url').inFilter('id', petIds) |
Comment on lines
+51
to
+57
| // Navigate to the profile tab (index 4 in MainLayout) | ||
| // We don't have a direct "switchToTab" method here, but we can potentially | ||
| // use a provider or just context.go('/home') if the home route handles tab state, | ||
| // or specifically context.push if we want it on the stack. | ||
| // However, most apps just switch tabs. | ||
| // For now, let's push the visitor profile even for self, or just go to /user/:id | ||
| // because /user/:id is handled by PetProfileScreen which handles "isVisitor" logic. |
Comment on lines
+146
to
+155
| /// Follower list (user profiles) for a specific owner. | ||
| final ownerFollowersListProvider = FutureProvider.family< | ||
| List<Map<String, dynamic>>, String>((ref, ownerId) async { | ||
| return followRepository.fetchOwnerFollowersList(ownerId); | ||
| }); | ||
|
|
||
| /// List of entities a user is following. | ||
| final followingListProvider = FutureProvider.family< | ||
| List<Map<String, dynamic>>, String>((ref, userId) async { | ||
| return followRepository.fetchFollowingList(userId); |
Comment on lines
16
to
22
| const PetFollowersScreen({ | ||
| super.key, | ||
| this.petId, | ||
| this.userId, | ||
| required this.type, | ||
| }); | ||
|
|
| 1. **Prioritize epics** E1 → E2 → E4 (or E3 first if matching is the wedge). | ||
| 2. **Attach metrics** per epic (activation, D7 retention, GMV, care log completion rate, report rate). | ||
| 3. **Decompose** each US into technical tasks (API, RLS policies, UI, analytics). | ||
| 4. **Compliance review** for E5/E8 before promising clinical workflows. |
| @@ -1,5 +1,6 @@ | |||
| import 'package:flutter/foundation.dart'; | |||
| import 'package:flutter/material.dart'; | |||
| // Triggering rebuild to fix potential stale class references | |||
Add a comprehensive project spec (PetForlio.md) describing the PetFolio Flutter app, its features, and cross-cutting architecture. Replace/expand README.md with the same detailed overview and feature list for the project, and update .gitignore to ignore the /.kiro directory.
Enable Firebase Cloud Messaging and token management plus related UI/navigation and repository fixes. Adds Firebase config and wiring (android/app/google-services.json, .firebaserc, firebase.json, lib/firebase_options.dart), Gradle plugin checks, and README instructions for setup and Supabase deployment. Implements PushNotificationService (init, background handler, permission/token handling), PushTokenRepository, and PushNotificationCoordinator (register/clear tokens on auth changes). Adds Supabase function + migration (supabase/functions/push-fcm, supabase/migrations/20260505140000_user_fcm_tokens.sql) and updates functions config. Also: include firebase_core/firebase_messaging/permission_handler deps, register background handler & optional token logging in main.dart, add mainLayout tab request provider and listener (navigation integration), improve follow repo fetching (chunked profile/pet fetch helpers) and follow controller invalidations, and refine pet followers screen validation/error messages.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.