Teacher substitution app Alexa companion skill
This project is deprecated because we both finished school and had some technical difficulities with scraping the information
Original Project submitted to a contest
Building a mobile app for our (ex-) school with Alexa Integration
Link to project demonstration video for the contest
Inspiration and motivation to do this project
We started the project motivated by the user unfriendly experience the back then newly available teacher substitution schedule website for our German high school provided.
We then built different solutions to solve this because we thought that the experience would greatly benefit from personalised notifciations.
What it does
The app enables you to get push notifications if there is any substitution information concerning one of your courses, view the calendar of the school and see the dates of all tests.
To register you select the class and course you participate in in the app and our application filters, saves and send you only the substitution information concerning you.
The project also features the option to pair your app with our Amazon Alexa companion skill to ask Alexa for your personalised information.
How we built it
We started by building a parser for the online schedule a year ago. It collects the entries regularly and saves them in our MongoDB database. This Java application also checks if the users saved in the database are affected by entries on the schedule. During that time we developed many different solutions for notifing users about their entries. The project evolved to an hybrid mobile app for iOS and Android. This app uses our NodeJS backend for retrieving data from the server.
Challenges we ran into
- The parser for the online schedule had some unpredictable bugs, because schedule entries sometimes are entered in a different manner which confuses our parser.
- Developing a reliable communication between the user of the app and our server via an API was a task new to both team members.
- We started with strong differences in skill and experience levels which led to an imbalance of work at first while developing the initial backend and parser. This was later indemnified after the project experience balanced the skill levels. Both of us learned a lot of each others code.
Accomplishments that we’re proud of
We helped our schoolmates to manage their daily school life by building a mobile app for the school with personalized substitution schedule for them.
What we learned
We newly learned multiple modern technologies for example the use of NoSQL (MongoDB), NodeJS Web Development with express.js, hybrid app development with Ionic Cordova. Furthermore we collected some experiences in building an infrastructure for our backend. We started with using a Raspberry Pi as a server. Now our API runs on a cloud server and in the future we are going to use a self hosted Kubernetes cluster with continuous integration and deployment for multiple environments.
Main things we learned among others include:
- Building a hybrid app with the Ionic framework
- API development
- Web development with express.js and templating with handlebars
- NoSQL with MongoDB
- A bettter understanding of networking
- Using the Alexa Skill development kit, AWS Lambda and Zappa for the Alexa skill
- Planning and running cloud services
What’s was planned next before it was deprecated
In future we plan to further test and finally release some features for the app we are still developing and to brainstorm about the possibilites for us to integrate those upcoming app features into the Alexa skill.
Many features like the plan for upcoming exams and tests which consists of a PDF made available by the school don’t seem to be suitable for voice interaction. Other features are the still very experimental function to search for other schoolmates having a free period simultaneously. We plan to make the app customizable for using it at other schools using a similiar substitution schedule software as the one our school uses. Another interesting idea is to adapt our app to the new concept of progressive webapps.