Professional Documents
Culture Documents
CST 499 Twinbee Final Report Part 1 2 3
CST 499 Twinbee Final Report Part 1 2 3
Laura Renner
CST 499 Directed Group Capstone
Gregory Brown and Dalia Faria
31 May 2020
Executive Summary
Our client Laura Renner, the Founder and Managing Director of Freedom Makers, is
looking to rectify issues that occur when billing clients’ for prepaid payment plans based on their
independent contractor’s reported timesheets. The issues interfere with their ability to accurately
determine their clients’ rolling prepaid hours between pay periods resulting in possible
overcharged billing statements or the loss of previously accounted hours that would otherwise be
available for the independent contractors. Our project aims to relieve the challenges faced
between the clients and contractors by resolving billing inconsistencies and rectifying time
application that serves as a portal with administrative controls for Freedom Makers to manage
The project is intended for the internal billing team of Freedom Makers, Laura’s clients
and independent contractors, which is largely comprised of the military veteran and spouse
community and the independent businesses that support this community. The end goal is to
create a long-term product that has administrative properties which Laura Renner and her
internal billing team may utilize to manage client-contractor billing relationships, track analytical
data for comparison reports, and serve as a client-contractor reporting timesheet with a live time
clock to track real-time work hours and calculate pay period totals.
Table of Contents
Introduction
Environmental Scan
Feasibility Discussion
Functional Decomposition
Final Deliverables
Approach/Methodology
Legal Considerations
Ethical Considerations
Timeline/Budget
Usability Testing/Evaluation
Final Implementation
Discussion
Conclusion
References
Appendix
Introduction
Project Description
Our client Laura Renner, the Founder and CEO of Freedom Makers, is looking to rectify
issues that occur between their prepaid payment plans and contractor timesheet reports. The
issues interfere with their clients’ ability to accurately determine their rolling prepaid hours
between pay periods. We will create a real-time client billing timesheet that allows their clients
to track and manage prepaid hours in live time with their individual contractors. Clients will be
automatically charged based on their set payment plan with Freedom Makers and any additional
hours they did not prepay for in advance. The program, Twinbee, is primarily a web application
that focuses around the Chargebee web API. This will benefit the internal billing team at
Freedom Makers and their billing efficiency between their clients and contractors.
Background
Laura Renner is the Founder and CEO of Freedom Makers, a privately owned recruiting
other businesses services through the employment and support of military veterans and spouses.
In short, Freedom Makers is a recruiting agency with a mission to provide employment for the
military affiliated workforce. Laura works with military veterans and spouses, whom we will
consider “contractors” or “freedom makers”, and assists them in finding independent contracting
positions or remote work with outside companies which we call her “clients”. Moreover, a
contractor may work with more than one of Laura’s clients, and Laura’s clients can employ
The current billing process between her clients and contractors requires improvement to
guarantee accurate billing for prepaid hours in the interim of pay periods and to avoid
overcharging her clients. Currently, the billing method relies on the honor system and
documentation of an excel spreadsheet between the client and freedom maker. Therefore,
reporting hours can result in unaccounted prepaid hours or accrue additional charges for Laura’s
clients.
Solution to Problem
We envision the solution as a real-time client billing time sheet, which both clients and
contractors may utilize. The project will take place as a web-based application that a user can
Laura Renner reached out via email inquiring of availability to work on her potential
project. She proposed the challenges she faced with her current billing process and stated she had
been actively looking for a solution to resolve these issues since the last year.
Project Goals & Objectives
Project Objectives
● Main page displays a dashboard for different users: admin, clients, contractors.
● Admin page can control (add, edit/modify, delete/remove, manage) the clients and
● Client page can review past billing history, edit and approve contractor timesheets.
Project Goals
● Relieve the time reporting discrepancy between Freedom Maker’s clients and contractors.
● Establish a unified system that allows all parties to manage hours and billing
relationships.
● Resolve potential inaccuracies with rolling prepaid hours between pay periods.
● Ensure a reliable billing system that assures accurate use of new billing period paid hours
Environmental Scan
This project will be similar to a flexible cell phone billing plan; however, our project is
unique because it focuses on incorporating accuracy and transparency between Freedom Maker’s
clients and contractors. The project strictly accommodates consistency; by consistency, we are
defining this to the correctness of estimated roll-over hours and the arrangement of several
different payment plans that Freedom Makers has for their clients.While similar services are
offered by multiple entities including Chargebee’s competitors, the result is ultimately a product
that requires a great deal of manual configuration on the part of a small business owner that may
be unfamiliar with application configuration (Recurly, 2020). Many similar platforms argue that
their level of professional support is sufficient; however this is of little use to small businesses
that lack the time to effectively learn the intricacies of a new software (Chargify, 2020). As such,
our product aims to be tailored to specific needs as outlined by our client with little manual
configuration.
Our client’s outlook among businesses is unique; Laura has made clear a focus on
transparency, honesty, and fairness in her billing practices that takes priority over enhancing
revenue. This is directly contrary to the general marketing strategy of various billing services. A
brief overview of Recurly’s product page, for example, shows an impressively robust platform
covering retention, flexible integrations, optimations, international support, analytics, and more.
Combined, this provides an attractive option that unfortunately fails to focus on the customer’s
wellbeing. With this in mind, we set out to build a solution that wholly satisfies our client’s
unique needs.
Feasibility Discussion
Functionally, this project leans heavily on Chargebee’s API. While Chargebee offers
customer and admin portals of their own, relying on these would mean our client would need to
manage yet another profile. With the goals of ease of use, transparency, and an overall desire to
Data Storage
Data storage is split between use of a MySQL server, hosted by Heroku in partnership
with AWS, and Chargebee’s own internal storage. The MySQL server stores basic Freedom
Maker information, Freedom Maker timesheets, and administrator records. Client data is stored
with Chargebee directly. This was done to reduce redundancies with customer data already
Login
Google’s ubiquitous nature created an opportunity to both reduce the project workload
and improve the user experience by leveraging the official Sign-In API (Google, 2019). Users
do not need to maintain a separate account. By authenticating the token and retrieving the user
directly from Google, this also serves to further secure our product. The user’s browser is
redirected to the page that corresponds to their role of either Admin, Freedom Maker, or Client.
Portals
The Admin, Client, and Freedom Maker portals consist of a “single-page web application” for
each with views dynamically populated with AJAX. All portals make heavy use of tables as each role is
Subscriptions, Timesheets, and Freedom Makers. This is made possible by the various Admin table’s
interactive functionality; clicking on a record allows for record editing and deletion, while the table itself
offers an option to insert new data. While both the Chargebee API and MySQL offer more advanced
functionality, we have limited Admin abilities to keep the system user-friendly; many of the options,
including billing meta data and advanced sorting options, would only serve to overwhelm.
The Client and Freedom Maker portals offer less interactivity. The Client portal is heavily
focused on billing; while they can view associated Freedom Makers and Timesheets, a Client can only
modify their own billing, profile details, and subscriptions. Similarly, Freedom Makers can view
associated Clients and Timesheets, but can only “Clock In”, “Clock Out”, or adjust their own contact
details. Any modifications must be done by administrators. This restraint is intentional; by focusing the
user experience on only a few core features, we reduce the likelihood of unintentional actions.
Navigator
Each portal contains a personalized navigation menu, dynamically populated from the
backend server with EJS. This design choice provides scalability and flexibility between the
paramount concern; while currently each portal is tailored to specific use-cases, our client would
like each portal to offer more content in the future as it pertains to each user type.
Client Billing
The project was ultimately born out of a concern for accurate billing of hours. As such,
we have given clients various buckets in their metadata in order to track remaining hours. The
Freedom Makers’ “clock in” and “clock out” directly correlates to these buckets; with each
“clock out” action, the corresponding Client’s bucket is subtracted by an amount equivalent to
the number of hours worked by the Freedom Maker, allowing for real time statistics, billing, and
notifications. Additionally, by storing a state within variables unaffected by change over time,
we prevent the Client’s hours from ever expiring; thus, allowing us to fulfill another of Laura’s
core concerns.
Functional Decomposition
The functionality of this system was born out of the client’s needs directly. Essential
functionality is broken down into user access, authentication, time tracking, administrative
actions, and client subscription management. Additional functionalities are manifested from
these directly.
Versatile Access
In order to ensure access from most connected devices, the system was to be rooted in a
browser-based web application. This had the additional benefit of requiring only a single set of
API’s for the front and back ends as opposed to multiple lines of development tailored to specific
device types.
Time Tracking
Our client’s concern with accurate billing implied a need for accurate time-tracking, as
Laura deals primarily in time. As such, a general Clock-In/Clock-Out mechanism was needed on
the Freedom Maker’s portal that interfaces in real time with the Clients’ allotted hours.
Record-keeping and verification requirements meant this was not limited to a single
Rollover Hours
As Laura requested the application be driven by Chargebee’s services, there exists a need
to store her clients’ purchase histories in order to track the number of current available hours
each client has for their Freedom Makers’ use. This is of particular concern and Laura’s driving
force for requesting this project. In order to ensure that Clients are transparently and accurately
billed without losing their hours, a current running total needed to be kept in storage. In addition
to accurate subscription billing, clients would need the ability to purchase additional hours
Administrative Capabilities
Laura and her team will need the ability to manage the application on their own without
the developers. As such, a fully-featured Administrator page is needed that allows for all facets
of CRUD functionality for each entity and relationship. To stay in line with standard
administrative suites, this has taken shape as a series of submittable forms and tables, providing
routing were critical. With the Administrator, Client, and Freedom-Maker portals located within
the same domain, a reliable log-in functionality was needed to ensure access control. This same
form of access control was to be leveraged in authenticating consumption of RESTful services.
This authentication was also time-sensitive; it could not interfere with the user’s ability to
One goal and emphasis for our application was to maintain user friendliness and mobile
platform capability. Initially when our client reached out to us, Laura expressed that the external
web API she was trying to utilize was not very user-friendly. To ensure user friendliness, we
client, or independent contractor. Evidently, our core application was not designed as a mobile
application; however, we wanted our application to be accessible and functional via mobile
devices. With this in consideration, our application functions similarly on both web and mobile
browsers.
User Security
The security requirements coupled with the short development time meant a proven
solution was needed. Rather than build proprietary authentication, Google’s Sign-In API was
used. This allowed for both user-based routing and internal API authentication by using
Google’s own token verification system. While this increased difficulties in testing locally due to
Google’s need for an SSL certificate, the reliability outweighed any loss of time.
Cost
While cost was not of critical concern, we aimed to keep overall costs comparable to
consumer-level subscriptions of approximately $20 monthly. Costs largely come from domains
and server hosting. In order to obtain the needed services, the following costs were incurred:
With an average cost of $21 monthly, this goal was largely achieved.
Framework
With only 5 weeks to implement this design, a framework with rapid prototyping and
robust API support was needed. Express.js offered this along with excellent API compatibility.
An initial prototype was available by the end of the first week of development.
Final Deliverables
Completion of the project is marked by the release of the product to Laura and her team.
The final product is a web based application where users can enter and track their work hours.
Laura Renner has administrative capabilities to manage her clients and contractor relations.
Since the project is web-based, the platform is easily accessible for anyone with a Google
account and link to the website. The working website is hosted by Heroku allowing for rapid
deployment. Leveraging the integrated services by the platform ultimately allows for a rapidly
deployable and easily expandable product that reduces the time-to-market for our client.
The final deliverable is a long-term product that has administrative properties which
Laura Renner and her internal billing team may utilize to manage client-contractor billing
relationships, track analytical data for comparison reports, and serve as a client-contractor
reporting timesheet with a clock-in, clock-out feature to track real-time work hours and calculate
Approach/Methodology
In order to accommodate the short timeframe, an Agile methodology was followed with
the aid of the tool Pivotal Tracker. Pivotal Tracker helped ensure weekly work was target,
purposeful, and tracked. Meetings with Laura were held weekly to ensure the product was of
expected quality and function. The meetings also allowed for continuous gathering of
Legal Considerations
The general legal considerations were to prevent any leakage of business conduct and
As our project heavily relies on the use of the Heroku application for deployment and
Google web APIs, we have conducted further research on potential legal considerations that may
violate user terms (Google, 2019). Further research has reflected that the Heroku platform is in
compliance with GDPR, PCI, HIPAA, ISO, and SOC (Heroku, 2020). Google has the right to
monitor the use of APIs to ensure quality, improve Google products and services, and verify
Ethical Considerations
Freedom Makers aims to serve the military veteran and spouse community. Laura’s
mission to serve this community has the potential to exacerbate military veteran and spousal
military veterans and spouses struggle with employment in careers within their industry, pay
grade, or qualifications; consequently, most will resort to accepting work or gigs that do not
Timeline/Budget
Project Timeline
Initial contact with the client Laura Renner took place in mid January 2020. A follow up
date will take place on Monday, April 13, 2020 to set a potential collaboration meeting to ensure
the project is in line with the client’s expectations. Project research will tentatively take place
starting Monday, April 20, 2020. Our first meeting to discuss the project and expectations with
her will take place on Thursday, April 23, 2020, and initial project steps will begin by Sunday,
April 26, 2020 or Monday, April 27, 2020. Laura agreed to weekly meetings to confirm her
Upon completion of our project, we can confirm that we were able to successfully accomplish
Budget
Laura Renner plans on offering an estimated stipend of $200 to cover any possible
expenses the project may incur. A survey of the necessary licenses places annual cost at $168; in
Domain $12 Annually (Google Domains, estimated pending final domain name)
Registration
G Suite $6 Monthly
REST services, both proprietary and third-party, to supply the necessary data to power our users’ required
functionality. However, only the proprietary rest services are exposed to the front-end.
Framework
The back-end server was implemented with Node.js using the Express.js framework as well as the
EJS templating engine. This allowed rapid development with limited overhead and minimal file structure
compared to alternatives.
As it was decided to use a single-page application style, Express.js was largely used to route
REST services and authentication. Virtually all communication, both between the front-end and back-end
as well as between two distinct back-end services, took place as HTTP requests using these services. This
Services
In order to maintain structure, code reuse, and readability, the backend functionality was
implemented using a service-repository pattern, though the repository was not always possible to use in
the case of third-party integrations. The provided services covered 8 specific use cases; authentication,
Chargebee integration, Clients, Freedom Makers, notifications, relationships between Clients and
Three of the services, the authentication service, Chargebee service, and emailService, work with
third-party API’s to obtain their relevant data and as such have no associated repository. The
authentication service largely relies on Google’s Sign-In API to decode tokens and verifies the owners’
roles within the application (Google, 2019). This verification is also used extensively to secure the
The Chargebee service provides more approachable access to Chargebee’s endpoints as they
pertain to client billing, plans, subscriptions and payments. This service was created to intentionally limit
future developer access to Chargebee’s complex API in order to prevent unintentional actions while
The email service is used for notifications to administrators, Clients, Freedom Makers, and
developers. This has been implemented using the common tool Nodemailer in conjunction with Google’s
Gmail service with plans to expand for use with AWS SES (Amazon, 2020).
The time clock service is a smaller service that handles only the user action of “clocking in” and
“clocking out.” The service makes use of Moment.js in order to calculate human-readable
times(Moment.js, 2020). The remaining services for Client, Freedom Maker, Relationship, and time sheet
are largely CRUD driven. These services interact with their respective repositories to both obtain more
meaningful ES6 class objects and to preserve generated data in long-term storage. The objects are in turn
manipulated by the services themselves as needed to provide the application’s core functionalities.
Data Storage
Data storage is split between use of a MySQL server, hosted by Heroku in partnership
with AWS, and Chargebee’s own internal storage. The MySQL server stores basic Freedom
Maker information, Freedom Maker timesheets, and administrator records. Client data is stored
with Chargebee directly. This was done to reduce redundancies with customer data already
collected by Chargebee.
Login
The action of logging in was implemented with Google’s Sign-In API. Google’s
token-based authentication allowed for both enhanced security as well as targeted routing. The
application’s database stores hashed administrator emails as well as Freedom Maker and Client
emails. Once an email is authenticated, the user is routed to one of three portals; Administrator,
Portals
To accommodate each unique user, we made three separate interfaces as single web
pages. Each portals’ main tab consists of the same structured HTML and CSS to maintain a
consistent layout for future potential features such as news dashboards. Alternative options
presented in the navigation menu are dynamically produced with EJS, thus fulfilling the purpose
of allowing us to present specific functionality and the flexibility to create distinct compositions
With the help of Bootstrap (Bootstrap, 2020), we were able to feature several forms
which use select drop-downs or request user text input. Some of these forms are pre-populated
by the use of AJAX calls. Each portal also features GMT-UTC real time. The time feature was
referenced and attributed the resource W3Schools (W3Schools, 2020). W3Schools was also
referenced to produce the calendar and date time picker that is presented within the Admin
portal.
Although the Client and Freedom Maker portals took on the same style of dynamic
production, these portals’ main tabs react slightly differently. The Client portal’s main tab is
immediately overwritten with an AJAX call. Despite the HTML containing the same structure as
the main page in the Admin portal, the user would never witness this. This was intentional to
later reproduce it’s content on the main tab into a separate additional tab on the navigation menu.
As for the Freedom Maker page, the main tab is hardcoded and not dynamically structured
because of the functionality of the clock button and no expectation of the Freedom Maker portal
to possess a user dashboard. However, this is planned to be restructured as the request for
Navigator
rendered from the backend server with EJS. This design choice provides scalability and
flexibility between the separate portals while maintaining a common aesthetic between them.
Scalability is of paramount concern; while currently each portal is tailored to specific use-cases,
our client would like each portal to offer more content in the future as it pertains to each user
type.
Client Billing
The project was ultimately born out of a concern for accurate billing of hours. As such,
we have given clients various buckets in their metadata in order to track remaining hours. The
Freedom Makers’ “clock in” and “clock out” actions directly affect these buckets; with each
“clock out” action, the corresponding Client’s bucket is subtracted by an amount equivalent to
the number of hours worked by the Freedom Maker, allowing for real time statistics, billing, and
notifications. Additionally, by storing a state within variables unaffected by change over time,
we prevent the Client’s hours from expiring and enhancing fault tolerance.
Conclusion
Our client Laura Renner, the Founder of Freedom Makers, was looking to rectify issues
that occur when billing clients for their prepaid payment plans based on their contractor’s
timesheet records. These issues interfered with their clients’ ability to accurately determine the
rolling prepaid hours between pay periods. To remedy these challenges, we created a real-time
client billing application and timesheet reporting system that allows their clients to track and
manage prepaid hours in live time with their individual contractors. Clients are automatically
charged based on their set payment plan with Freedom Makers and any additional hours they did
not prepay for in advance. The program, Twinbee, is primarily a web application that focuses
around the Chargebee web API. This will benefit the internal billing team at Freedom Makers
Due to timeline restrictions, an Agile methodology was followed with the aid of the tool
Pivotal Tracker. Pivotal Tracker helped ensure weekly work was target, purposeful, and tracked.
We held meetings with Laura on a weekly basis to ensure the product was of expected quality
and functionality. The meetings also allowed for continuous gathering of information and
clarification of requirements.
user-friendliness, user security, cost budgets, and framework efficiency. Our final
implementation includes three unique portal interfaces for administrative, client, and contractor
users. Administrators have full functionality and access to all features, including those exclusive
to the client and contractor portals. Common administrative operations include functions to add,
modify, edit, delete, cancel, and clear an action. Clients are only allowed to edit, review, and
The administrator portal allows the ability to manage clients, manage contractors,
manage available credits, manage plans and subscriptions, manage relationships, and manage
timesheets. The contractor portal features options to update their payment method, pay any
generated invoices, buy instant hours for their available credits, and review their contractor’s
timesheets. The contractor portal has a functioning time reporting system with a
clock-in/clock-out feature. Contractors can also review their timesheets but do not have the
From creating TwinBee, we both learned more about our individual skill sets, talents, and
areas of improvement. Upon designing and implementing this application, we both discovered
product. With an agile software development approach, it is expected to restructure often and be
implementations, Laura has requested for us to maintain the application and roll out new features
as independent contractors. The duration of this agreement is tentative but is expected to lean
Bootstrap. (2020) Bootstrap: The Most Popular HTML, CSS, and JS library In The World.
Retrieved from https://getbootstrap.com/.
Google. (2019) Integrating Google Sign-In into your web app. Retrieved from
https://developers.google.com/identity/sign-in/web/sign-in.
Recurly. (2020). Subscription Billing and Recurring Billing Platform: Recurly. Retrieved from
https://recurly.com/.
average computer user. The occupations may vary but most will involve administrative work and
the users will be working adults over the age of 18, mostly ranging anywhere from mid-twenties
to late-forties.
Our project was tested by Laura, the business owner, and Erin, Laura’s administrator.
Laura tested the product as both administrator and client while Erin tested as both administrator
What are the main tasks you would like your client/group to be able to complete while
testing?
Depending on the specific user (admin, client, freedom maker), the admin can manage all
activities that the client and freedom makers are able to perform. In addition, admins can prepare
subscription plans, manage all clients and all freedom makers, set up working relationships, and
manage timesheets. Clients are able to manage their payment methods, adjust their available
credits, and view their current freedom makers. Freedom makers are allowed to report their
working time by using the clock-in/clock-out feature, review their time records, and view their
current clients.
During testing, our clients tested most of the above functionalities as admins, clients, and
freedom makers. As admins, they should be able to go through an entire process of adding a
client, adding a freedom maker, setting up the client’s subscription plan, and setting up the
working relationship between client and freedom maker. Following this, they should be able to
clock in as the created client and freedom maker. As the client, they should successfully buy
more available credits, adjust their payment method, and view their freedom maker’s time sheets.
As a freedom maker, they should be able to clock in/clock out and see this time difference
reflected in their client’s available credits. They should also see their reported timesheet.
Client-based testing:
Although we needed to quickly fix two small bugs, the client was ultimately able to
Our client did get stuck twice due to small bugs which we were able to quickly fix. They
were initially uncertain of one functionality, but upon experimenting on their own were able to
‘figure it out’.
What will you do to improve your project in the short term before the festival? In the long
term?
Before the festival, we plan to enhance the user experience by replacing manual text
entry with pickers and simplified dropdowns. Our client has also asked us to support the