SRS_1 - COS301-SE-2025/Hands-Up GitHub Wiki

Introduction

Imagine you are in a busy shopping centre and someone tries to get your attention — not with words, but through a series of hand gestures. You watch, trying to decipher the movements, but remain unsure. Gradually, you recognize it as sign language and find yourself wishing you understood, even just a little. You wish there were a way to translate their gestures. As TMKDT, we aim to turn those wishes into reality with Hands UP. A powerful application to help you — one sign at a time!

Hands UP is an innovative application that bridges the communication gap between signers and non-signers. Using advanced AI technology, the application detects and translates sign language in real-time through the device's camera, converting signs into both text and spoken language without significant delays. Beyond translation, it also serves as an interactive learning platform with structured lessons and immediate feedback on signing accuracy.


Domain Model

Domain Model

User Stories

Note: A user refers to anyone using the application, while a learner specifically refers to someone who has created an account.

User Story Acceptance Criteria Definition of Done
Registration
As a user,
I want to create an account with my name, username, email and password
So that I can access the sign language learning curriculum
- All input fields are required
- Email address is validated for correct format
- Password must be at least 8 characters
- Duplicate usernames and emails are not allowed
My account has been created successfully and I am automatically logged in and redirected to the learning homepage.
Login
As a learner,
I want to login into my account using my email and password
So that I can continue with the sign language learning curriculum
- All input fields are required
- User is authenticated against stored credentials
- Appropriate error message is shown for invalid login attempts
I have successfully logged in and automatically redirected to the learning homepage.
Forgot Password
As a learner,
I want to reset my password via a link sent to my email
So that I can regain access to my account if I have forgotten my password
- A reset link is sent to the email address if it exists
- Link redirects to a secure page to set a new password
- User receives confirmation of password change
My password is updated and I can now log in with the new credentials.
Manage Profile
As a learner,
I want to update my name, username, email and password
So that my account information remains valid and up to date
- All fields are editable
- Input is validated before saving
- Confirmation message is shown before updating
My changes are saved and I can see the updated details.
Learning Progress
As a learner,
I want to view my achievements, day streak and total XP
So that I can track my progress and stay motivated
- Achievements, day streak and total XP are displayed
- Data is updated after a task is completed
I am able to view my learning progress.
Camera Input for Translation
As a user,
I want to input signs using my device's camera
So that it can be translated into spoken and written language in real time
- Camera access is granted and working
- Signs are detected and captured
I have successfully entered a sign via the camera for translation.
Upload Input
As a user,
I want to upload images and videos from my device
So that they can be translated into spoken and written language in real time
- User has uploaded a supported file format The media I have chosen has been successfully uploaded and is now being processed.
Translate Letters
As a user,
I want to sign individual letters
So that they can be translated into spoken and written language in real time
- System recognises the individual signed letters from the input
- Signs are translated accurately
- Signs are translated in real time
- Translated signs are output as text and audio
- Letters appear in the correct order if multiple are signed
The letters I have signed are accurately translated and displayed immediately.
Translate Phrases
As a user,
I want to sign short and commonly used phrases
So that they can be translated into spoken and written language in real time
- System recognises the signs from the input
- Signs are translated accurately
- Signs are translated in real time
- Translated signs are output as text and audio
- Output matches the intended meaning
The phrases I have signed are accurately translated and displayed immediately.
Translate Sentences
As a user,
I want to sign full sentences
So that they can be translated into spoken and written language in real time
- System recognises the signs from the input
- Signs are translated accurately
- Signs are translated in real time
- Translated signs are output as text and audio
- Output matches the intended meaning
The sentences I have signed are accurately translated and displayed immediately.

Use Case Diagram

Use Case Diagram

Functional Requirements

FR 1: Application must allow user profile creation and customization
    FR 1.1: Users must be able to create and manage a personal account
    FR 1.2: Users must be able to log into their personal account
    FR 1.3: Users must be able to set learning goals and preferences

FR 2: Application must allow users to input visual data
    FR 2.1: The system must allow users to provide visual input via device cameras
    FR 2.2: The system must allow users to upload media (images/videos)

FR 3: Application must be able to translate sign language
    FR 3.2: Application must provide text output
    FR 3.3: Application must provide audio output

FR 4: Application must provide a structured curriculum
    FR 4.1: There should be an overview of the entire course
    FR 4.2: Lessons should be organized progressively, from basic to advanced topics
    FR 4.3: Each lesson should include clear objectives, interactive content, and practice exercises

FR 5: Application must support real-time feedback and correction
    FR 5.1: Users must receive immediate feedback on incorrect signs
    FR 5.2: Application must suggest correct hand gestures or movements

