You are on page 1of 35

Capstone Project: Leewayz Room Rental Service

Mark Mariscal, Christopher Piwarski, Wais Robleh

CST499: Computer Science Capstone

Cassandra Eccles, Brian Robertson, Eric Tao

31 May 2020
1

Table of Contents

Executive Summary 2
Introduction / Discussion 3
Problem and / or Issue in Technology
3
Solution to the Problem and/or Issue in Technology 3
Project Goals and Objectives 4
Community and Stakeholders 6
Evidence that the Proposed Project is Needed 7
Feasibility Discussion 8
Design Requirements 10
Functional Decomposition of the Project 10
Selection of Design Criterio​n 11
Final Deliverables 12
Approach / Methodology 12
Legal Considerations 15
Ethical Considerations 15
Timeline / Budget
16
Usability Testing / Evaluation
17
Final Implementation​ 19
Technology Stack​ 20
Deployment​ 22
Database​ 22
Inside the Node Application​ 23
What Changed​ 26
Conclusion​ 27
References​ 29
2

Appendix 31

Executive Summary
This document describes the capstone project for Mark Mariscal, Christopher Piwarski,

and Wais Robleh. This capstone is conducted in accordance with the guidelines set forth by

California State University Monterey Bay. The Team created a full stack web application for the

purpose of pairing persons looking to form a roommate partnership. This application is called

Leewayz and can be accessed online. Leewayz will differentiate itself from the rest of the market

by putting emphasis on the compatibility of the potential roommates in question.

The application is developed using best practices the team learned through their software

engineering courses and administration research. Leewayz takes advantage of cloud computing

by having an Amazon Web Services (AWS) infrastructure. The technology driving the

application is Javascript, specifically the NodeJS framework. The timeline scope of this project

took approximately six weeks to complete with all the proposed features. The primary form of

evaluation is user feedback. Any comments and improvements suggested were tracked using

sprint improvement cards.

Leewayz aspires to offer an alternative to other room rental opportunities that resonates

with potential users. Selecting a roommate can be a difficult personal decision. The Contributors

feel privileged to take this capstone project as an opportunity to provide a service that is

meaningful to others.
3

Introduction / Discussion

Problem and/or Issue in Technology


As of the time of writing, there is a failure of policy and market forces to provide

adequate housing at affordable rates in areas such as Silicon Valley. “​We have systematic

failures to create adequate affordable housing for our hard-working families, and that is

something we must change,” said Oakland Mayor Libby Schaaf​ (Colorado, 2020).” This seems

to be a growing problem accelerated by the digital divide and other lapses in social equity. Many

people who want to rent an apartment are actually unable to due to their credit score, not being

able to afford a place for themselves, or financially unable to afford a place in a safe

environment. While this is not specifically a technological issue, it is a problem that the authors

feel can be alleviated through the use of technology. While there are numerous existing web and

mobile applications aimed at the housing market, it is not certain that a specific platform is

addressing the presented issue sincerely.

Solution to the Problem and/or Issue in technology


The Authors understand that not everyone is able to rent apartments or housing of their

own due to their financial situations. Being able to find a room on a trusted platform will allow

for users to feel that they matter. There is a place for them to seek a safe living space. There is a

real need for a platform that values every user and understands that for some renters, being able

to afford a room is most essential. A strong renting platform would work to weed out users who
4

aim to take advantage of others, as well as consider social factors that make for a harmonious

living environment.

Project Goals and Objectives


Leewayz is the name of The Creator’s capstone project which hopes to address the before

mentioned issue. It is a Full Stack web application that helps individuals find rooms to rent, as

well as helps individuals post rooms that they are interested in renting out. Users interact with

Leewayz through a web browser. This decision was made as most renters are familiar with how

to maneuver the web browser easily and efficiently. Having a good user interface (UI) was a top

priority when creating the Leewayz web application to help facilitate focus on the renting aspect,

not the technology.

Leewayz Goals and Objectives

Goals Objectives

Create a fully functioning web application room - Create a miniature monolith application as

rental platform a working model

- Break application into microservices to

increase stability

- Polish application with user feedback to

prepare for market

Provide a unique room rental platform that users - Outline features that competing services

find value in are not implementing


5

- Select features based on improving room

rental based on user experience and

cohabitation considerations

- Survey feedback provided by test group to

better gear the application towards

achieving the original mission statement

Familiarize and implement cloud infrastructure - Create AWS accounts for the project and

grant access to all team members

- Have all Contributors take part in

infrastructure implementation

- Research how to launch a web application

