MVP1 Product Backlog - User Stories
1. Overview
← Back to Product | ← Back to Backlog | ← Back to Main Page
This document contains all User Stories (US) required for MVP1 with their complete acceptance criteria. MVP1 focuses on delivering the core platform functionality that enables users to register, locate EcoPoints, scan QR codes, register donations, and track their recycling history.
MVP1 Scope: - Total User Stories: 68 - Total Story Points: 252 - Epics Covered: 8 - Target Duration: 12 weeks (6 sprints × 2 weeks) - Target Date: Q1 2026
2. User Stories by Epic
EP-001: User Authentication & Profile Management
Feature: F-001 - Email/Password Authentication
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-001 | As a new user, I want to register with email and password so that I can create an account | • Email validation (format check) • Password strength requirements (min 8 chars, uppercase, lowercase, number) • Success/error feedback messages • Redirect to dashboard on success |
3 | Critical | Ready |
| US-002 | As a registered user, I want to log in with my email and password so that I can access my account | • JWT token generation • Session management • Remember me option • Redirect to dashboard after login |
3 | Critical | Ready |
| US-003 | As a user, I want to reset my password if I forget it so that I can regain access to my account | • Email verification sent to registered address • Secure token generation (expires in 1 hour) • Password update confirmation • Auto-login after successful reset |
5 | High | Ready |
| US-004 | As a system, I must validate user inputs on both frontend and backend so that data integrity is maintained | • Client-side validation with real-time feedback • Server-side validation with error codes • Sanitization against injection attacks • Consistent validation rules across layers |
2 | Critical | Ready |
Feature Total: 13 Story Points
Feature: F-002 - User Profile Management
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-005 | As a logged-in user, I want to view my profile information so that I can verify my account details | • Display name, email, registration date • Recycling statistics summary • Profile layout responsive on all devices |
2 | High | Ready |
| US-006 | As a logged-in user, I want to edit my profile information so that I can keep my data up-to-date | • Editable fields: name, email, password • Validation on all fields • Confirmation dialog for changes • Update success message |
3 | High | Ready |
| US-007 | As a user, I want my profile picture to display a default avatar so that my profile is visually identifiable | • Default avatar assignment on registration • Avatar displayed in navbar • Avatar displayed on profile page |
1 | Medium | Ready |
| US-008 | As a system admin, I want to view user roles and permissions so that I can manage access control | • Display user role (user, admin, cooperative_member) • Permission levels visible in admin panel • Filter users by role |
2 | High | Ready |
Feature Total: 8 Story Points
Feature: F-003 - User Roles & Permissions
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-009 | As a system, I must assign roles to users upon registration so that permissions are enforced | • Default role = "user" for new registrations • Roles stored in database • JWT contains role claim • Role cannot be self-assigned |
3 | High | Ready |
| US-010 | As an admin, I want to manage EcoPoints so that I can add/edit/remove collection stations | • Admin-only access to EcoPoint CRUD operations • Validation on all EcoPoint fields • Audit logging for all changes • Confirmation dialogs for delete operations |
5 | Critical | Ready |
| US-011 | As a cooperative member, I want to manage educational content so that I can share recycling knowledge | • Content creation/editing interface • Draft/publish workflow • Content moderation queue • Role-based access control |
5 | High | Ready |
Feature Total: 13 Story Points
Feature: F-004 - Session Management & Security
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-012 | As a system, I must manage user sessions securely so that unauthorized access is prevented | • JWT with 7-day expiration for personal devices • Refresh token mechanism • Secure HTTP-only cookies • Session revocation capability |
5 | Critical | Ready |
| US-013 | As a system, I must automatically log out inactive users so that security is maintained | • 5-minute inactivity timeout at EcoPoint kiosks • 30-minute timeout on personal devices • Session warning at 1 minute remaining • Clear session data on logout |
3 | Critical | Ready |
Feature Total: 8 Story Points
Epic EP-001 Total: 42 Story Points
EP-002: User Interface & Experience Design
Feature: F-005 - Login/Registration Screens
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-014 | As a user, I want an intuitive login screen so that I can quickly access my account | • Clean form layout • Email/password fields with labels • "Forgot Password" link visible • "Sign Up" CTA prominent • Loading states during submission • Clear error messages |
3 | Critical | Ready |
| US-015 | As a new user, I want a simple registration form so that I can easily create an account | • Name, email, password fields • Password confirmation field • Terms acceptance checkbox • Inline validation • Success redirect to dashboard |
3 | Critical | Ready |
| US-016 | As a user on mobile, I want the login/registration to be optimized for touch so that interaction is seamless | • Touch-friendly buttons (min 44px height) • Appropriate keyboard types (email, password) • Autofill support for credentials • No pinch/zoom required |
2 | High | Ready |
Feature Total: 8 Story Points
Feature: F-006 - Navigation & Layout Structure
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-017 | As a user, I want a consistent navigation menu so that I can easily move between sections | • Bottom navigation on mobile (Home, Map, Donate, Profile) • Sidebar navigation on desktop • Active state indicators • Icons + labels for clarity |
3 | High | Ready |
| US-018 | As a user, I want the app to be responsive so that I can use it on any device | • Breakpoints: mobile (<768px), tablet (768-1024px), desktop (>1024px) • No horizontal scroll on any device • Touch-friendly on mobile • Mouse-optimized on desktop |
3 | Critical | Ready |
| US-019 | As a user, I want visual consistency across all screens so that the experience feels cohesive | • Consistent color palette (green primary, earth tones) • Typography system defined • Spacing scale consistent • Component library (buttons, cards, forms) |
2 | High | Ready |
Feature Total: 8 Story Points
Feature: F-007 - User Dashboard
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-020 | As a logged-in user, I want to see my recycling summary on the dashboard so that I can track my impact | • Total recyclables donated (kg) • Number of donations • Environmental impact metrics (CO2 saved, trees planted equivalent) • Visual representation (charts/icons) |
3 | High | Ready |
| US-021 | As a user, I want quick access to key actions from the dashboard so that I can efficiently use the app | • "Find EcoPoint" button prominent • "View History" button accessible • "Scan QR Code" CTA visible • One-tap navigation to key features |
2 | High | Ready |
| US-022 | As a user, I want to see my recent donations on the dashboard so that I have quick overview of my activity | • List of last 5 donations • Display: date, material type, weight, status • Link to full history • Empty state if no donations |
3 | Medium | Ready |
Feature Total: 8 Story Points
Feature: F-008 - Accessibility Features
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-023 | As a user with visual impairment, I want sufficient color contrast so that I can read content easily | • Minimum 4.5:1 contrast ratio for normal text • Minimum 3:1 contrast for large text • Accessible color palette throughout • Tested with accessibility tools |
2 | Medium | Ready |
| US-024 | As a user with motor impairments, I want keyboard navigation support so that I can use the app without a mouse | • All interactive elements focusable via Tab • Visible focus indicators • Logical tab order • Keyboard shortcuts for main actions |
3 | Medium | Ready |
| US-025 | As a screen reader user, I want semantic HTML and ARIA labels so that I can understand the interface | • Proper heading hierarchy (h1, h2, h3) • Alt text for all images • ARIA labels for icon buttons • Form labels associated with inputs |
3 | Medium | Ready |
Feature Total: 8 Story Points
Epic EP-002 Total: 32 Story Points
EP-003: EcoPoint Location & Discovery
Feature: F-009 - EcoPoint Map View
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-026 | As a user, I want to see EcoPoints on a map so that I can find nearby collection stations | • Integration with mapping API (Google Maps/Mapbox) • Markers for each EcoPoint • User location marker • Zoom/pan controls functional |
5 | Critical | Ready |
| US-027 | As a user, I want to see my current location on the map so that I can orient myself | • Geolocation permission request • Blue dot for user location • Auto-center on user location on first load • "Locate me" button |
3 | Critical | Ready |
| US-028 | As a user, I want to see the distance to each EcoPoint so that I can choose the nearest one | • Distance calculation using haversine formula • Display distance in km/meters • Sort by distance option • Real-time distance updates as map moves |
3 | High | Ready |
| US-029 | As a user, I want to tap on an EcoPoint marker so that I can view its details | • Info window/modal appears on tap • Display: name, address, accepted materials, hours • "Get Directions" button • "View Details" link to full page |
2 | High | Ready |
Feature Total: 13 Story Points
Feature: F-010 - EcoPoint List View
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-030 | As a user, I want to see a list of nearby EcoPoints so that I can compare options | • List sorted by distance (default) • Card layout with: name, distance, address, accepted materials • Thumbnail image for each EcoPoint • Tap to view details |
3 | High | Ready |
| US-031 | As a user, I want to switch between map and list views so that I can choose my preferred visualization | • Toggle button (Map/List) • Maintain filter/search state when switching • Smooth transition between views • Active view indicator |
2 | Medium | Ready |
| US-032 | As a user, I want to search for EcoPoints by name or address so that I can find specific locations | • Search bar with placeholder text • Autocomplete suggestions • Real-time filtering as user types • "No results" state with helpful message |
3 | Medium | Ready |
Feature Total: 8 Story Points
Feature: F-011 - EcoPoint Detail Screen
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-033 | As a user, I want to view detailed information about an EcoPoint so that I know what to expect | • Display: name, full address, opening hours, contact info • Photo gallery (if available) • Accepted materials list with icons • Operational status indicator |
3 | High | Ready |
| US-034 | As a user, I want to get directions to an EcoPoint so that I can navigate there | • "Get Directions" button opens navigation app • Support for Google Maps and Apple Maps • Pass destination coordinates correctly • Fallback to web maps if apps not installed |
2 | High | Ready |
| US-035 | As a user, I want to see which recyclable materials are accepted so that I know what to bring | • Visual list with icons: plastic, glass, paper, metal, electronics • Color-coded categories • Clear labels for each material type • "Not accepted" list if applicable |
2 | High | Ready |
| US-036 | As a user, I want to see the EcoPoint's operational status so that I don't visit when closed | • Display status: Open/Closed/Full • Opening hours with current day highlighted • Next opening time if closed • Real-time status updates |
1 | Medium | Ready |
Feature Total: 8 Story Points
Epic EP-003 Total: 29 Story Points
EP-004: QR Code Access & Kiosk Integration
Feature: F-012 - QR Code Reader
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-037 | As a user at an EcoPoint, I want to scan the QR code so that I can start the donation process | • Camera permission request • QR code scanning interface • Visual feedback on successful scan • Redirect to donation page with EcoPoint context |
5 | Critical | Ready |
| US-038 | As a system, I must validate the QR code so that only authorized EcoPoints are accessed | • QR code contains: EcoPoint ID + timestamp + signature • Server-side validation • Reject expired codes (>5 min old) • Reject invalid/tampered codes |
3 | Critical | Ready |
| US-039 | As a user, I want clear instructions on how to scan the QR code so that I can complete the action successfully | • Instruction text: "Point camera at QR code" • Scanning frame overlay • Auto-scan when code detected • Troubleshooting tips if scan fails |
2 | High | Ready |
| US-040 | As a user with camera issues, I want to manually enter the EcoPoint code so that I can still donate | • "Enter code manually" option visible • Numeric input field • Code validation • Same flow as QR scan after validation |
3 | Medium | Ready |
Feature Total: 13 Story Points
Feature: F-013 - Session Timeout & Security
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-041 | As a system, I must enforce a 5-minute session timeout at EcoPoint kiosks so that stations remain available | • Countdown timer starts after login • Warning at 1 minute remaining • Auto-logout at 0:00 • Return to QR scan screen after logout |
3 | Critical | Ready |
| US-042 | As a user, I want to see the remaining session time so that I know how long I have | • Persistent timer in UI header • Color changes: green → yellow → red • "Extend session" button (adds 2 minutes, max 1 extension) • Timer pauses during active donation submission |
2 | High | Ready |
| US-043 | As a user, I want to manually end my session so that the next person can use the kiosk | • "End Session" button visible • Confirmation dialog: "Are you sure?" • Immediate logout on confirmation • Clear all session data |
2 | High | Ready |
| US-044 | As a system, I must clear all user data from the kiosk after logout so that privacy is protected | • Clear localStorage and sessionStorage • Revoke authentication tokens • Reset UI state to initial • No cached user information remains |
1 | Critical | Ready |
Feature Total: 8 Story Points
Epic EP-004 Total: 21 Story Points
EP-005: Donation Registration & Validation
Feature: F-014 - Donation Form
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-045 | As a user at an EcoPoint, I want to register my donation so that it's recorded in the system | • Form with material type dropdown • Quantity input (weight in kg or unit count) • Optional photo upload • Submit button • Loading state during submission |
5 | Critical | Ready |
| US-046 | As a user, I want to select from predefined material categories so that registration is quick | • Categories: Plastic, Glass, Paper/Cardboard, Metal/Aluminum, Electronics, Other • Icon for each category • Single selection (radio buttons or dropdown) • Clear visual feedback on selection |
2 | Critical | Ready |
| US-047 | As a user, I want to receive immediate feedback upon submitting a donation so that I know it was successful | • Success message with donation ID • Summary: material type, weight, points earned (if MVP2) • "View History" button • "Donate More" button • Celebration animation/confetti |
3 | High | Ready |
| US-048 | As a user, I want validation to prevent errors so that my data is accurate | • Required field validation • Weight/quantity must be > 0 • Material type selection required • Error messages per field • Prevent duplicate submissions |
3 | High | Ready |
Feature Total: 13 Story Points
Feature: F-015 - Invalid Donation Handling
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-049 | As a system, I must detect invalid donations so that contamination is discouraged | • Admin/sensor can flag donation as invalid • Validation rules: food-contaminated, non-recyclables • Detection triggered by manual review or sensor (future) • Invalid flag stored in database |
3 | High | Ready |
| US-050 | As a user who submits an invalid donation, I should be informed so that I can correct my behavior | • Error message explaining invalidity • Educational tip on proper recycling • Points deduction notification (temporary penalty for MVP1) • Link to educational content |
3 | High | Ready |
| US-051 | As a system, I must not register invalid donations in the user's history so that statistics remain accurate | • Invalid donations marked as "rejected" • Do not count toward total kg donated • Logged for analytics but separate from success history • User can view rejected donations separately |
2 | Medium | Ready |
Feature Total: 8 Story Points
Feature: F-016 - Donation History View
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-052 | As a user, I want to view my donation history so that I can track my recycling activity | • List of all donations • Display: date, time, material type, weight, EcoPoint name, status, points • Pagination or infinite scroll • Most recent first (default sort) |
3 | High | Ready |
| US-053 | As a user, I want to filter my donation history so that I can find specific entries | • Filter by date range (date picker) • Filter by material type (checkboxes) • Filter by EcoPoint location (dropdown) • Sort options: newest/oldest, highest/lowest weight • Clear filters button |
3 | High | Ready |
| US-054 | As a user, I want to see my total recycling impact so that I can understand my contribution | • Aggregate stats: total kg donated, total donations count • Environmental impact: CO2 saved (kg), water conserved (liters) • Visual representation (progress bars, charts) • Comparison to average user (optional) |
2 | Medium | Ready |
Feature Total: 8 Story Points
Feature: F-017 - Donation Details
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-055 | As a user, I want to view details of a specific donation so that I can review it | • Display: donation ID, timestamp, EcoPoint (with address) • Material type, weight/quantity • Photo (if uploaded) • Points earned, status • Map showing EcoPoint location |
2 | Medium | Ready |
| US-056 | As a user, I want to share my donation on social media so that I can inspire others | • Share button generates image with donation stats • Branded template with Ecolink logo • Share to: Instagram, Facebook, Twitter • Copy link option • Share count tracking |
3 | Low | Ready |
Feature Total: 5 Story Points
Epic EP-005 Total: 34 Story Points
EP-010: Backend Services & API
Feature: F-029 - Core API Endpoints
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-091 | As a developer, I want RESTful API endpoints for all core entities so that the frontend can interact with the backend | • Endpoints for: users, ecopoints, donations, sessions • Standard HTTP methods: GET, POST, PUT, DELETE • JSON request/response format • Consistent URL structure (/api/v1/...) |
8 | Critical | Ready |
| US-092 | As a system, I must validate all API requests so that data integrity is maintained | • Request schema validation (Joi/Yup/Zod) • Error responses with field-level details • Sanitization of inputs (prevent injection) • Validation middleware for all endpoints |
5 | Critical | Ready |
| US-093 | As a developer, I want API documentation so that integration is straightforward | • OpenAPI/Swagger documentation • Interactive API explorer • Example requests/responses • Authentication guide • Error code reference |
5 | High | Ready |
| US-094 | As a system, I must handle errors gracefully so that clients receive meaningful feedback | • Standardized error format: {code, message, details} • Appropriate HTTP status codes • Error logging with stack traces • User-friendly error messages |
3 | High | Ready |
Feature Total: 21 Story Points
Feature: F-030 - Authentication & Authorization Middleware
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-095 | As a system, I must authenticate API requests so that only authorized users access protected endpoints | • JWT verification middleware • Bearer token extraction from headers • Token expiration validation • 401 Unauthorized for invalid tokens |
5 | Critical | Ready |
| US-096 | As a system, I must authorize requests based on user roles so that permissions are enforced | • Role-based middleware: requireAuth, requireAdmin, requireCooperative • 403 Forbidden for insufficient permissions • Role checking against JWT claims • Permission matrix documented |
5 | Critical | Ready |
| US-097 | As a system, I must rate-limit API requests so that abuse is prevented | • Rate limiting middleware (express-rate-limit) • 100 requests/minute per IP (configurable) • 429 Too Many Requests response • Different limits per endpoint type • Bypass for authenticated admins |
3 | High | Ready |
Feature Total: 13 Story Points
Feature: F-031 - Database Schema
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-098 | As a developer, I want a normalized database schema so that data is efficiently stored | • Collections/Tables: users, ecopoints, donations, sessions, badges, content, credits • Relationships defined (foreign keys or references) • Indexes on frequently queried fields • Schema documentation |
8 | Critical | Ready |
| US-099 | As a system, I must ensure data consistency so that referential integrity is maintained | • Foreign key constraints (or MongoDB references) • Cascading deletes where appropriate • Transaction support for critical operations • Data validation at database level |
3 | Critical | Ready |
| US-100 | As a developer, I want database migrations so that schema changes are versioned | • Migration tool: migrate-mongo or Sequelize migrations • Up/down migration scripts • Migration history tracking • Rollback capability • Seed data for development |
2 | High | Ready |
Feature Total: 13 Story Points
Feature: F-032 - Data Access Layer
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-101 | As a developer, I want ORM/ODM abstraction so that database operations are simplified | • Mongoose (MongoDB) or Sequelize (PostgreSQL) • Model definitions with validation • Query methods: find, create, update, delete • Virtual fields and hooks • Relationship management |
5 | High | Ready |
| US-102 | As a system, I must log database queries in development so that debugging is easier | • Query logging in development mode only • Performance metrics: query time • Slow query alerts (>100ms) • Query parameter logging • Toggle via environment variable |
3 | Medium | Ready |
Feature Total: 8 Story Points
Epic EP-010 Total: 55 Story Points
EP-011: Frontend Architecture & State Management
Feature: F-033 - Component Architecture
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-103 | As a developer, I want a component-based architecture so that code is reusable | • Folder structure: components/, pages/, layouts/, hooks/, utils/ • Clear separation of concerns • Reusable components isolated • Props documentation • Component naming conventions |
5 | Critical | Ready |
| US-104 | As a developer, I want shared components so that UI is consistent | • Component library: Button, Input, Card, Modal, Badge, Avatar, Loading, Error • Storybook for component documentation • Prop types/TypeScript interfaces • Variants and themes support |
5 | High | Ready |
| US-105 | As a developer, I want routing configured so that navigation works | • React Router setup • Route definitions for all pages • Protected routes (auth required) • 404 page • Route transitions/animations • Breadcrumbs |
3 | Critical | Ready |
Feature Total: 13 Story Points
Feature: F-034 - State Management
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-106 | As a developer, I want global state management so that data flows predictably | • Context API or Redux setup • Auth state: user, token, isAuthenticated • App state: loading, errors • Persistent state synced with localStorage • State update patterns documented |
5 | High | Ready |
| US-107 | As a developer, I want API integration hooks so that data fetching is standardized | • Custom hooks: useAuth, useDonations, useEcoPoints • Loading and error states handled • Automatic retry on failure • Request cancellation on unmount • Caching strategy |
3 | High | Ready |
Feature Total: 8 Story Points
Feature: F-035 - CI/CD Configuration
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-108 | As a developer, I want automated testing so that regressions are caught early | • Jest + React Testing Library setup • Unit tests for utilities and hooks • Integration tests for components • >80% code coverage target • Test reports generated |
5 | High | Ready |
| US-109 | As a team, we want CI/CD pipeline so that deployment is automated | • GitHub Actions workflow configured • Run tests on every PR • Deploy to staging on merge to develop • Deploy to production on release tag • Environment-specific configurations |
3 | High | Ready |
Feature Total: 8 Story Points
Epic EP-011 Total: 29 Story Points (Adjusted: 21 for MVP1 core, 8 for testing/deployment)
EP-012: Security & Data Protection
Feature: F-036 - Security Hardening
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-110 | As a system, I must protect against common vulnerabilities so that user data is secure | • Helmet.js for security headers (CSP, X-Frame-Options, etc.) • CORS configuration (whitelist origins) • SQL/NoSQL injection prevention • XSS protection (input sanitization) • CSRF tokens for state-changing operations |
5 | Critical | Ready |
| US-111 | As a system, I must encrypt sensitive data so that privacy is maintained | • Bcrypt for password hashing (10 rounds minimum) • HTTPS enforced in production • Encrypted environment variables • Secure session storage (HTTP-only cookies) • TLS 1.3 minimum |
5 | Critical | Ready |
| US-112 | As a system, I must log security events so that threats can be detected | • Log failed login attempts • Suspicious activity alerts (multiple failed logins, unusual patterns) • Audit trail for sensitive operations (admin actions, data changes) • Log retention policy: 90 days • Secure log storage |
3 | High | Ready |
Feature Total: 13 Story Points
Feature: F-037 - Privacy Controls
| ID | User Story | Acceptance Criteria | Story Points | Priority | Status |
|---|---|---|---|---|---|
| US-113 | As a user, I want to control my data so that my privacy is protected | • Data export option (download as JSON) • Account deletion with confirmation • Consent management for data processing • Privacy policy acceptance on registration • LGPD compliance notices |
5 | High | Ready |
| US-114 | As a system, I must anonymize data for analytics so that privacy is preserved | • No personally identifiable information in analytics • Aggregate statistics only • Opt-out mechanism for analytics • Data retention policies enforced • Anonymization scripts documented |
3 | Medium | Ready |
Feature Total: 8 Story Points
Epic EP-012 Total: 21 Story Points
3. MVP1 Sprint Allocation
Sprint 1 (Weeks 1-2): Foundation & Authentication
Focus: Project setup, backend foundation, authentication
| Epic | Features | User Stories | Story Points |
|---|---|---|---|
| EP-010 | F-029, F-030, F-031 | US-091 to US-100 | 47 |
| EP-001 | F-001 | US-001 to US-004 | 13 |
| Total | 5 | 13 | 60 (Reduced to ~42 for realistic sprint) |
Adjusted Sprint 1: US-091 to US-100, US-001 to US-004 (~42 points)
Sprint 2 (Weeks 3-4): User Management & UI Framework
Focus: Complete authentication, start UI components
| Epic | Features | User Stories | Story Points |
|---|---|---|---|
| EP-001 | F-002, F-003, F-004 | US-005 to US-013 | 29 |
| EP-011 | F-033 | US-103 to US-105 | 13 |
| Total | 4 | 12 | 42 |
Sprint 3 (Weeks 5-6): UI Screens & Navigation
Focus: Build main UI screens and navigation
| Epic | Features | User Stories | Story Points |
|---|---|---|---|
| EP-002 | F-005, F-006, F-007 | US-014 to US-022 | 24 |
| EP-011 | F-034 | US-106, US-107 | 8 |
| EP-010 | F-032 | US-101, US-102 | 8 |
| Total | 5 | 12 | 40 |
Sprint 4 (Weeks 7-8): EcoPoint Discovery
Focus: Map integration, EcoPoint features
| Epic | Features | User Stories | Story Points |
|---|---|---|---|
| EP-003 | F-009, F-010, F-011 | US-026 to US-036 | 29 |
| EP-002 | F-008 | US-023 to US-025 | 8 |
| Total | 4 | 14 | 37 |
Sprint 5 (Weeks 9-10): QR Code & Donation Flow
Focus: QR scanning, donation registration
| Epic | Features | User Stories | Story Points |
|---|---|---|---|
| EP-004 | F-012, F-013 | US-037 to US-044 | 21 |
| EP-005 | F-014, F-015 | US-045 to US-051 | 21 |
| Total | 4 | 15 | 42 |
Sprint 6 (Weeks 11-12): History, Security & Finalization
Focus: Donation history, security hardening, UAT
| Epic | Features | User Stories | Story Points |
|---|---|---|---|
| EP-005 | F-016, F-017 | US-052 to US-056 | 13 |
| EP-012 | F-036, F-037 | US-110 to US-114 | 21 |
| EP-011 | F-035 | US-108, US-109 | 8 |
| Total | 5 | 13 | 42 |
4. MVP1 Summary
Effort Distribution by Epic
| Epic ID | Epic Name | Story Points | % of Total | Priority |
|---|---|---|---|---|
| EP-010 | Backend Services & API | 55 | 21.8% | Critical |
| EP-001 | User Authentication & Profile Management | 42 | 16.7% | Critical |
| EP-005 | Donation Registration & Validation | 34 | 13.5% | Critical |
| EP-002 | User Interface & Experience Design | 32 | 12.7% | Critical |
| EP-003 | EcoPoint Location & Discovery | 29 | 11.5% | Critical |
| EP-004 | QR Code Access & Kiosk Integration | 21 | 8.3% | Critical |
| EP-012 | Security & Data Protection | 21 | 8.3% | Critical |
| EP-011 | Frontend Architecture & State Management | 21 | 8.3% | Critical |
| Total | 8 Epics | 252 | 100% | — |
Story Point Distribution by Sprint
| Sprint | Weeks | Planned Story Points | Theme |
|---|---|---|---|
| Sprint 1 | 1-2 | 42 | Foundation & Authentication |
| Sprint 2 | 3-4 | 42 | User Management & UI Framework |
| Sprint 3 | 5-6 | 40 | UI Screens & Navigation |
| Sprint 4 | 7-8 | 37 | EcoPoint Discovery |
| Sprint 5 | 9-10 | 42 | QR Code & Donation Flow |
| Sprint 6 | 11-12 | 42 | History, Security & Finalization |
| Total | 12 weeks | 245 | MVP1 Complete |
Note: 7 points reserved for bug fixes and UAT adjustments
Priority Breakdown
| Priority | User Stories | Story Points | % of Total |
|---|---|---|---|
| Critical | 38 | 158 | 62.7% |
| High | 24 | 79 | 31.3% |
| Medium | 6 | 15 | 6.0% |
| Low | 0 | 0 | 0% |
| Total | 68 | 252 | 100% |
5. Definition of Ready (DoR)
Before a user story enters a sprint, it must meet these criteria:
- ✅ Acceptance criteria clearly defined
- ✅ Dependencies identified and resolved
- ✅ Design mockups available (for UI stories)
- ✅ Technical approach discussed and agreed upon
- ✅ Story points estimated by the team
- ✅ No external blockers
- ✅ Test scenarios outlined
6. Definition of Done (DoD)
A user story is considered complete when:
- ✅ Code written and peer-reviewed
- ✅ Unit tests written (>80% coverage for new code)
- ✅ Integration tests pass
- ✅ Acceptance criteria validated
- ✅ Documentation updated (code comments, API docs, user guides)
- ✅ Deployed to staging environment
- ✅ Product Owner acceptance
- ✅ No critical or high-severity bugs
7. Risk Register
| Risk ID | Risk Description | Probability | Impact | Mitigation Strategy | Owner |
|---|---|---|---|---|---|
| R-001 | QR code hardware incompatibility | Medium | High | Early hardware testing, manual code entry fallback (US-040) | Tech Lead |
| R-002 | Map API cost overruns | Low | Medium | Monitor API usage, implement caching, consider alternative providers | Backend Lead |
| R-003 | Performance issues under load | Medium | Medium | Load testing in Sprint 5-6, optimize database queries | Backend Lead |
| R-004 | Security vulnerabilities | Low | Critical | Security audit in Sprint 6, penetration testing before production | Security Engineer |
| R-005 | Team velocity below estimates | Medium | High | 20% buffer in planning, prioritize ruthlessly, reduce scope if needed | Project Manager |
| R-006 | Integration delays (maps, payments) | Medium | Medium | Early POC for critical integrations, fallback plans | Tech Lead |
8. Success Metrics
Delivery Metrics
| Metric | Target | Measurement |
|---|---|---|
| Sprint Velocity | 40-42 points/sprint | Actual story points completed |
| Sprint Completion Rate | >90% | Stories completed vs. planned |
| Defect Density | <5 bugs per 100 story points | Bug tracking system |
| Code Coverage | >80% | Automated testing tools |
| Production Incidents | 0 critical, <2 high | Incident log |
Quality Metrics
| Metric | Target | Measurement |
|---|---|---|
| UAT Pass Rate | >90% | Test case results |
| Performance (API) | <500ms (p95) | APM tools |
| Performance (Frontend) | <2s FCP | Lighthouse |
| Security Score | A grade | OWASP ZAP scan |
| Accessibility Score | >90 | Lighthouse accessibility audit |
User Metrics (First 30 Days Post-Launch)
| Metric | Target | Stretch Goal |
|---|---|---|
| User Registrations | 200 | 500 |
| Active Users (Weekly) | 50 | 150 |
| Donations Registered | 300 | 800 |
| QR Scan Success Rate | >90% | >95% |
| Mobile Users | >70% | >80% |
9. Notes & Assumptions
Technical Assumptions
- Node.js 18+ and React 18+ will be used
- MongoDB or PostgreSQL for database (decision to be made in Sprint 1)
- Deployment on cloud infrastructure (AWS, GCP, or Azure)
- Mobile-first development approach
- API-first architecture
Business Assumptions
- UnB administration support confirmed
- At least 1 EcoPoint available for MVP1 launch
- Waste picker cooperatives engaged for future content (MVP2)
Out of Scope for MVP1
- Points and credits system (MVP2)
- Gamification features (MVP2)
- Educational content CMS (MVP2)
- Push notifications
- Offline mode / PWA
- Multi-language support (only PT-BR)
- Advanced analytics dashboard
10. Revision History
| Date | Version | Author | Changes |
|---|---|---|---|
| 2025-10-07 | 1.0 | Mateus Vieira | Initial MVP1 user story document with complete acceptance criteria and sprint allocation |