SS Remake Plan
We’ll want to split the project up into independent sections which can be added separately, as waiting for the whole thing to be ready would take too long/require suddenly switching completely one day which is a recipe for unexpected problems.
I also suggest focusing on making it work for us first, then going through and making features available to other companies. Will greatly reduce the time needed for it to be usable internally. Exceptions to this are obvious features like basic student management which will need to be available from the start.
I’ve listed each section with in the order I plan to implement them with an approximate time to complete taking into account my existing responsibilities (adding LMS features/support for LMS & event site/online lessons).
Trying to prioritise parent-facing features as it gives us a handy smaller scope to work within and will have an obvious benefit to customers/allow us to start moving them off My Page earVkly.
I think it would be good to have bi-weekly meetings with at least one of the people who frequently uses the SS to check in on my progress and make sure I’m making the stuff they actually need, with a monthly meeting to check in with the larger group and get feedback/suggestions.
Timeline
-
Registration Forms ~ 1 week
An easy one which’ll help a lot and isn’t strongly coupled to anything else in the system.
-
Children ~ 2 weeks
This needs to be second because basically everything else depends on children being in the system.
Add fields to the children stored in the LMS to match the necessary fields from the SS.
-
Basic Searching & CSV exports ~ 2 weeks
Once the information is in the system, staff need a way to quickly find/export it.
I need this time to make re-useable core functionality for searching that more detailed/specific search forms can build on later.
-
Parents ~ 1 week
Add parents to the system and link them with their kids. Allows parents to access test results etc. online.
-
Schools ~ 1 week
A quick one that can be done anytime, not many changes to make here I think. Should probably be done before emails.
-
Announcements ~ 1 week
Useful for the curriculum part as well and doesn’t really depend on much, so good to implement early.
-
Notifications ~ 1 week
Necessary for messaging to be useful, will also be handy for many other things.
-
Messaging ~ 1 week
Extend the existing support message system for use in communication between staff and parents.
-
Bulk emails (predefined template) ~ 1 week
Allows for bulk emails to be sent from the LMS.
Only from predefined templates for now, because it’s much faster than letting SMs create their own templates and as far as I’m aware they don’t need to do it often? Open to moving up the personalized templates if deemed necessary though.
-
Medical Records ~ 1 week
Can be moved up if they’re more important/frequently used than I think they are.
-
Contracts ~ 2 weeks
These are what things after them in the plan are attached to, so need to start with them.
-
Sales ~ 2 weeks
These are relatively standalone, so a good opportunity to work on getting the template system working without having to worry about attendance too.
-
Courses ~ 2 weeks
Building on sales, but these also need to be used for attendance information.
-
Classrooms ~ 2 weeks
Uses course templates to create daily classrooms.
-
Lessons ~ 2 weeks
Uses registered courses to project attendance for daily classrooms.
-
Attendance sheets ~ 2 weeks
Limited to generating expected attendance information based on registered attendance days/times.
Includes adding functionality for parents to view/manage attendance, but not replacing cards.
Is likely blocked by some element of the previous step, but need more info to know how much.
-
Payment systems ~ 2 weeks
Blocked by not knowing how we’re planning to handle payments or anything related to how we calculate them (the lessons/contracts/etc. section above)
-
Card replacement ~ 2 weeks
Add a page which uses a phone/iPad camera to scan a kid’s QR code/NFC, which automatically clocks them in/out and updates attendance.
-
Bulk emails (custom template) ~ 1-2 weeks
I’m sure there’s a way and have some ideas, but not quite sure how to implement it so would prefer to leave until later unless urgent.
-
Bus schedule & cancellations ~ ???
Long term future plans. Will need to clarify exactly what we want this to do/how.
-
Other org customisation options ~ ???
I’ll be designing the whole system keeping in mind that other companies will use it, but actually adding the customisation options would be wasted effort for now.
Registration Forms
Add a form for parents to fill out during setsumeikais, saved in the database. SMs can open/close for access so can’t be filled out at home.
If there’s an SS import for these from CSV I can make an export so SMs can easily transfer them between systems.
- Create database table with all necessary info
- Create Pundit policy controlling access
- Create controller and views for user interaction
- Add views & controller actions for staff interaction
- Add CSV export
Children
Match the fields in the LMS to the necessary fields from the SS, decide on necessary validations/how to handle data from SS which doesn’t pass them, then import all the children.
After the initial import they’ll need to be kept in sync from the SS manually like the event site currently is, but I’ll add an API so the event site can periodically fetch the latest student info from the LMS in a SQ job.
- Get a confirmed list of fields necessary for students, any new ones
- Add those fields to the LMS students table
- Add a new controller for viewing student’s administrative info, add some basic views with the added fields
- Add the API for the event site to fetch updated data from
- Add the SQ job to the event site which grabs the new student data and automatically updates its own database
- Add button to event site to manually sync data for single child
Basic Searching & CSV Exports
Need to be able to search by more fields, in ranges etc. Also potentially by associated records. Will need to find out what the core fields people actually use for searching are, maybe a short survey of all the people who use it? Or just chat with the available team. Since one of the goals is to reduce complexity.
Need to implement saved search templates (per user or global?)
Use the search to scope CSV exports.
- Research on best practices for handling complex searches in Rails.
- Create the basic search form/controller
- Implement saveable/reusable search templates
- Allow applying the search to CSV exports
Parents
Add all their data from the event site, link them to their kids using the associations from the event site.
Might want to add a ‘child student ids’ column to the uploader so they can easily be linked with students by other companies too.
- Confirm list of required fields and add them
- Add views for parent homepage/seeing parent information as staff
- Import parents & link to children using event site data (will need to reset password on first login)
- Create API to share data with event site
- Add SQ job to event site to fetch updated data
- Add button to event site to manually sync data for single parent
Schools
Mainly to set up for other future stuff like per-school sending addresses in bulk emails.
- Confirm list of required fields and add them
- Update views
- Create API to share data with event site
- Add SQ job to event site to fetch updated data
- Add button to event site to manually sync data for single school
Announcements
Need to be able to shown to users matching certain criteria, have start and end dates.
- Create the DB table, model and unit tests
- Add access policy & controller
- Add views/partial for displaying on a page
Notifications
Need to be very general, capable of being created and sent to groups of people like announcements but also automatically when certain things happen.
Should have text, subject, a link to the thing being notified about, and whether it’s been seen or not.
- Create the DB table, model and unit tests
- Add access policy & controller
- Add views/partial for displaying on a page
- Automatically create in the cases we decide on (will probably include parents submitting registration forms if they’re in the system)
Messaging
Basically a subset of the support system for parent/SM communication.
Will make use of notifications, automatically creating one when a new message is sent.
Bulk emails (predefined template)
Allow SMs to send out emails based on certain predefined templates to a subset of parents, set by a search form.
- Determine & create commonly used email templates
- Create policy & controller
- Create the interface for filtering parents and sending the email to all matches
- Create an interface for searching through past bulk emails, seeing if they were sent successfully or not (probably through SQ)
Medical records
Should they be visible to/creatable by parents as well? Or just SMs?
Might need to be imported from SS.
- Create the DB table, model and unit tests
- Add access policy & controller
- Add views/partial for displaying on a page
Lessons/Contracts/Courses/Rooms/Reservation Slots/Misc
Need to sit down with someone and untangle this before I can plan out how to implement it. There are so many similar seeming things and all the information on them is in Japanese/scattered around.
Attendance Sheets
Should be able to generate daily attendance sheets with child’s expected arrival time.
SMs/teachers can view/print these sheets, and mark students present or absent.
Parents can notify the school if their child will not be attending & give a reason, which is reflected on the staff attendance sheet. Can also request changes to regular attendance, which must be accepted by SM before being applied.
Card Replacement
Replace the existing cards/scanners with our own QR code/NFC based solution. Even if NFC is possible for us, probably good to have both for other companies.
Cost
For just us, I estimate < $150USD in AWS costs per month. Adding another organisation could increase that by between $50-150USD depending on their size.
Total Time Needed
For initial implementation, 6-9 months.
For ongoing support (just KidsUP), based on the time I spend supporting users of the event site and the fact this LMS will be more complex/featureful, an average of 1-2 hours per day. That much time again as we add other organisations, assuming they have unrestricted access to me for support.
Support time could likely be decreased by having other people knowledgeable about the site provide support as the vast majority of requests have simple answers/fixes.