mirror of
https://github.com/SamyRai/turash.git
synced 2025-12-26 23:01:33 +00:00
369 lines
10 KiB
Markdown
369 lines
10 KiB
Markdown
# 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**
|
|
|
|
1. **Backend API** (`/api/v1/discovery/community`)
|
|
- ✅ Search endpoint works
|
|
- ✅ Returns community listings
|
|
- ✅ Integrated into universal search
|
|
|
|
2. **Frontend Page** (`/discovery`)
|
|
- ✅ DiscoveryPage component exists
|
|
- ✅ Shows products, services, and community listings in tabs
|
|
- ✅ Search functionality works
|
|
- ✅ Route exists in AppRouter
|
|
|
|
3. **Domain Model & Repository**
|
|
- ✅ Complete domain model
|
|
- ✅ Repository with CRUD operations
|
|
- ✅ Spatial search support
|
|
|
|
### ❌ **What's Missing (Critical Issues)**
|
|
|
|
1. **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
|
|
|
|
2. **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
|
|
|
|
3. **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
|
|
|
|
4. **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)
|
|
1. **Manual URL Entry**: User must type `/discovery` in browser
|
|
2. **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
|
|
1. **Search Works**: Users can search and see community listings (if any exist)
|
|
2. **Cannot Create**: Clicking anywhere won't let them create a listing
|
|
3. **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:
|
|
|
|
1. **User searches** for products/services/community items
|
|
2. **Results show** across three categories:
|
|
- Products (from businesses)
|
|
- Services (from businesses)
|
|
- Community listings (from citizens)
|
|
3. **User can filter** by location, price, category, etc.
|
|
4. **User can view** details of any match
|
|
|
|
### Missing Workflow Steps
|
|
1. ❌ **How users discover the Discovery page**
|
|
2. ❌ **How users create community listings**
|
|
3. ❌ **How users contact listing owners**
|
|
4. ❌ **How community listings appear on map**
|
|
5. ❌ **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" link
|
|
- `bugulma/frontend/components/layout/Footer.tsx` - Add "Discover" link
|
|
- `bugulma/frontend/pages/LandingPage.tsx` - Add section/button for discovery
|
|
- `bugulma/frontend/pages/DashboardPage.tsx` - Add quick action button
|
|
|
|
**Implementation**:
|
|
```typescript
|
|
// 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:
|
|
```typescript
|
|
<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**:
|
|
```go
|
|
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 markers
|
|
- `bugulma/frontend/components/map/MapControls.tsx` - Add toggle for community listings
|
|
- `bugulma/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)
|
|
|
|
1. **Discover the Feature**
|
|
- See "Discover Resources" button on landing page
|
|
- See link in navigation menu
|
|
- See quick action on dashboard (if logged in)
|
|
|
|
2. **Browse Listings**
|
|
- Navigate to `/discovery`
|
|
- Search for items they need
|
|
- Filter by location, category, price
|
|
- View details of listings
|
|
|
|
3. **Create Listing**
|
|
- Click "Create Listing" button
|
|
- Fill out form (type, category, description, location, price)
|
|
- Upload images
|
|
- Submit listing
|
|
|
|
4. **Manage Listings**
|
|
- View "My Listings" in dashboard
|
|
- Edit or delete listings
|
|
- Mark as sold/taken
|
|
|
|
5. **Contact Owners**
|
|
- View listing details
|
|
- Contact owner (via platform messaging or email)
|
|
- Arrange pickup/delivery
|
|
|
|
### For Businesses
|
|
|
|
1. **Discover Community Resources**
|
|
- See community listings in discovery search
|
|
- Filter to see what citizens are offering
|
|
- Contact citizens for resources
|
|
|
|
2. **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:
|
|
```typescript
|
|
<NavLink to="/discovery">Discover</NavLink>
|
|
```
|
|
|
|
### 2. Add Landing Page Button (10 minutes)
|
|
Add to Hero section:
|
|
```typescript
|
|
<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**:
|
|
1. ✅ Add navigation links (CRITICAL)
|
|
2. ✅ Implement creation handler (HIGH)
|
|
3. ✅ Create frontend form (HIGH)
|
|
4. ✅ Add map integration (MEDIUM)
|
|
5. ✅ 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
|
|
|