on the AWS platform and execute

Use Node and Javascript to implement a website - All Creators contribute to the Node

front end application

- Use HTML and CSS to create the web

application browser experience

- Incorporate test user feedback and make

changes to the UI if necessary

Communicate effectively as a team and use - Create application using Agile

productivity tools to provide a smooth and Development best practices with Trello

effective development experience Boards

- Maintain version control using Git


6

repositories with feature branches

- Hold regular weekly meetings to assign

work cards, add new feature cards, and

organize for the coming week

Community and Stakeholders


New tenants to the area are a major stakeholder in Leewayz. Especially those cautious of

using an online service. Moving to a new area and having to share an apartment or house is

difficult. It is especially difficult if you do not know anyone in the area. Even those who already

live in the area can take advantage of Leewayz. The service makes it easier to connect rentees

with prospective housing situations.

Another stakeholder is the leaseholder or landlord of a dwelling that is interested in

subletting their property. Letting someone into your property is a serious consideration. These

leaseholders are cautious because of how much they can be liable for if they welcome the wrong

roommates into their homes. If they pick the wrong option, they may be on the hook for

hundreds to thousands of dollars. For example, having a tenant who can not pay reliably. Late

payments from one or more tenants can cause unexpected shortfalls for a landlord until they

receive their full payment. Even eviction can be a pricey endeavor, with the costs involved

sometimes reaching as high as $10,000! (Collatz, 2017). Roommates usually sign leases by

themselves or with other renters to a landlord. Anyone rooming with a bad roommate can be

forced to stay the entire duration of their lease. To break it they will usually be liable for the
7

entire amount of the lease, up to a year’s rent. If it is not paid, not only will a landlord have to

fight to receive owed rent, but also lose money for each month that a unit is not being occupied

by paid renters (O’Connell, 2014).

Another stakeholder is the apartment complexes that usually see a wave of customers

going to their website first and reaching out to rent a room from them. They could be negatively

impacted and see less consumers on their websites due to Leewayz having lower prices set by

their users who are trying to rent a room on the website.

From The Contributor’s viewpoint, stakeholders gain more than lose from this

application. By introducing a system that both sides feel comfortable with, Leewayz reduces the

tension involved with rental and helps a community grow. Having information readily available

saves the time of all parties involved and brings about faster housing placement. It is as

convenient as entering information and responding to information on a website. It is a lot less

time-consuming than spreading information through word of mouth or applying to potential

homes on their own. The same can be said for leaseholders.

Evidence that the Proposed Project is Needed


The percentage of households cohabited by roommates has increased over the years.

More people are moving to cities where housing has not increased in proportion to the increase

in population. This rise is such that about “30 percent of American adults aged 23 to 65 lived

with roommates.” (Volpe, 2018) These individuals are usually moving for a job opportunity and

do not have the necessary family or friend structure in place at the new city of their arrival. As

such, people are turning to shared housing or roommates in order to keep up with the demand.
8

These roommates also need to find a way to match up with each other. People have

different living standards, and lifestyles. As a result, some individuals make for better

cohabitation matches than others. Some websites like Craigslist have plenty of user engagement,

but do not provide enough details into how an individual actually lives. Others may have some of

the details, but not enough to make a user want to use that platform. Providing a flexible

platform that can provide the details will help place more individuals into compatible roommate

housing (Volpe 2018).

Feasibility Discussion
The Author’s original environmental scan showed that, although there is an established

base of internet enabled real estate applications, they were not addressing the issue outlined in

this report. This fact seems to exist in contrast to the financial investment being placed into these

existing housing applications. “If we follow the money, it’s clear that more and more leading

VCs are turning to real estate tech or proptech for ripe opportunities for juicy returns and

disruption on a global scale” (Tabatabai, 2019). While profit stands to be made, little

consideration is given to housing as a human necessity.

When surveyed, the major players in the existing market were revealed to be Zillow.com

(Zillow) and Craigslist.com (Craigslist). These two competitors take vastly different approaches

to the design of their applications. Zillow’s applications primarily function through a map style

interface while Craigslist operates as a listing board. Besides their aesthetic differences, the

competitors take a different approach to how they handle their users. “This brings Zillow full

circle into the ability to search, compare, and ultimately purchase your own home” (Lewellen,
9

2018). Zillow aims to own and operate every aspect of the rental and purchasing process, while

Craigslist is a platform with a minimalist, hands off approach to customer data and

responsibility. This often works against Craiglist as their hands off approach is often to the

benefit of anonymous malicious actors. Monetary and identity theft are a real concern for

