Scope of Requirements - The Pea
Scope of Requirements - The Pea
The Pea
2. App UI 4
a. Admin / Teacher App 4
b. Student / Parent App 4
3. Database Architecture 5
4. API Documentation 6
5. Appendices
a. Appendix 1 13
1
Use-cases
1. CRUD (Create, Read, Update and Delete) of courses, packages, school classes,
sessions, notices, demos, signups, etc. See Appendix 1.
Note: The admin has no right to delete anything. Only Superadmin can delete anything
(e.g. users, courses, packages, etc).
Superadmin gets to create 3 types of users – admin, teacher and students
2. Be able to see the full schedule of the entire school, for 2 specific reasons:
a. Be able to zoom in to one particular student, and see his/her past completed
courses, plus his/her ongoing course -> completed classes + future classes.
b. Be able to easily cancel classes that are usually scheduled to take place within
24 hours -> To search student’s classes easily. Have a dashboard!
Note: System automatically cancels classes upon admin’s approval of a
teacher’s leave_request, admin does not have to step in and manually cancel the
classes that fall on the teacher’s leave days.
Also, the system automatically cancels classes when the parent logs in to cancel
the class. In situations where parents are unable to login to the app to cancel the
classes themselves, admin will do it for them :)
4. (Dashboard) Monitor current classes to see that every is under control. Needs to know
that today’s scheduled classes were complete without any problem. Per row of schedule
light, we need to show a light indicator that goes BLUE when class has been completed,
GREEN when class is ongoing with at ALL intended participants are present, YELLOW
with red exclamation mark when someone is missing and admin has to do something
(contact parent or teacher), yellow with green tick when someone is missing and admin
has already stepped in to confirm that one student will be not attending, after contacting
the parent.
5. (Dashboard?) Be able to contact parents for a new course signup by looking at the
progress status of each student (51 out of 60 completed for Michael, etc.) for students
with ≤10 remaining classes on their course. Incorporate a button that takes admin
straight to the parent’s Wechat.
6. Review & Result – Be able to keep track of the teacher’s (efficiency? Following rules?)
and easily see when they have not submitted their review/result for the student that they
taught.
2
Use-cases for Teacher – As a teacher, I want to…
1. See notices
2. Know what’s my next class (countdown timer, who’s the student, preview the PPT and
click on Enter class button)
3. See my upcoming classes for the day / week / forever in order.
4. See my pending reviews (countdown timer, who’s the student, preview the PPT and click
on Review button). Note for when writing a review, need to have dropdown to select
multiple pre-written statements
5. Mark student absent (this is a -1 for the student’s package)
6. Submit leave request
7. Have access to my assigned classes (previous)
8. See a pretty counter of my classes taught and hours taught etc in my profile page
9. Preview signed contract and uploaded documents
10. CHAT
1. Next Class (Get hyped up!) – See the PPT of the next class + enter class button +
countdown
2. Upcoming Classes – See the details of future classes (next class +1, +2, +3…)
3. Lesson Review – See my review of the previous class. Teacher’s notes may include
homework notes.
4. Lesson History – See my previous classes prior to the previous class. Include datetime,
rating, PPT and replay.
1. See statistics. Display positive statistics first, and negative statistics last (like
absenteeism rating). Is my package running out – how’s the progress? How well is my
child doing? What is the rate of absenteeism? What is my child’s CEFR level? What is
my current child’s package? Transaction history with the company?
2. See class history and upcoming classes.
3. See teacher’s profile (profile picture, place of origin, seals/badges, qualification,
experience, share button)
4. Cancel class
UI for cancelling classes -> There will be a button to cancel classes. However, this button will
either be greyed out and it displays a prompt upon clicking: “For further assistance please refer
your query to a PEA representative”, if the class is happening within 24 hours.
3
App UI
I am proposing to split our ‘App’ into 2 – An Admin / Teacher App, and a Student / Parent App.
4
Database Architecture
5
API Documentation
Authentication
Admin
6
signed_contract: [String], access_token: String,
uploaded_documents: date_registered: Date,
[String], notes: String
signup_id: String, }
is_suspended: Boolean,
suspended_reason: String,
access_token: String,
date_registered: Date,
notes: String
}
7
18 /school_class/:id DELETE Delete a school class true - -
(server throws an error if this
package has been used in a
course)
8
32 /signups GET Get a list of signups true - {
_id: String,
wechat_account: String,
33 /signup POST Create a signup true { student_age: Number,
wechat_account: String, grade: Number,
student_age: Number, student_name: String,
grade: Number, years_of_english: Number,
34 /signup/:id PUT Edit a signup true proposed_level: String,
student_name: String,
years_of_english: Number, gender_preference: String,
proposed_level: String, notes: String
gender_preference: String, }
notes: String
}
9
45 /leave_requests GET Get a list of leave requests true - {
_id: String,
- teacher_id: String,
46 /leave_request/:id/approv POST Approve a leave request true
dates: [Date],
e reason: String,
status: String,
47 /leave_request/:id/reject POST Reject a leave request true { admin_id: String,
reason: String
}
approve_reject_datetime:
Date,
reject_reason: String,
notes: String
}
Teacher
10
3 /session/:id/review POST Create a review true { {
student_id: String, _id: String,
positives: String, session_id: String,
teachers_notes: String, teacher_id: String,
rating: Number, student_id: String,
notes: String positives: String,
} teachers_notes: String,
rating: Number,
notes: String
}
Student / Parent
11
Appendix 1
1. Users
a. Create teachers
b. Create students
c. Create HR and sales (HR and Sales will only be able to create demos)
2. Courses
a. Name
b. Assign students (dropdown)
c. Assign teacher (dropdown)
d. Assign package (colour code the packages in ‘Pre A1, A1, B1 and B2’) (search)
e. Assign schedule, time, start_date (tricky UI) -> generate sessions from these
variable
f. Set and assign bonus_classes and put them in order (select where you want the
bonus classes to be in the list)
3. Packages
a. Name
b. Tags (see below)
c. Assign materials (30/60/90) -> search bar (e.g. grammar) + colour code the
school classes based on Grammar, Vocab, Reading, Exam, Phonics, ‘Specials’
(fun effects like glow or something), and ‘Live’. Need to have a good UI for
‘ticking’ school classes. Weightages -> ‘Live x2’
5. Cancel sessions
6. Create demos
7. Create notices for the noticeboard
8. Create signups
9. Approve/reject leave requests
Tags: Pre-A1, A1, A2, B1, B2, Grammar, Vocabulary PEA, Vocabulary, Phonics, Reading Comp
12