10 KiB
Community Functionality Workflow & Accessibility Report
Date: 2025-01-27 Issue: Community features exist but are completely inaccessible to users
Executive Summary
The community listing search functionality has been partially implemented (backend API + frontend page), but it is completely invisible and inaccessible to users. There are no navigation links, no UI entry points, and no way to create listings. Users would need to manually type /discovery in the URL to access it, and even then, they cannot create community listings.
Current Implementation Status
✅ What Exists
-
Backend API (
/api/v1/discovery/community)- ✅ Search endpoint works
- ✅ Returns community listings
- ✅ Integrated into universal search
-
Frontend Page (
/discovery)- ✅ DiscoveryPage component exists
- ✅ Shows products, services, and community listings in tabs
- ✅ Search functionality works
- ✅ Route exists in AppRouter
-
Domain Model & Repository
- ✅ Complete domain model
- ✅ Repository with CRUD operations
- ✅ Spatial search support
❌ What's Missing (Critical Issues)
-
No Navigation Links
- ❌ No link in TopBar/Header
- ❌ No link in Footer
- ❌ No link on Landing Page
- ❌ No link in Dashboard
- ❌ No link in any menu
-
No Way to Create Listings
- ❌ Backend handler returns
501 Not Implemented - ❌ No frontend form to create listings
- ❌ No "Create Listing" button anywhere
- ❌ No workflow for users to add their items
- ❌ Backend handler returns
-
No Map Integration
- ❌ Community listings don't show on map
- ❌ No markers for community listings
- ❌ MapControls has "discovery" button but it only toggles products/services
-
No User Workflow
- ❌ No onboarding or explanation
- ❌ No help text or guides
- ❌ No clear use case presentation
Current User Experience (Broken)
How Users Would Find It (If They Could)
- Manual URL Entry: User must type
/discoveryin browser - Search Results: If they search for something, they might see community listings in results (but only if they know to look)
What Happens When They Try to Use It
- Search Works: Users can search and see community listings (if any exist)
- Cannot Create: Clicking anywhere won't let them create a listing
- No Context: No explanation of what community listings are or how to use them
The Problem
- Zero discoverability: Feature is completely hidden
- Incomplete functionality: Can search but cannot create
- No integration: Not connected to main workflows (map, dashboard, landing page)
Intended Workflow (Based on Code Analysis)
Discovery Page Purpose
Based on the code structure, the intended workflow appears to be:
- User searches for products/services/community items
- Results show across three categories:
- Products (from businesses)
- Services (from businesses)
- Community listings (from citizens)
- User can filter by location, price, category, etc.
- User can view details of any match
Missing Workflow Steps
- ❌ How users discover the Discovery page
- ❌ How users create community listings
- ❌ How users contact listing owners
- ❌ How community listings appear on map
- ❌ How this integrates with main platform features
Required Fixes (Priority Order)
🔴 CRITICAL - Make It Discoverable
1. Add Navigation Links
Files to Modify:
bugulma/frontend/components/layout/TopBar.tsx- Add "Discover" linkbugulma/frontend/components/layout/Footer.tsx- Add "Discover" linkbugulma/frontend/pages/LandingPage.tsx- Add section/button for discoverybugulma/frontend/pages/DashboardPage.tsx- Add quick action button
Implementation:
// In TopBar or HeaderActions - add navigation item
<NavLink to="/discovery">Discover</NavLink>
// In LandingPage - add section or button
<Button onClick={() => navigate('/discovery')}>
Discover Resources
</Button>
// In DashboardPage - add to quick actions
<Button onClick={() => navigate('/discovery')}>
<Search className="h-4 w-4" />
Discover Resources
</Button>
2. Add to Landing Page
Location: bugulma/frontend/pages/LandingPage.tsx
Add a new section or integrate into existing sections:
- Add "Discover Resources" button in Hero section
- Add new section: "Community Resource Exchange"
- Link from Sectors section
3. Add to Dashboard Quick Actions
Location: bugulma/frontend/pages/DashboardPage.tsx
Add button to Quick Actions grid:
<Button
variant="outline"
onClick={() => navigate('/discovery')}
className="h-20 flex flex-col items-center justify-center gap-2"
>
<Search className="h-4 w-6" />
<span className="text-sm">Discover Resources</span>
</Button>
🟠 HIGH PRIORITY - Enable Creation
4. Implement Backend Creation Handler
File: bugulma/backend/internal/handler/discovery_handler.go
Current State:
func (h *DiscoveryHandler) CreateCommunityListing(c *gin.Context) {
// TODO: Implement community listing creation
c.JSON(http.StatusNotImplemented, gin.H{"error": "Not yet implemented"})
}
Required:
- Implement full handler
- Add authentication/authorization
- Validate input
- Create listing via matching service
5. Create Frontend Form Component
New File: bugulma/frontend/components/community/CreateCommunityListingForm.tsx
Features:
- Form fields for all listing types (product, service, tool, skill, need)
- Location picker
- Image upload
- Category selection
- Price/rate input
- Submit to API
6. Add "Create Listing" Button
Locations:
- DiscoveryPage - Add "Create Listing" button at top
- DashboardPage - Add to quick actions
- UserDashboard - Add section for user's listings
🟡 MEDIUM PRIORITY - Integration
7. Map Integration
Files to Modify:
bugulma/frontend/pages/MapView.tsx- Add community listing markersbugulma/frontend/components/map/MapControls.tsx- Add toggle for community listingsbugulma/frontend/components/map/ProductServiceMarkers.tsx- Extend to show community listings
Implementation:
- Fetch community listings for map bounds
- Display markers on map
- Show popup with listing details
- Link to discovery page or detail view
8. Search Integration
File: bugulma/frontend/components/ui/SearchBar.tsx
Enhancement:
- When user searches, show option to "Search All Resources"
- Link to discovery page with search query pre-filled
- Show community listings in search suggestions
9. User Dashboard Integration
File: bugulma/frontend/pages/UserDashboard.tsx
Add:
- Section: "My Community Listings"
- List user's listings
- Quick actions: Create, Edit, Delete
- Link to discovery page
Recommended Workflow (After Fixes)
For Citizens (Community Members)
-
Discover the Feature
- See "Discover Resources" button on landing page
- See link in navigation menu
- See quick action on dashboard (if logged in)
-
Browse Listings
- Navigate to
/discovery - Search for items they need
- Filter by location, category, price
- View details of listings
- Navigate to
-
Create Listing
- Click "Create Listing" button
- Fill out form (type, category, description, location, price)
- Upload images
- Submit listing
-
Manage Listings
- View "My Listings" in dashboard
- Edit or delete listings
- Mark as sold/taken
-
Contact Owners
- View listing details
- Contact owner (via platform messaging or email)
- Arrange pickup/delivery
For Businesses
-
Discover Community Resources
- See community listings in discovery search
- Filter to see what citizens are offering
- Contact citizens for resources
-
Integration with Business Resources
- Community listings appear alongside business products/services
- Unified search experience
- Can see both business and community resources
Files That Need Changes
Backend
bugulma/backend/internal/handler/discovery_handler.go
- Implement CreateCommunityListing handler (currently returns 501)
Frontend - Navigation
bugulma/frontend/components/layout/TopBar.tsx
- Add "Discover" navigation link
bugulma/frontend/components/layout/Footer.tsx
- Add "Discover" footer link
bugulma/frontend/pages/LandingPage.tsx
- Add "Discover Resources" button or section
bugulma/frontend/pages/DashboardPage.tsx
- Add "Discover Resources" quick action button
bugulma/frontend/pages/UserDashboard.tsx
- Add "My Community Listings" section
- Add "Create Listing" button
Frontend - Creation
bugulma/frontend/components/community/CreateCommunityListingForm.tsx (NEW)
- Form component for creating listings
bugulma/frontend/pages/DiscoveryPage.tsx
- Add "Create Listing" button
- Add link to create form
bugulma/frontend/services/discovery-api.ts
- Add createCommunityListing function
Frontend - Integration
bugulma/frontend/pages/MapView.tsx
- Add community listing markers
bugulma/frontend/components/map/MapControls.tsx
- Add toggle for community listings
bugulma/frontend/components/ui/SearchBar.tsx
- Enhance to link to discovery page
Quick Wins (Can Do Immediately)
1. Add Navigation Link (5 minutes)
Add to TopBar or Footer:
<NavLink to="/discovery">Discover</NavLink>
2. Add Landing Page Button (10 minutes)
Add to Hero section:
<Button onClick={() => navigate('/discovery')}>
Discover Resources
</Button>
3. Add Dashboard Quick Action (5 minutes)
Add to DashboardPage quick actions grid
4. Add "Create Listing" Button to DiscoveryPage (10 minutes)
Even if backend isn't ready, add button that shows "Coming Soon" or links to form
Summary
Current State: Feature exists but is 100% hidden and 50% functional (can search, cannot create).
Required Actions:
- ✅ Add navigation links (CRITICAL)
- ✅ Implement creation handler (HIGH)
- ✅ Create frontend form (HIGH)
- ✅ Add map integration (MEDIUM)
- ✅ Enhance user workflow (MEDIUM)
Estimated Effort:
- Quick wins (navigation links): 30 minutes
- Full implementation: 1-2 days
Impact: Making this feature discoverable and functional will enable the community resource sharing use case that was planned.
Report Generated: 2025-01-27