potential renters on Craiglists (Craigslist Scams to Avoid When Apartment Hunting in San

Francisco, 2019).

The Authors believe there is room for a service that exists in the middle of these two

extremes, and that this balance is in the best interest of customers. Both of these giants of the

rental industry fail to address whether potential roommates would be suitable for each other.

Addressing this consideration is what differentiates Leewayz from the rest of the market. The

Contributor’s application aims to understand the factors that contribute to a successful

cohabitation and enable users to consider these factors in their selection process.

The design of the Leewayz application leverages widely used industry standard

technology. While the technology is not antiquated, it is established enough that there is no

concern about developing at the bleeding edge where a deficiency of libraries and information

exists. The application itself is developed using Javascript, specifically using NodeJS and

Express. There were numerous advantages to selecting this technology besides the familiarity

that all the developers had with it. NodeJS is often celebrated for its ubiquity, ease of use, and

operability on both the front and back end of the application (Nehra, 2019). Given the

development timeline for this project, these features of NodeJS are critical to the success of the

Leewayz site.
10

Originally the plan for the infrastructure was to take a classic “meat and potatoes”

approach. This means allocating cloud resources via the Amazon Web Services (AWS) console,

and operating a web server on top of these assets via manual linux administration. The original

deployment of Leewayz.com was conducted in this fashion using a Bitnami distribution package.

While this is highly beneficial from an educational standpoint, this proved to be an unreliable

process that created more toil than it eliminated. With some guidance from an expert and

research, it became clear that the system operations field has largely moved away from this style

of administration and has adopted containers. “Real-world data backs up the conclusion that

Docker is being widely adopted.​ ​DataDog, a cloud-monitoring system, found that by March

2016, "13.6 percent of Datadog's customers had adopted Docker” (Vaughan-Nichols, 2018).

Armed with that knowledge, the Leewayz project was moved to a much more modern

workflow. A Dockerfile was written to containerize the application itself, and compose files

were written to orchestrate with the other containers. Traefik was selected as the reverse proxy

router for its modernity and ease of use. MariaDB was chosen as the database for it’s connection

to MySQL while being open source. All of these containers are orchestrated via a docker

compose file and run on an AWS Lightsail Ubuntu instance. These technologies enable easy

deployment of new builds, and keeps cloud infrastructure costs low.


11

Design Requirements

Functional Decomposition of the Project


The nodeJS application of Leewayz consists of several ExpressJS pages to allow users, as

either landlords or renters, to place and search listings of housing locations. The homepage is

located on an “index” page that shows example photos of houses and a navigation bar on top that

leads: back to the main menu, listings, profiles, login and signup pages. The signup page is

where a user is created and chooses whether they are a renter or landlord. If they are a renter,

then the application will create an account and redirect to a profile page. If they are a landlord,

then it will redirect to an add listing page. The login page is where a user will be able to login

using credentials created during the signup page; using a username and password. The profile

page is where renters are populated according to their descriptors. The listing page is populated

by property descriptors and their photos.

The MySQL database handles all information passed through the application and stores it

into three main tables. The user table contains identifying information for those who have access

on listing properties. The user table differentiates whether it is a landlord, renter and admin. The

listing table keeps track of property information such as rent, location, amenities and other

descriptors. Finally the renter table keeps track of renter info to be used at the profile page so that

landlords and/or other renters can take a look at prospective tenants.


12

Selection of Design Criterion


The project design allows for users to create an account and self-determine whether they

are a renter or a landlord. Renter users need to be able to create their own profiles and select

listings that appeal to them. Landlords must be able to create listings of their property that they

want to lease out to and check out profiles of renters. Through test user feedback we hope to

identify if any further features are needed.

Performance goals for this project is to have the database effectively manage information

from the application without much administration input or fixes. To remain reliable, the database

and application needs to be hosted in a secure storage location. Costs for maintaining these

servers and keeping the domain name will be initially funded by the team members.

Final Deliverables
The final deliverable is a full stack web application in the form of the Design

Requirements section. The Contributors created a live Leewayz application during the course of

the capstone project. The application can be accessed by visiting www.leewayz.com from your

web browser. Leewayz.com was a domain purchased by the project team so it can permanently

continue using that name. A github repository was used to store the code that programs the

leewayz site. During development of the project it has remained private. Plans can be made to

make it available on a public repository.

A video has been made demonstrating our project. It is located on youtube through

Mark’s student youtube channel. A formal live presentation will be made at the CSUMB CS
13

