- Read Tutorial
- Watch Guide Video
Since the focus of this course is to create a real-time application, let's begin the process by identifying the requirements. In this video, I'm going to briefly talk about the high-level notes I took during my client meeting, and this is to give you an idea of how you should approach any project.
The high level requirement is that the company needs information if salaried employees did or did not get overtime each week. To achieve this objective, we're going to create an application that allows employees to enter their overtime details at the end of every week, and managers can approve the same.
To start with, I can perceive three different models, namely,
- Post
with the attributes: date
and rationale
.
- User
which we'll use Devise
.
- AdminUser
that will inherit from the User
class. For this feature, the admin user and user models will use a concept called Single Table Inheritance (STI).
The features of this application should include:
Approval workflow
- This means when a post is created, one of the Admin users should be able to approve it.SMS Message
- This is to remind users that they have to post their overtime details. Since they are not technical users, we'll have to send them a link to the application and make it as easy as possible.Admin dashboard
- In the admin dashboard, I'm going to use a Ruby gem calledAdministrate
.Email summary
- Our application should email the summary of posts to the manager for his or her approval. Here, managers mean admin users.Need documentation if no overtime was requested
- If an employee did not log overtime, that needs to be documented as well. At the meeting, this requirement was specified to meet some labor laws.
Libraries
Some of the libraries that I'll be using for this application are:
- Devise
- Adminstrate
- Bootstrap
-
- Twllio
- for SMS messaging and to manage our secure credentials
- Dotenv
- for protecting credentials from outside access.
- RSpec
- for testing
- Capybara
- for integration testing
That's all I can think of for now, and we can add more as we begin coding.