I’m participating in a course called Linux project (ICT4TN018) at Haaga-Helia University of Applied Sciences. This article is a the first one about that.
My project will be a Ruby on Rails backend API for my Bachelor’s thesis RubyMotion mobile application, including:
- Ruby on Rails implementation of a RESTful API
- Deploying and running that API somewhere
- Sending notifications to users
- Push notifications to iOS and Android devices (meaning Apple’s and Google’s servers)
- E-mails (maybe only to users who have push notifications disabled)
Goal of the project
The goal is to create a Ruby on Rails backend application, to be used as an API for mobile apps.
The application will be a reminder system of common household maintenance tasks. The end-user will answer questions about their household (for example: “Do you have a dishwasher?” or “Do you have fire alarms installed?”) and store the user’s answers, and then remind the user about maintenance tasks when it’s time to do some maintenance (for example: “Clean the dishwasher’s filter now!” or “Change the battery on your fire alarms”).
The backend application should be responsible for:
- Single source of truth: Which appliances are supported in the app, and what are their possible maintenance tasks
- Managing users and their login credentials
- Storing the user’s information (owned appliances, past maintenance jobs)
- Sending e-mails and timed push notifications for the users
Ruby on Rails application using Ruby 2.3 and Rails 5 beta (although I know it’s generally not a great idea) because of the new
--api feature available there (easy to create a Rails app without any UI).
Data will be persisted with ActiveRecord to a MariaDB SQL-database running on a separate Docker container. Orchestration and linking of these containers is done with Docker Cloud
Application will be running inside a Docker container based on the official Ruby images which are based on Debian Jessie. The docker image can be hosted for free at Docker Hub.
Weekly timetable and milestones
- Do the project plan, start on the RoR API.
- Work on deployment system. System running in production from the start!
- Release version 0.1 - Basic RoR API with most of the resources present that I will need
- Nothing, work trip to Norway.
- Work on the API
- Research on the push notifications
- Release version 0.2 - Most important business logic in place, the API is usable already
- Finalizing work on the API, work with push notifications.
- Release version 0.3 - Push notifications in place (not sure if properly testable, if any mobile app isn’t ready yet)
- Feature freeze. Get the main features working without problems.
- Write documentation if it seems necessary (at least the basic stuff for Github README.md)
- Release version 0.3.x - bugfixes and general improvements
- Final bugfixes.
- Release version 1.0.
- Presentation to class.
Time to spend and risks
I think completing this project will take quite a while of development time. Especially with the push notification systems which are completely new to me.
My time during this course is very limited due to having a two-month old baby <3 to take care of, working full time and doing my bachelors thesis at the same time. So the most probable risk is that I simply don’t have enough time to work on this.
I estimate I can use couple of hours on few days between monday and friday, plus maybe 6 hours each weekend. So in total 10 hours a week. Not counting week 14 that will be a total of 30 hours before features freeze and in total 40-50 hours.
At this point I think it’s doable. We’ll see how it goes :)