Capstone presentation on June 13 2020. Otherwise this paper describes the details on this project.

(Mariscal, 2020)

Approach / Methodology
The contributors developed the application in accordance with software engineering best

practices. The codebase is stored in an online hosted Git repository, and all new features are

submitted via a branch merge request. Github is currently the chosen platform to host the

repository, but in the future it may be prudent to switch to a local repository. Progress is tracked

using the kanban board system Trello. All proposed features are converted into individual cards

and assigned to members of the development team. Developers are responsible for managing

cards as they complete feature requests. Google Hangouts / Meets is The Team’s primary

communication platform, and G Suite is used for productivity software. Personal cell phones

messages and texts are used in the case of emergencies.

The Leewayz infrastructure platform is cloud based, in order to maximize reliability, and

cost. The contributors use Amazon Web Services (AWS) to operate infrastructure on the current

largest cloud platform. Leewayz specifically runs on AWS Lightsail, using an Ubuntu instance.

The front end for the application is crafted using Javascript. Node.js will be used as a backup

option should it be needed..

The first phase of the project was the creation of necessary accounts and granting of

access. Each contributor is responsible for administering at least one service in the productivity

stack. Where applicable, these responsibilities are assigned based on predefined roles and
14

specialties. This process took about two days, and by the end, all contributors had access to every

service needed for the entire project.

The second phase was the first phase of development. Infrastructure was indeed

purchased and configured through AWS, while the initial front end development was conducted

on local development environments. The architecture of the first design was a small monolith.

The objective is to create a functional application with the base set of features completed. This

phase will be completed when the contributors have a small working application that can be

deployed onto the server.

The next phase is to break apart the application into distributed services in accordance

with the microservices model. From previous courses, The Development Team saw the

technological advantages of engineering Leewayz as a microservices based application. The

main being that a part of the application can fail without the whole project becoming inoperable.

This goal was achieved via the infrastructure level of the application. This goal was realized on

the infrastructure level. While the website runs on a single AWS Ubuntu instance, this instance is

the host for several microservices containers. The MariaDB Database, the Traefik router,

Prometheus monitoring, and Leewayz itself are all different services that are integrated using

Docker Compose for configuration and service mesh.

The last and current phase is to add additional features to leewayz.com in accordance

with the software-as-a-service development model. Emphasis was first placed on polishing

Leewayz into a high class application according to The Development Team’s own personal

standard of success. This was accomplished by focusing on the route of user interaction with the

site to find problem situations that can break the application. The next step is to incorporate user
15

feedback into another round of polish to ensure that the needs of future customers are met. At the

time of writing, test users have been selected and scheduled for study. Improvements will be

made to the application based on their feedback. Suggestions will be converted to feature cards

on the Trello board which will then be acted upon by the development team. Through this

method The Developers hope to provide a polished, world class web application.

Legal Considerations
Renting rooms is a complex legal matter. In order to lease a space, the property owner

has to adhere to a set of obligations to avoid legal repercussions. Among these obligations are

maintaining the property, monetary exchange, and contract cancellation (Stewart, 2014). For this

reason, it is critical that Leewayz differentiates itself from the Landlord - Tenant relationship.

Since Leewayz is now released to consumers, language is provided that characterizes Leewayz

as the platform with which landlords and tenants find each other, and not an active participant in

the landlord - tenant relationship. While some competitors have more active participation in this

relationship, that is an auxiliary service that is currently out of scope for Leewayz.com. Should

Leewayz’s scope change, it is necessary the language be updated to reflect the new level of

participation in the landlord - tenant relationship.

Ethical Considerations
Housing is a human necessity, and as such it suffers from the same potential abuses as the

rest of society. Historically, housing rental has been an arena in which social injustice has been
16

perpetuated. “More than 90 percent of all housing discrimination occurred during rental

transactions, even though renters are often in greater need of affordable housing than

homeowners” (Thomas, 2017). It is vital for Leewayz to maintain an equitable renting platform

for people of all race, gender, sexual orientation, and creed.

Some underprivileged groups that may be negatively impacted by Leewayz may be

individuals who are able to afford to rent a room but are not given access due to having multiple

individuals in their family. For example, a mother who is working to afford a room for her and

her two children has found a room on our application to rent, but the person renting the room is

only allowing two individuals in the room. This could negatively impact a vast majority of users

who are trying to find reasonable rent to accommodate not only themselves, but their families as

well. One way to mitigate this ethical concern would be to have Leewayz establish a way for

users to search rooms by number of occupants per room. This would help users to filter out the

