|
| 1 | +# Contributor Issue Backlog |
| 2 | + |
| 3 | +Use the following ready-to-create issues for contributors. |
| 4 | +Every issue includes the mandatory `apertre3.0` tag plus one difficulty tag: `easy`, `medium`, or `hard`. |
| 5 | + |
| 6 | +--- |
| 7 | + |
| 8 | +## Easy |
| 9 | + |
| 10 | +### 1) Improve empty state on Notifications page |
| 11 | +- **Labels:** `easy`, `apertre3.0` |
| 12 | +- **Description:** |
| 13 | + Add a friendly empty state UI on `pages/NotificationsPage.tsx` when there are no notifications. |
| 14 | +- **Acceptance Criteria:** |
| 15 | + - Show icon + short message + call-to-action button. |
| 16 | + - Style is consistent with existing app theme. |
| 17 | + - No TypeScript errors. |
| 18 | + |
| 19 | +### 2) Add loading spinner to Profile save action |
| 20 | +- **Labels:** `easy`, `apertre3.0` |
| 21 | +- **Description:** |
| 22 | + In `pages/ProfilePage.tsx`, show a loading indicator on the save button while profile updates are in progress. |
| 23 | +- **Acceptance Criteria:** |
| 24 | + - Save button disabled while request is pending. |
| 25 | + - Spinner/text feedback appears. |
| 26 | + - Existing save logic still works. |
| 27 | + |
| 28 | +### 3) Add inline helper text for OTP input |
| 29 | +- **Labels:** `easy`, `apertre3.0` |
| 30 | +- **Description:** |
| 31 | + Add helper text and error hint improvements around `components/common/OtpInput.tsx` usage in login flow. |
| 32 | +- **Acceptance Criteria:** |
| 33 | + - Clear helper text for first-time users. |
| 34 | + - Validation hint appears for invalid OTP. |
| 35 | + - No visual regressions. |
| 36 | + |
| 37 | +--- |
| 38 | + |
| 39 | +## Medium |
| 40 | + |
| 41 | +### 4) Add transaction filtering by date range |
| 42 | +- **Labels:** `medium`, `apertre3.0` |
| 43 | +- **Description:** |
| 44 | + Extend `components/common/TransactionHistory.tsx` with date range filters. |
| 45 | +- **Acceptance Criteria:** |
| 46 | + - Filter options: last 7 days, 30 days, custom range. |
| 47 | + - UI updates list without full page reload. |
| 48 | + - Handles empty filtered results. |
| 49 | + |
| 50 | +### 5) Refactor drinks card rendering into reusable component |
| 51 | +- **Labels:** `medium`, `apertre3.0` |
| 52 | +- **Description:** |
| 53 | + Extract duplicated drinks item card UI from `pages/DrinksPage.tsx` / `pages/DrinksPageNew.tsx` into shared component. |
| 54 | +- **Acceptance Criteria:** |
| 55 | + - Shared card component created and reused. |
| 56 | + - No behavior change in existing flows. |
| 57 | + - Component accepts props for name, image, price, and actions. |
| 58 | + |
| 59 | +### 6) Add optimistic UI for chat messages |
| 60 | +- **Labels:** `medium`, `apertre3.0` |
| 61 | +- **Description:** |
| 62 | + Improve `pages/ChatPage.tsx` + chat context so sent messages appear instantly before server acknowledgment. |
| 63 | +- **Acceptance Criteria:** |
| 64 | + - Pending state shown until confirmed. |
| 65 | + - Failed sends are clearly marked with retry option. |
| 66 | + - Order of messages remains stable. |
| 67 | + |
| 68 | +--- |
| 69 | + |
| 70 | +## Hard |
| 71 | + |
| 72 | +### 7) Implement role-based route guards (admin/member) |
| 73 | +- **Labels:** `hard`, `apertre3.0` |
| 74 | +- **Description:** |
| 75 | + Expand auth logic to support role-based access for selected routes using `components/auth/ProtectedRoute.tsx` and `contexts/AuthContext.tsx`. |
| 76 | +- **Acceptance Criteria:** |
| 77 | + - Route-level permission checks for at least 2 roles. |
| 78 | + - Unauthorized users redirected with message. |
| 79 | + - Existing authenticated routes remain functional. |
| 80 | + |
| 81 | +### 8) Add offline cache fallback for drinks catalog |
| 82 | +- **Labels:** `hard`, `apertre3.0` |
| 83 | +- **Description:** |
| 84 | + Build a cache strategy for drinks data in `services` + `utils/storage.ts` to support limited offline view. |
| 85 | +- **Acceptance Criteria:** |
| 86 | + - Last successful drinks list is cached. |
| 87 | + - If network request fails, cached data is shown with stale warning. |
| 88 | + - Cache invalidation strategy documented in code comments. |
| 89 | + |
| 90 | +### 9) Build audit log view for payment updates |
| 91 | +- **Labels:** `hard`, `apertre3.0` |
| 92 | +- **Description:** |
| 93 | + Add an admin-facing audit history page for payment status changes using payment context and transaction data. |
| 94 | +- **Acceptance Criteria:** |
| 95 | + - New page listing timestamp, actor, old status, new status. |
| 96 | + - Pagination or virtualized list for large datasets. |
| 97 | + - Access restricted to admin role. |
| 98 | + |
0 commit comments