SASA FOOD — Software Requirements Specification (SRS)
Table of Contents
- 1 Document Information
- 2 Project Overview
- 3 User Requirements
- 4 Detailed Feature Requirements
- 5 Technical Requirements
- 6 External Dependencies
- 7 Release Planning
- 8 Risks Assumptions
- 9 Market Specific Considerations
- 10 Sign Off
- 11 Additional Context
1 Document Information
| Field | Value |
|---|---|
| Project Name | SASA FOOD |
| Version | 1.1 |
| Date | 2025-09-10 |
| Project Manager | Kelvin |
| Tech Lead | Ezekiel |
| Qa Lead | Tumaini |
| Platforms | ['Android', 'iOS'] |
| Document Status | Draft |
2 Project Overview
2.1 What Are We Building
2.1.1 System Function
A mobile food delivery platform that connects customers with restaurants for ordering and delivering meals on-demand
2.1.2 Users
- Customers (ordering food)
- Restaurant partners (managing menus and orders)
- Delivery drivers (fulfilling orders)
- Admins (platform management)
2.1.3 Problem Solved
Provides convenient, affordable, and reliable food delivery service in Tanzania through a digital platform
2.1.4 Key Success Metric
500+ active customers and 50+ partner restaurants within 3 months of launch
2.2 Scope
2.2.1 In Scope
- Restaurant browsing and menu viewing
- Order placement and management
- Payment processing (Mobile Money + Cards)
- User authentication and profiles
- Order tracking and status updates
- Restaurant partner onboarding
- Basic customer support
- Loyalty program with rewards
2.2.2 Out Of Scope
- Grocery delivery services
- Meal kit subscriptions
- Restaurant inventory management
- Advanced analytics dashboard
- Multi-city operations (Phase 1)
- Corporate catering services
3 User Requirements
3.1 Authentication User Management
| Feature Code | I Want To | So That I Can | Priority | Notes |
|---|---|---|---|---|
| FT-AUTH-REG | Register using phone number or email | Create an account and place food orders | Must | SMS/Email verification required |
| FT-AUTH-LOGIN | Log into my account securely | Access my profile and order history | Must | Support fingerprint login |
| FT-AUTH-LOGOUT | Log out of the app | Protect my account when sharing device | Must | Clear all session data |
| FT-AUTH-RESET | Reset my password via OTP | Recover access to my account | Must | SMS and email options |
| FT-AUTH-PROFILE | Edit my profile and delivery addresses | Keep my information current | Should | Multiple delivery addresses |
3.2 Core Business Features
| Feature Code | I Want To | So That I Can | Priority | Notes |
|---|---|---|---|---|
| FT-REST-BROWSE | Browse available restaurants near me | Find places to order food from | Must | Show ratings, delivery time, cuisine type |
| FT-MENU-VIEW | View restaurant menus with prices | Choose what food to order | Must | Categorized by food type |
| FT-SEARCH-FOOD | Search for specific dishes or restaurants | Quickly find food I want | Should | Search by name, cuisine, restaurant |
| FT-ORDER-CREATE | Add items to cart and place orders | Purchase food for delivery | Must | Show estimated delivery time |
| FT-PAY-PROCESS | Pay for orders using mobile money or cards | Complete transactions conveniently | Must | M-Pesa, Tigo Pesa, Airtel Money support |
| FT-LOCATION-SET | Set and manage delivery locations | Receive orders at the correct address | Must | GPS location detection |
3.3 Additional Features
| Feature Code | I Want To | So That I Can | Priority | Notes |
|---|---|---|---|---|
| FT-ORDER-TRACK | Track my order status in real-time | Know when my food will be delivered | Should | Push notifications for status updates |
| FT-REST-MANAGE | Add restaurants to favorites | Easily reorder from preferred places | Could | Restaurant favorites list |
| FT-LANG-SELECT | Choose app language (English/Swahili) | Use the app in my preferred language | Could | Multi-language support |
4 Detailed Feature Requirements
4.1 Ft Auth Reg
4.1.1 Priority
Must Have
4.1.2 User Story
As a new customer, I want to create an account using my phone number so that I can order food through SASA FOOD
4.1.3 Preconditions
User downloads app, opens registration screen, has valid phone number or email
4.1.4 Postconditions
Account created, verification SMS/email sent, user can log in and browse restaurants
4.1.5 Test Cases
| Id | Description | Weight |
|---|---|---|
| AUTH-TC-001 | Verify user can register successfully using valid email and password | High |
| AUTH-TC-002 | Verify user can register successfully using valid phone number and password | High |
| AUTH-TC-003 | Verify system shows error for invalid email/phone formats | High |
| AUTH-TC-004 | Verify password requirements are enforced (min 8 characters, complexity) | Medium |
| AUTH-TC-005 | Verify verification email/SMS sent within 2 minutes | High |
| AUTH-TC-006 | Verify duplicate registration prevention with clear error message | High |
| AUTH-TC-007 | Verify user auto-logged in after successful verification | Medium |
4.2 Ft Auth Login
4.2.1 Priority
Must Have
4.2.2 User Story
As a returning customer, I want to log into my account so that I can access my profile and place orders
4.2.3 Preconditions
User has existing account, opens app, navigates to login screen
4.2.4 Postconditions
User authenticated, redirected to home screen with restaurant list
4.2.5 Test Cases
| Id | Description | Weight |
|---|---|---|
| AUTH-TC-008 | Verify successful login with correct email and password | High |
| AUTH-TC-009 | Verify appropriate error message for invalid credentials | High |
| AUTH-TC-010 | Verify user session persists until explicit logout | Medium |
| AUTH-TC-011 | Verify successful logout clears session data | High |
| AUTH-TC-012 | Verify fingerprint/biometric login functionality works correctly | Medium |
4.3 Ft Auth Logout
4.3.1 Priority
Must Have
4.3.2 User Story
As a user, I want to log out of the app so that I can protect my account when sharing device
4.3.3 Preconditions
User is logged in and has access to logout function in profile or settings menu
4.3.4 Postconditions
User session terminated, all cached data cleared, user redirected to login screen
4.3.5 Test Cases
| Id | Description | Weight |
|---|---|---|
| AUTH-TC-013 | Verify logout function successfully terminates user session | High |
| AUTH-TC-014 | Verify all cached user data is cleared after logout | High |
| AUTH-TC-015 | Verify user is redirected to login screen after logout | Medium |
| AUTH-TC-016 | Verify biometric authentication is disabled after logout until re-enabled | Medium |
4.4 Ft Auth Reset
4.4.1 Priority
Must Have
4.4.2 User Story
As a user, I want to reset my password via OTP so that I can recover access to my account
4.4.3 Preconditions
User has forgotten password and is on the login screen
4.4.4 Postconditions
Password reset successfully, user can log in with new password
4.4.5 Test Cases
| Id | Description | Weight |
|---|---|---|
| AUTH-TC-017 | Verify password reset via SMS OTP for registered phone number | High |
| AUTH-TC-018 | Verify password reset via email OTP for registered email address | High |
| AUTH-TC-019 | Verify OTP expires after specified time period | Medium |
| AUTH-TC-020 | Verify new password meets complexity requirements | High |
| AUTH-TC-021 | Verify user can log in immediately after successful password reset | High |
4.5 Ft Auth Profile
4.5.1 Priority
Should Have
4.5.2 User Story
As a user, I want to edit my profile and delivery addresses so that I can keep my information current
4.5.3 Preconditions
User is logged in and has navigated to profile settings
4.5.4 Postconditions
Profile information updated, multiple delivery addresses saved and managed
4.5.5 Test Cases
| Id | Description | Weight |
|---|---|---|
| AUTH-TC-022 | Verify user can edit basic profile information (name, phone, email) | High |
| AUTH-TC-023 | Verify user can add multiple delivery addresses | High |
| AUTH-TC-024 | Verify user can edit and delete existing delivery addresses | Medium |
| AUTH-TC-025 | Verify user can set a default delivery address | Medium |
| AUTH-TC-026 | Verify profile changes are saved and persisted across app sessions | High |
4.6 Ft Rest Browse
4.6.1 Priority
Must Have
4.6.2 User Story
As a customer, I want to browse available restaurants so that I can choose where to order food from
4.6.3 Preconditions
User is logged in, has location permission enabled, is in service area
4.6.4 Postconditions
User sees list of available restaurants with key details like ratings and delivery time
4.6.5 Test Cases
| Id | Description | Weight |
|---|---|---|
| MENU-TC-001 | Verify restaurant list displays with name, rating, and estimated delivery time | High |
| MENU-TC-002 | Verify restaurant menu page loads with categorized food items | High |
| MENU-TC-003 | Verify restaurant filtering by cuisine type works correctly | Medium |
| MENU-TC-004 | Verify restaurant operating hours and availability status display | Medium |
| MENU-TC-005 | Verify restaurant list loads within 2 seconds | High |
4.7 Ft Menu View
4.7.1 Priority
Must Have
4.7.2 User Story
As a customer, I want to view restaurant menus with prices so that I can decide what to order
4.7.3 Preconditions
User selects a restaurant from the browse list
4.7.4 Postconditions
User sees categorized menu with dishes, prices, and descriptions
4.7.5 Test Cases
| Id | Description | Weight |
|---|---|---|
| MENU-TC-006 | Verify menu displays dishes categorized by food type (appetizers, mains, desserts) | High |
| MENU-TC-007 | Verify each menu item shows name, description, price, and image | High |
| MENU-TC-008 | Verify search functionality finds dishes matching keywords | Medium |
| MENU-TC-009 | Verify menu loads completely within 2 seconds | High |
| MENU-TC-010 | Verify items can be added to cart directly from menu view | High |
4.8 Ft Search Food
4.8.1 Priority
Should Have
4.8.2 User Story
As a customer, I want to search for specific dishes or restaurants so that I can quickly find food I want
4.8.3 Preconditions
User is on the home screen or restaurant browsing page
4.8.4 Postconditions
Search results display relevant dishes and restaurants matching the query
4.8.5 Test Cases
| Id | Description | Weight |
|---|---|---|
| SEARCH-TC-001 | Verify search returns relevant results for dish names | High |
| SEARCH-TC-002 | Verify search returns relevant results for restaurant names | High |
| SEARCH-TC-003 | Verify search returns relevant results for cuisine types | Medium |
| SEARCH-TC-004 | Verify search response time is under 1 second | High |
| SEARCH-TC-005 | Verify search handles typos and partial matches | Medium |
| SEARCH-TC-006 | Verify empty search results display appropriate message | Low |
4.9 Ft Order Create
4.9.1 Priority
Must Have
4.9.2 User Story
As a customer, I want to add items to my cart and place orders so that I can purchase food for delivery
4.9.3 Preconditions
User is viewing menu, has selected desired items
4.9.4 Postconditions
Items added to cart, user can review order and proceed to checkout
4.9.5 Test Cases
| Id | Description | Weight |
|---|---|---|
| ORDER-TC-001 | Verify dishes can be added to cart with confirmation message | High |
| ORDER-TC-002 | Verify cart quantities can be updated and subtotal recalculates | High |
| ORDER-TC-003 | Verify dishes can be removed from cart and total updates | High |
| ORDER-TC-004 | Verify cart displays item details, quantities, and running total | High |
| ORDER-TC-005 | Verify cart persists items during app session | Medium |
| ORDER-TC-006 | Verify minimum order amount validation (if applicable) | Medium |
| ORDER-TC-007 | Verify estimated delivery time is displayed in cart | Medium |
4.10 Ft Pay Process
4.10.1 Priority
Must Have
4.10.2 User Story
As a customer, I want to complete payment for my order so that the restaurant can prepare and deliver my food
4.10.3 Preconditions
User has items in cart, proceeds to checkout with delivery address
4.10.4 Postconditions
Payment processed, order confirmed, restaurant and delivery partner notified
4.10.5 Test Cases
| Id | Description | Weight |
|---|---|---|
| CHK-TC-001 | Verify checkout page displays order summary, delivery address, and payment options | High |
| CHK-TC-002 | Verify successful order placement with payment confirmation | High |
| CHK-TC-003 | Verify mobile money payment processing (M-Pesa, Tigo Pesa, Airtel Money) | High |
| CHK-TC-004 | Verify credit/debit card payment processing | High |
| CHK-TC-005 | Verify order confirmation displays with estimated delivery time | High |
| CHK-TC-006 | Verify user receives order confirmation via SMS/email | Medium |
| CHK-TC-007 | Verify failed payment handling with retry options | High |
| CHK-TC-008 | Verify cash on delivery option availability | Medium |
4.11 Ft Location Set
4.11.1 Priority
Must Have
4.11.2 User Story
As a customer, I want to set my delivery location so that my food is delivered to the correct address
4.11.3 Preconditions
User needs to place an order or update delivery preferences
4.11.4 Postconditions
Delivery address confirmed, available restaurants filtered by service area
4.11.5 Test Cases
| Id | Description | Weight |
|---|---|---|
| LOC-TC-001 | Verify user can set delivery location using current GPS coordinates | High |
| LOC-TC-002 | Verify user can manually enter and search for delivery address | High |
| LOC-TC-003 | Verify user can save multiple delivery addresses | Medium |
| LOC-TC-004 | Verify restaurants filter based on delivery location service area | High |
| LOC-TC-005 | Verify location permission request and handling | High |
4.12 Ft Order Track
4.12.1 Priority
Should Have
4.12.2 User Story
As a customer, I want to track my order status in real-time so that I can know when my food will be delivered
4.12.3 Preconditions
User has placed an order and order is being processed
4.12.4 Postconditions
Real-time order status updates displayed with push notifications
4.12.5 Test Cases
| Id | Description | Weight |
|---|---|---|
| TRACK-TC-001 | Verify order tracking page displays current order status | High |
| TRACK-TC-002 | Verify push notifications sent for order status changes | High |
| TRACK-TC-003 | Verify order status updates in real-time (preparing, ready, out for delivery) | High |
| TRACK-TC-004 | Verify estimated delivery time updates based on order progress | Medium |
| TRACK-TC-005 | Verify delivery driver location tracking when order is out for delivery | Medium |
| TRACK-TC-006 | Verify order completion notification when food is delivered | High |
4.13 Ft Rest Manage
4.13.1 Priority
Could Have
4.13.2 User Story
As a customer, I want to add restaurants to favorites so that I can easily reorder from preferred places
4.13.3 Preconditions
User is viewing restaurant details or has previously ordered from restaurants
4.13.4 Postconditions
Restaurants added to favorites list, easily accessible for reordering
4.13.5 Test Cases
| Id | Description | Weight |
|---|---|---|
| FAV-TC-001 | Verify user can add restaurants to favorites from restaurant page | Medium |
| FAV-TC-002 | Verify user can remove restaurants from favorites list | Medium |
| FAV-TC-003 | Verify favorites list displays saved restaurants with quick access | Medium |
| FAV-TC-004 | Verify favorite status persists across app sessions | Medium |
| FAV-TC-005 | Verify favorites list shows restaurant availability status | Low |
4.14 Ft Lang Select
4.14.1 Priority
Could Have
4.14.2 User Story
As a customer, I want to choose app language (English/Swahili) so that I can use the app in my preferred language
4.14.3 Preconditions
User has accessed app settings or language preferences
4.14.4 Postconditions
App interface displays in selected language, setting persists across sessions
4.14.5 Test Cases
| Id | Description | Weight |
|---|---|---|
| LANG-TC-001 | Verify language selection option is available in app settings | Medium |
| LANG-TC-002 | Verify app interface switches to English when English is selected | High |
| LANG-TC-003 | Verify app interface switches to Swahili when Swahili is selected | High |
| LANG-TC-004 | Verify language setting persists after app restart | Medium |
| LANG-TC-005 | Verify all UI elements display correctly in both languages without text truncation | High |
| LANG-TC-006 | Verify currency and number formatting adapts to selected language locale | Medium |
5 Technical Requirements
5.1 Performance Standards
| Requirement | Target | How To Test |
|---|---|---|
| App loads in | ≤ 3 seconds | Stopwatch testing on Pixel 4a and iPhone 11 |
| Restaurant list loads | ≤ 2 seconds | Manual testing with different network speeds |
| Menu page loads | ≤ 2 seconds | Performance monitoring during testing |
| Search response time | ≤ 1 second | User testing with various search queries |
| Works with users | 500 concurrent | Load testing with simulated users |
| Uptime | 99% or better | Monitoring and alerting systems |
| Works offline | No | Requires internet for core functionality |
5.2 Platform Requirements
| Platform | Minimum Version | Target Version | Notes |
|---|---|---|---|
| Android | API 21 (Android 5.0) | API 30+ (Android 11+) | Tested on Pixel 4a, Google Play Store requirements |
| iOS | iOS 12.0 | iOS 15.0+ | Tested on iPhone 11, App Store guidelines compliance |
| Web Browsers | N/A - Mobile only | N/A | Future Phase 3 consideration |
5.3 Security Privacy
| Requirement | Must Have | Implementation |
|---|---|---|
| User data encryption | True | AES-256 encryption for PII data at rest and in transit |
| Secure passwords | True | Min 8 characters, complexity requirements, bcrypt hashing |
| Privacy compliance | True | GDPR + Tanzania Data Protection Act |
| Data backup | True | Automated daily backups with 30-day retention |
| Payment security | True | PCI DSS compliance, tokenized payment data |
6 External Dependencies
6.1 Third Party Services
| Service | What It Does | Criticality | Backup Plan |
|---|---|---|---|
| Google Maps API | Location services, delivery tracking, address search | Critical | OpenStreetMap fallback |
| M-Pesa API | Primary mobile money payment processing | Critical | Cash on delivery option |
| Tigo Pesa API | Secondary mobile money payment option | Important | M-Pesa and cash alternatives |
| Airtel Money API | Third mobile money payment option | Important | Other payment methods |
| Payment Gateway | Credit/debit card payment processing | Important | Mobile money and cash fallback |
| Twilio SMS | OTP delivery, order confirmations | Important | Email notifications backup |
| Firebase Push | Real-time notifications for order updates | Important | In-app notifications only |
| AWS/Cloud Infrastructure | App hosting, database, file storage | Critical | Multi-region deployment |
6.2 Device Requirements
| Feature | Required | Optional | Notes |
|---|---|---|---|
| Camera | False | True | Profile photos, food images, receipt scanning |
| GPS/Location | True | False | Essential for delivery address and restaurant discovery |
| Push Notifications | True | False | Order updates, promotional offers, delivery notifications |
| Biometrics | False | True | Fingerprint/Face ID for convenient and secure login |
| Internet Connection | True | False | Required for all core functionality |
7 Release Planning
7.1 Development Phases
| Phase | Features Included | Timeline | Success Criteria |
|---|---|---|---|
| Phase 1 (MVP) | ['FT-AUTH-REG', 'FT-AUTH-LOGIN', 'FT-AUTH-LOGOUT', 'FT-AUTH-RESET', 'FT-REST-BROWSE', 'FT-MENU-VIEW', 'FT-ORDER-CREATE', 'FT-PAY-PROCESS', 'FT-LOCATION-SET'] | 10 weeks | Core food ordering works end-to-end with payment |
| Phase 2 | ['FT-ORDER-TRACK', 'FT-SEARCH-FOOD', 'FT-AUTH-PROFILE', 'FT-REST-MANAGE', 'customer support'] | 4 weeks | Enhanced user experience and order management |
| Phase 3 | ['FT-LANG-SELECT', 'loyalty program', 'advanced analytics', 'web platform'] | 6 weeks | Complete feature set for market expansion |
7.2 Release Checklist
- All 'Must Have' features working on Android and iOS
- Zero critical bugs (restaurant creation, order placement, payment failures)
- Performance tests passed (app load ≤ 3s, restaurant list ≤ 2s)
- Security review completed (payment security, data protection audit)
- User acceptance testing with real restaurants and customers
- Google Play Store and Apple App Store approval received
- Mobile money integration certified (M-Pesa, Tigo Pesa, Airtel Money)
- Privacy policy and terms of service accessible and compliant
- Restaurant partner onboarding process established
- Customer support system operational
8 Risks Assumptions
8.1 Risks
| Risk | Probability | Impact | Mitigation |
|---|---|---|---|
| Restaurant onboarding slower than expected | High | High | Early outreach, incentives, dedicated managers |
| Mobile money API integration complexity | Medium | High | Start early, cash payment backup, multi-provider |
| Competition from Jumia Food, Glovo | High | Medium | Focus on local restaurants, competitive pricing, superior service |
| Delivery logistics challenges | Medium | High | Partner with existing delivery services, build driver network |
| Privacy policy accessibility issues | Low | High | Fix document linking, ensure compliance |
| Performance during peak meal hours | Medium | High | Load testing, auto-scaling, performance monitoring |
8.2 Assumptions
- Target market has sufficient smartphone penetration (75%+ in urban areas)
- Restaurants willing to partner and pay commission fees (15-20%)
- Mobile money adoption is high enough for digital payments
- Delivery drivers available and willing to partner
- Internet infrastructure in major cities supports real-time tracking
- Regulatory environment remains favorable for food delivery
- Customers prefer convenience over traditional food ordering
9 Market Specific Considerations
9.1 Tanzania Food Delivery Market
9.1.1 Primary Market
- Dar es Salaam
- Arusha
- Mwanza
9.1.2 Target Demographics
- Urban professionals
- Students
- Families
- Tourists
9.1.3 Local Considerations
- Swahili language support
- Local cuisine preferences
- Prayer times
9.1.4 Payment Preferences
| Preference | Value |
|---|---|
| Mobile Money | 85% |
| Cash | 30% |
| Cards | 15% |
9.1.5 Competition
- Jumia Food
- local restaurants
- informal delivery services
10 Sign Off
10.1 Approval
| Role | Name | Signature | Date |
|---|---|---|---|
10.2 Document History
| Version | Date | Changes Made | Changed By |
|---|---|---|---|
| 1.0 | 2025-08-28 | Initial comprehensive version with detailed test cases | Sky Connect Team |
| 1.1 | 2025-09-10 | Added comprehensive detailed feature requirements for ALL features: FT-AUTH-LOGOUT, FT-AUTH-RESET, FT-AUTH-PROFILE, FT-SEARCH-FOOD, FT-ORDER-TRACK, FT-REST-MANAGE, and FT-LANG-SELECT. Moved core payment and location features to core_business_features section. Enhanced test coverage and documentation completeness. | Claude AI Assistant |
11 Additional Context
11.1 Success Metrics
11.1.1 Customer Acquisition
500+ active users within 3 months
11.1.2 Restaurant Partners
50+ restaurants onboarded within 2 months
11.1.3 Order Volume
100+ orders per day within 6 weeks of launch
11.1.4 Customer Satisfaction
≥ 4.0 star rating average
11.1.5 Order Success Rate
95%+ successful order completion
11.1.6 Average Delivery Time
Under 45 minutes during peak hours