appropriate searches that they are looking for.

Timeline / Budget
The timeline for this project was calculated at six weeks for product development. The

reasoning behind this decision was that the fixed duration for the associated capstone course was

eight weeks. It was known when entering the project that the whole eight week duration would

not be allotted solely for development; however, this was not planned for accordingly in the

proposal. . In order to successfully achieve the final deliverable, the project scope had to be

hemmed to six weeks, not eight. The six week timeline also built in padding in order to account
17

for potential roadblocks and unforeseeable circumstances. The Developers are proud to say that

the project was completed as scoped within the timeline that was agreed upon.

At the time that the proposal was written, it was only clear where the project’s expenses

would be, not how much. While some of the technology stack has changed from the original

resource outline, this was done in a way that leveraged open source software. Changes to the

technology resources and associated scope of the project did not generate any unforeseen

expenses. The major budgetary concern was cloud compute power which was provided in the

form of Amazon Web Services Lightsail instances. It was decided among the development team

that it was in the best interest of the project to overprovision cloud resources to prevent any

possible outages or complexity associated with finite computing power. Even with a generous

portion of resources allocated, the monthly operating cost for Leewayz.com is twenty United

States dollars a month. The other expense was the domain name itself, which was already

purchased by Mark Mariscal ahead of the project for $11.34 on a two year term. While it was not

known what the server cost was going to be, it turned out to be affordable.

Usability Testing / Evaluation


Testing was performed in the same manner that was described in the project proposal.

The method for collecting feedback did deviate from the original design though. Due to the

Covid - 19 pandemic, it was theorized at the time of proposal writing that user feedback would

have to be collected remotely for most test volunteers. In actuality this was not the case. Two

thirds of the test studies were conducted in person. The objective for a tester was to first

complete the signup process as an individual that intended to use the site as a renter. The proctor
18

would ask them to create an account, and complete a rental profile for themselves. This is all the

prompting that a test user would receive. While the tester is accomplishing this objective, the

proctor would record any thoughts or feedback from the test user. The second half of the

evaluation would be similar, but the test user would be asked to sign up and create a room listing

as a landlord. Once the proctor has recorded notes about the trial period, they ask the test user for

any additional feedback or comments about Leewayz.com. The information from all the test

cases was compiled into a document that is located here:

The major deviation from the evaluation plan outlined in the proposal is that google

forms were not used. The value was seen in having a dialogue with the tester to get the most

possible feedback out of each case. A google form, while convenient, would have likely been too

impersonal, and did not offer the opportunity for follow up questions and responses. The medium

for the test evaluations was both in person as well as through online video conferencing so that

each test user can potentially provide the same level of feedback.

The test users were all chosen from a pool of acquaintances from the development team.

A concerted effort was to sample as many demographics of people as possible, considering that

housing is an issue that affects everyone. When it became clear that the test users were all

female, males were brought in to help provide an even perspective. The users represent a wide

array of professions from students, to teachers, from tradespeople to office workers to first

responders. This also ensures that there is a mix of both public and private sector workers. The

one deficit in the test user demographics is the age category. While it is possible that room rental

affects a younger audience more, this can skew the results of the evaluation. Certain thoughts,

criticisms, or comments may not apply, or be in contrary to an older audience. A second study
19

should be conducted, and perhaps an entirely other Leewayz.com project created to

accommodate this other audience.

Test results provided numerous insights into the design, and user experience of

Leewayz.com, but only revealed a couple software related action items. The largest bug that was

discovered was an issue with form parsing. Users naturally input the dollar sign “$” when filling

out pricing information. At the time, the program logic did not properly handle string inputs that

could not be parsed into numbers. There was much more said about the design and user

experience. Overall, the test group approved of the design of the website. It was often described

as “clean.” and minimalistic in a good way. As for user experience, the testing yielded a treasure

trove of ideas that the development team had not considered. Users were often skeptical or wary

of the site in the sense that they did not want to submit images, and asked for ways to avoid

doing so in profile creation. A first responder suggested that, due to their unorthodox work

schedule, there should be a method to communicate whether this would be a problem or not.

Numerous users also suggested that the website go through heavy proofreading. Both to weed

out grammar and spelling mistakes, but to also provide more clear instruction.

After the testing and evaluation phase was completed, feedback was converted into sprint

cards for the development team. The development week that followed was spent on

incorporating the feedback to make Leewayz a more attractive product for its users. There was

not any feedback that was contrary to another piece of feedback, so executive decisions did not

have to be made with regards to which path to take. The development team would like to thank