FR 6: Users should see their learning progress
    FR 6.1: Application should provide comprehensive progress analysis
        FR 6.1.1: The app must show the user's daily streak, total XP and achievements
    FR 6.2: Progress should be presented in a simple, graphical manner

FR 7: Application should support multiple dialects of sign language
    FR 7.1: Users must change their preferred dialect in settings
    FR 7.2: Content, translation and feedback should adapt based on the selected dialect

FR 8: Application must provide a built-in game to test sign language knowledge apart from lessons
    FR 8.1: The game should include challenges
    FR 8.2: Scores awarded should contribute to overall learner progress
    FR 8.3: Users should be able to replay the game at anytime


Architectural Requirements

Quality Requirements

Quality Attribute Description
Usability The system will feature an intuitive user interface designed for users of varying tech literacy. Accessible navigation and real-time visual feedback will ensure a smooth learning and translation experience.
Performance Real-time translation of sign language must occur with minimal latency (<200ms response time). The system should maintain responsiveness under concurrent user loads.
Scalability The architecture must support horizontal scaling to accommodate increasing numbers of users and data (especially for cloud-based ML inference).
Availability System uptime must be ≥ 99%, especially for real-time features. Cloud hosting and CDN caching will support this.
Security Secure user authentication (e.g., Firebase Auth), HTTPS communication, and data privacy compliance (e.g., POPIA/GDPR) will be implemented.
Maintainability Codebase will be modular with proper documentation and CI/CD integration (e.g., GitHub Actions, Docker) for seamless updates and bug fixes.
Offline Support As a PWA, the system will provide limited offline functionality (e.g., cached lessons, recent translations) using service workers.

Architectural Patterns

Client-Server Architecture: The core of the application will follow a traditional client-server model, where the frontend (React/Flutter Web) interacts with backend APIs (Node.js or FastAPI).

Microservices Architecture (Optional Future Enhancement): For scaling specific components (e.g., translation service, learning analytics), consider migrating to microservices. Useful if sign language models are containerized and deployed separately.

Event-Driven Architecture (for real-time feedback): WebSockets or similar technologies may be used to push real-time detection and feedback from the backend to the client.

MVC (Model-View-Controller): Separates the UI (View), data handling (Model), and app logic (Controller) for clear organization.

Design Patterns

Pattern Purpose
Observer Pattern Used to trigger UI updates in real-time when sign language is recognized (e.g., translating input frames to words).
Strategy Pattern Enables switching between different sign language models or learning modules dynamically.
Singleton Pattern For managing global app state like authenticated user, current lesson progress, or AI model instances.
Factory Pattern Instantiate different AI model types (learning, translation, gamification)

Constraints

Web-Based Delivery: The application must be accessible through modern web browsers. This limits hardware-level access but ensures platform independence.

Progressive Web App (PWA): The system must support PWA features such as:

  • Add to home screen
  • Offline support using service workers
  • Background sync and push notifications for learning reminders

Budget Limit: All technologies must be open-source or free-tier friendly. Preference for Google Cloud, Firebase, and GitHub for deployment and services.

Dataset Limitations For the initial phase of the project, we will use publicly available datasets such as the Sign Language MNIST and ASL alphabet datasets available on Kaggle. These datasets cover basic static hand gestures for American Sign Language (ASL).


Technology Requirements

1. Artificial Intelligence & Machine Learning
    1.1 The model must be capable of detecting, interpreting and translating hand gestures into text and speech in real time.
    1.2 The model must be hosted remotely and accessible via network calls from client applications.
    1.3 Users must be able to interact with the application without needing to perform local setup.

2. Backend & API
    2.1 The backend must provide APIs for user account management, translation input/output, progress tracking and gamification features.
    2.2 It must handle authentication, secure data access and integration with external services.
    2.3 It must be scalable and capable of serving requests from both web and mobile clients.

3. Frontend & Application Interface
    3.1 The system must support sign language recognition through visual input.
    3.2 A Progressive Web App (PWA) must be provided.
    3.3 The interface must provide speech output to accompany text translation results.

4. Data Storage & User Management
    4.1 User data, including accounts, learning progress and preferences, must be stored in a structured relational format.
    4.2 All user data must be securely stored in a remote database.
    4.3 The application must be able to fetch and update user data on demand, with minimal delay.

5. Deployment & Accessibility
    5.1 The system must be fully deployable and accessible from any device with internet access.
    5.2 Users must be able to download and use the application immediately without manual setup.
    5.3 All services must be remotely hosted.

6. Continuous Integration and Delivery
    6.1 The development workflow must support automated testing, building and deployment for all system components.
    6.2 The system must ensure consistent and reliable updates with minimal downtime.


⚠️ **GitHub.com Fallback** ⚠️