SRS_2 - 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 and include a special character
- Duplicate usernames and emails are not allowed
- Terms and Conditions are accepted
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 Curriculum
As a learner,
I want to have a structured learning plan
So that I can learn more effectively
- There is a clear, well-organized curriculum in place
- Lessons are mapped to specific goals and topics
- Users can view their position in the learning path
I can view a clear, structured curriculum that guides me from basic to advanced topics.
Skill Adaptation
As a learner,
I want the application to adapt to my level of signing experience
So that I can learn at a comfortable pace and skip content I already know
- Learners are required to take a placement test to indicate their signing experience
- If the learner is a beginner, the placement test is not required and the learner is placed at the start of the curriculum
- If the learner has prior knowledge, lessons covering already known content are skipped
- After placement, learners must follow the structured curriculum from their assigned level onward without skipping future lessons
I start learning from a level that suits me, without wasting time on things I already know.
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.
Feedback
As a learner,
I want to receive feedback on my signing accuracy and improvements I can make
So that I can sign more accurately
- Feedback must be valid and specific to the current learning scenario
- Feedback must be provided immediately
- User must understand what mistake was made and how to correct it
- Suggestions must include correct gestures and movements
The system provides accurate and timely feedback when I perform a sign, clearly explaining what was wrong, why it was incorrect and how to fix it.
Reminders
As a learner,
I want to receive reminders to continue learning
So that I can maintain my streak and stay motivated
- Learner receives daily or scheduled reminders via notifications
- Notifications can be turned off
I receive friendly reminders to continue learning and maintain my daily streak.
Review Lessons
As a learner,
I want to review lessons that I have completed
So that I can revise what I have already learnt
- There is a dedicated and easily accessible review page
- Review content is quick, focused and does not affect lesson progress
I can quickly find specific content I want to revise without going through the full lessons again.
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.1.1: The course overview must clearly indicate completed, in-progress and locked lessons
    FR 4.2: Lessons should be organized progressively, from basic to advanced topics
        FR 4.2.1: Each lesson must unlock only after prerequisites are completed
        FR 4.2.2: Categories should include key areas such as fingerspelling (letters), vocabulary (phrases) and sentence construction
        FR 4.2.3: There must be thematic levels (e.g., greetings, food, directions) for contextual learning
    FR 4.3: Each lesson should include clear objectives, interactive content and practice exercises

FR 5: Application should accommodate learners of all signing experience
    FR 5.1: Beginner learners should be introduced to signing at a steady pace
    FR 5.2: Advanced learners should be able to skip beginner lessons

FR 6: Application must support real-time feedback and correction
    FR 6.1: Users must receive immediate feedback on incorrect signs
    FR 6.2: Application must suggest correct hand gestures or movements

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

FR 8: Application must provide a separate review section for previously learned content
    FR 8.1: Review lessons must be organized by category for quick reference
    FR 8.2: Review lessons must be concise and focused on reinforcement, not full re-teaching
    FR 8.3: Review lessons must not affect learner progress

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

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


Architectural Requirements


Technology Choices


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