everyone involved for donating their time to improve Leewayz.com.


20

Final Implementation
The final product, Leewayz.com, did not deviate very much from the original design

outlined in the project proposal. The core of the application is a node.js container, which means

that Javascript was the primary development language for the site backend as well as front. The

website layout is written in hypertext markup language (HTML), which cascading style sheets

(CSS) for design. There is a minimal amount of jQuery utilized for a couple specific key

features. The best way to describe Leewayz.com is through a bottom up approach.

Technology Stack
Leewayz is a cloud enabled application which was a decision made to minimize cost.

AWS offers numerous tiers of cloud service, depending on what level of complexity the

customer wants to implement. For Leewayz, the development team selected Lightsail, which

exists between the Infrastructure-as-a-Service (IaaS) and Platform-as-a-Service (PaaS) business

model. Lightsail is not too simplified that it cannot be converted to traditional AWS

infrastructure, but also not so complex that beginners find it impenetrable. Given the level of

expertise of the team, this seemed like the correct decision to make. An Ubuntu Lightsail

instance was chosen due to Ubuntu’s familiarity, and ease of use. Registration for AWS and the

domain in practice was a matter of clicks.

The AWS server runs several Docker containers. Docker is a technology that allows

applications to share the same compute resources, while still being isolated via namespacing.

The advantage of Docker is that it allows the team to implement infrastructure as code and
21

ensure consistency, while removing the need to manually configure applications on the server.

All of the containers are orchestrated with a simple Docker Compose file. Docker Compose is a

configuration system that operates and links all the containers automatically so that the

development team does not have to. There is a Docker container for the router Traefik, the

Leewayz application, and the MariaDB database.

Traefik’s primary function for Leewayz is as an edge router. All requests for

Leewayz.com first arrive at the Traefik container. Traefik then processes the request and sends it

to the appropriate service container, which in this case is Leewayz. The Leewayz container is

generated by a very brief, seventeen line text file. The text file pulls in all software dependencies,

and launches the node.js application on Alpine Linux. The last container, MariaDB, is an

off-the-shelf solution. Docker hosts numerous applications to expedite the development process.

MariaDB was chosen because it is an open source system based on MySQL, a database

technology the team was already familiar with. The below diagram illustrates the infrastructure

architecture. It is through this use of Docker containers that Leewayz can adopt a microservices

architecture as described in the project proposal. A critical failure in the application or database,

would not damage the other. Docker instead will automatically restart the crashed service, and

the website will continue to function.


22

Deployment
Secure Shell (SSH) is used to communicate with the server. New code is transferred to

the server through the use of Github. Once code is checked into the master branch on Github, a

member of the team logs into the Ubuntu server, uses git to fetch the latest versions of the

infrastructure and application repositories. Taking the server down for maintenance, and

restarting the newly updated application only requires two terminal commands due to the

application’s use of Docker Compose. This allows the Leewayz team to rapidly iterate and

incorporate changes into the production environment. The AWS Ubuntu instance persists all data

supplied by the users. This data primarily consists of uploaded images and the state of the

database itself.. This volume persistence ensures that customers never lose their data, which

builds their trust with the application.


23

Database
The database schema is composed of three tables. There is a master table for users. This

table stores data that is common among all users of Leewayz.com. User primary keys serve as

foreign keys for the two remaining tables. The second table stores renter profiles. These profiles

are used when a user is using Leewayz to locate a place to live. Since each user should only have

one renting profile, the users and renter tables have a one to one relationship. The last table

stores information for each listing. As before, the id of the user that owns the listing is used as a

foreign key to link all the tables together. Since a user is allowed to have multiple listings on

Leewayz.com, the listings and users tables enjoy a one to many relationship.

Session data, in conjunction with database queries, are used throughout the website to maintain

the state of the user experience. The database itself does not house any image data. Instead, files
24

are stored directly on the filesystem of the application container, which in itself is a mounted

drive from the Ubuntu Lightsail instance. What the database does store, is the file path to image

information so that it can be retrieved from within the node application.

Inside The Node Application


As mentioned before, Node.js was selected for application development primarily due to

the Development Team’s familiarity with Javascript, but there are other advantages as well.

Node.js is a modern, in-demand technology so developing that skill set is valuable in the

marketplace, and there are countless resources available on the subject that should help be

needed. Leewayz takes advantage of several software packages to add features that there would

normally not be time to develop. Some of the major inclusions are the web framework

Express.js, Bcrypt for password hashing, and EJS for website templating. The before mentioned

dependencies were planned before the start of the project. Multer, which is a package used for

file image uploads, is the major package that was unplanned. There was a substantial amount of

time invested to learn how to effectively use the package to provide features to the site.
25

Credentials for the database connection are pulled in from environment variables in the

interest of security. It is not good practice to hard code passwords into the application. Database

connections are offered up from a pool of connections, so that they can be reclaimed once the

user is done with them. A whole class of functions are written for database operations. Most of

these queries are simple and search for table data based on a primary key, as the site currently

does not require more complex searches. These queries are keyed with session data created for

the user when they sign into the website.


26

The rest of the application is composed of a series of routing functions. “GET” and

“POST” methods to each universal resource location (URL) receive their own function that

implements the necessary logic, and then routes to the appropriate HTML file. Any data that

needs to be supplied to the template is also supplied at this time. The site collects a sizable

amount of personal data, as renting and leasing is a personal human activity. As a result, most of

the routes are “POST” routes to conceal any user information in the URL. Since database queries

are often performed, the majority of functions have asynchronous components to prevent bugs

associated with race conditions.

On top of the Node.js code, the application also houses all of the HTML templates, as

well as some design images and a CSS file. Packaging the application into a container requires a

brief Dockerfile with only eight commands inside. The site is explicitly run in production mode

on top of Alpine Linux, a distribution that is popular for Docker containers due to its lightweight

and built in security.


27

What Changed
Early on in the project, the first deviation from the proposal occurred. Originally the plan

was to use React Javascript Library for the application front end. One of the team members had

done research and development using React on their own time, and found it favorable. The

perceived benefits were that it was easier to make more complex and professional looking

websites quicker using React as opposed to styling HTML traditionally. When it came time to

work on the project, it became clear that the time investment to get the rest of the team up to

speed using the React Library was something that could not be afforded. The decision to

abandon React was made quickly and early enough that it did not hurt the project.

The other major implementation change was on the website infrastructure. Originally the

intention was to perform a manual set up using AWS EC2. This decision was mostly academic in
28

nature. At the time, it seemed prudent to build infrastructure knowledge from the bottom up, as

opposed to adopting modern techniques immediately. Server administration used to be a much

more manual task. The plan was to assign AWS resources through the web console, and then set

up a web server, most likely NGINX, using these manual methods. While the intention was

great, this deployment strategy was not practical on an aggressive timeline. It should be

mentioned that the first deployment of Leewayz.com was launched in this fashion using an AWS

Ubuntu Bitnami server. An industry professional suggested looking into containers as a solution

to this problem. Christopher Piwarski spent a morning doing research and development, and it

became clear that Docker containers were the way to go forward.

Both of these changes to the proposal occurred very early in the timeline of the project.

As a result, there were no negative ramifications for the change in strategy. The Development

Team did very well to identify key problems with the initial design of Leewayz, and pivot to a

viable alternative. The Team’s success in this regard led to the success of the project overall.

Conclusion
Leewayz believes that housing should not be a privilege for people but a right. As we

look today at the housing crisis specifically in the Bay Area, we see many people struggling to

put a roof over their heads. Leewayz saw this as an opportunity to not just speak about the

housing crisis, but to do something about it. The idea of a place where people could be able to

seek out rooms on a trusted platform would be a start in the right direction. Though there are

other platforms that help users find housing, such as Zillow, Redfin, and Trulia, none of these

platforms take into consideration the user who is unable to go the traditional route of finding
29

adequate housing. Craigslist is another platform that allows for users to post about spaces that are

being rented out, but the reputation of Craiglists as not being a safe platform has grown over the

years. Leewayz wants to be a strong renting platform that would weed out users who aim to take

advantage of others, as well as consider social factors that make for a harmonious living

environment.

The team wanted to make sure that the design and layout of the website was easy for

users to navigate through. Having a good UI was important and constructed with the thought of

less is more. Having users be able to sign up effortlessly and navigate through the forms to

populate their listing or renter profile was essential.

The collaboration between teammates was the key in making Leewayz become a reality.

The team used google hangout to communicate with each other and used Zoom to have weekly

video check-ins. The main takeaway that the team had on collaboration was that without constant

use of trello, github and google hangouts, completing the project would have taken a lot more

time. Consistency is needed to make sure that everyone knows what each other is doing on the

project so that multiple people do not work on the same feature which would push back the

timeline needed to complete the project. As the team worked on implementing the features that

were discussed, they realized the advantages of engineering Leewayz as a microservices based

application. The main being that a part of the application can fail without the whole project

becoming inoperable. The future of Leewayz is for the web application to be used in the real

world and to actually gain some online traction to help users find rooms to rent in the Bay Area.
30

References

Collatz, Andrea. “5 Big Risks Of Owning Rental Property That Every Landlord Should Know.”

SmartMove, 17 Jan. 2017,

www.mysmartmove.com/SmartMove/blog/5-risks-own-rental-property-landlords-need-k

now.page.

Colorado, M. (2020, February 10). Making It in the Bay: How the Bay Area's Housing Crisis

Spiraled Out of Control. Retrieved March 29, 2020, from

https://www.nbcbayarea.com/news/local/making-it-in-the-bay/making-it-in-the-bay-how-

the-bay-areas-housing-crisis-spiraled-out-of-control/2230410/

Craigslist Scams to Avoid When Apartment Hunting in San Francisco. (2019, August 13).

Retrieved March 24, 2020, from

https://www.rentsfnow.com/blog/craigslist-scams-to-avoid-when-apartment-hunting-in-s

an-francisco/

Lewellen, K. (2018, September 4). What companies does Zillow own? Hint – there are a bunch.

Retrieved March 24, 2020, from

https://theamericangenius.com/housing/corporate/what-companies-does-zillow-own-hint-

there-are-a-bunch/

Mariscal, Mark. (2020, June 9). [Leewayz Capstone Presentation]. Youtube.

https://youtu.be/uDntfAg3nx8

Nehra, M. (2019, October 23). Top 10 Reasons to learn NodeJS. Retrieved May 17, 2020, from

https://dev.to/decipherzonesoft/top-10-reasons-to-learn-nodejs-9ea
31

O’Connell, A. (2014, April 15). When a Roommate Moves Out. Retrieved from

https://www.nolo.com/legal-encyclopedia/when-roommate-moves-out-29520.html

Stewart, M. (2014, March 10). Overview of Landlord-Tenant Laws in California. Retrieved

April 11, 2020, from

https://www.nolo.com/legal-encyclopedia/overview-landlord-tenant-laws-california.html

Tabatabai, A. (2019, November 14). Where top VCs are investing in real estate and proptech

(Part 1 of 2). Retrieved March 24, 2020, from

https://techcrunch.com/2019/11/14/where-top-vcs-are-investing-in-real-estate-and-propte

ch-part-1-of-2/

Thomas, K. E. (2017, April 20). This Is What Housing Discrimination in the U.S. Looks Like.

Retrieved April 13, 2020, from

https://nextcity.org/daily/entry/housing-discrimination-us-report

Vaughan-Nichols, S. (2018, March 21). What is Docker and why is it so darn popular? Retrieved

May 17, 2020, from

https://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/

Volpe, A. (2018, August 15). The Strange, Unique Intimacy of the Roommate Relationship.

Retrieved from

https://www.theatlantic.com/family/archive/2018/08/the-strange-unique-intimacy-of-the-r

oommate-relationship/567296/
32

Appendix A
Focus Group Feedback

https://docs.google.com/document/d/1ZjL-3qWEQ1qNMFiCUskgQWwUSJfZwmRfaWMsJ1Iff

Yw/edit?usp=sharing 

Appendix B 
Team member roles and responsibilities and the division of work
 
Mark Mariscal: Mark worked on both the front and back end of the web application.

Mark implemented and designed the front-end of the Leewayz web application. Mark

also worked on the back-end of the web application by working specifically with the npm

Multer package to get users images into a disk storage, saved to the database and

rendered to the front-end of the web application. Mark also worked on MYSQL queries

for the database so that users could find renter profiles and listings by their city or Zip

CODE.

 
 
Christopher Piwarski: Christopher started the project by developing the infrastructure.

These responsibilities were a grab bag of tasks that required the configuration and

administration of a wide array of services. This involved configuring the cloud resources,

and linking them with the domain server. All server operations, including new feature

deployment were handled by Christopher. Moving the application to a microservices

architecture via the use of Docker containers as well as orchestrating the containers, were
33

Christopher’s responsibility. Database administration and data persistence were another

infrastructure project. With these tasks complete, Christopher also contributed to the

Leewayz application, primarily writing backend Javascript.

Wais Robleh: Wais worked primarily on the backend of the project. He particularly

designed the authentication system for users to stay logged in during their sessions. Used

hashed+salted password system so that a user’s information would be secure if the

database leaked. Also worked on various front-end issues as they arrived. Continuous

testing on new versions of the project as they are pushed.

​Appendix C
Photo of our Trello board
34

You might also like