You are on page 1of 24

OpenCommune

_______________

By
Cheuk On Yim

Matthew Stoney

Paola Torres

Wicaksa Munajat

_______________

California State University Monterey Bay

CST 499: Computer Science Capstone Fall 2022

Advisor: Prof. Amir Attia

December 11, 2022


1
Executive Summary

The main goal for this project is to create an application that promotes reusability and

sustainability. We believe this will decrease the amount of new item purchases which, in turn,

will save users money and reduce the usage of finite resources. Due to the growing population

and the finite resources we have on the planet, it is important to help sustain the environment

with the choices that we make. This application will allow users to create and join private and

public groups where they can list their items to allow other users to borrow or trade their items.
2
TABLE OF CONTENTS

Introduction

Project Name and Description ............................................................................................4

Users of the End Product.....................................................................................................4

Feasibility Discussion

Environmental Scan ............................................................................................................5

Stakeholders and Community..............................................................................................6

Future Enhancement............................................................................................................7

Ethical Considerations.........................................................................................................7

Legal Considerations...........................................................................................................8

Design Requirements/Usability Testing

Platform...............................................................................................................................10

Major Functions...................................................................................................................10

Usability Test Plan ..............................................................................................................11

Usability Testing/Evaluation .............................................................................................12

Final Discussion and Reflection

Timeline..............................................................................................................................13

Budget/Resource.................................................................................................................14

Final Implementation..........................................................................................................14

Discussion

Design and Implementation Problems…………………………………………………….15

Target versus Accomplishments…………………………………………………………..15

Project Design…………………………………………………………………………….16
3
Reference.......................................................................................................................................17

Appendix A....................................................................................................................................18

Appendix B………………………………………………………………………………………19

Appendix C………………………………………………………………………………………23
4
INTRODUCTION

Project Name and Description

The proposed project, OpenCommune, is a web application that will allow users to create

and join private or public groups where they can list their belongings and allow other users to

borrow or trade their belongings. We have noticed that people, including ourselves, purchase

many items that might not be essential or needed long term. Purchasing items that one will not

use more than once wastes time, money, and resources. During the pandemic, many people lost

their jobs and their main source of income. Thus, this made people more cognizant of where their

money was spent. We believe that it is important to play a role in helping the environment with

the choices that we make. Our web application aims to promote reusability and sustainability of

the environment by creating a space where users can borrow and trade their belongings ranging

from different categories such as sporting equipment, handy everyday tools, and furniture.

Users of the End Product

By bringing users who want to sell, trade, or borrow items, we will create an environment

that promotes the values of community, sharing, and connection. Our application will be made

available to the general public, however, during the initial stage, we will focus on small

communities such as students at CSUMB. All users will have ratings attached to their name in

order to show their credibility. This product aims to benefit lenders by allowing them to make

extra money by letting others borrow their items, borrowers by allowing them to save money by

borrowing items instead of purchasing them, and the environment by reducing the amount of

resources that will be used to manufacture new items.


5
FEASIBILITY DISCUSSION

Environmental Scan

According to Forbes, consumers are searching for more ways to rent and share items.

They are more concerned with having access to items than owning them (Morgan, 2019). A

quick search online reveals existing websites and applications which allow users to do just this.

A few examples of these are https://www.lendmeit.com/, https://borrowme.com/, and the Mooch

app. One of the earlier examples of this concept comes from Peerby which was an app based in

the Netherlands. This app connected around 100,000 users in a single month and quickly

expanded to locations such as London, Berlin, and Belgium (Beardsley, 2015). Although our

website shares the idea of borrowing and selling items within a local network, it will have

features that both optimize and widen the breadth of use for users.

The underlying concept of our website will be similar in that users will be able to list

items to lend or sell. However, we will also include additional categories such as trade and

giveaway to provide users the ability to more accurately describe what they would like to do with

their items. As a result, users will be able to more accurately search for items based on the

aforementioned categories. This is something that current sites do not do well. For example,

sometimes when selecting an item, you will discover that it is actually for sale instead of for

borrowing. This can be frustrating for a user if they are looking for an item in a specific category.

This is not user friendly since the information is hidden and has to be searched for by the user.

Our website will help users with this. This modification will also benefit those that are listing

items by giving them clear definitions to indicate how they intend to contribute their item.
6
Our website will also be different in that users will be able to create and join communities

to share items. This will be in addition to being able to search by location and item type. The

intent of these communities is to provide users the ability to create smaller, closed groups with

people they are related to, such as neighbors, students in a school, friends/family. This will give

these groups a platform to more easily swap items with each other instead of advertising to the

general public. Current websites and applications do not seem to have this feature. Our website

will be the one stop place for trading, renting, and/or giving away items.

Stakeholders

The general public is the main stakeholder of this project. On the user end, this

application brings financial benefit. It is a convenient alternative to obtain items and save money.

As users participate more by building communal networks on this platform, users and their

connections can be exposed to more money saving opportunities. This may encourage users to

try out a new hobby which requires much equipment such as camping. Users' chances of buying

new items are reduced, at the same time, they feel more financially encouraged to find a new

hobby that may improve their social lives. Therefore, hobby groups are another external

stakeholders. In a macro perspective, this application initializes a trend to reduce carbon

footprint on individuals and communities level. This also brings our environment as an external

stakeholder. The environmental benefit that is brought by the participation of users could be

enjoyed by our future generation as well.

Other stakeholders are the authors of the project and CSUMB. These stakeholders will

benefit academically. The former will gain ranges of software engineering skills related to web

application and fulfill graduation requirements. The latter may use this project as future reference

for future improvement of the CS online program.


7
Future Enhancement

OpenCommune has the potential to live long term if it acquires enough of a user base due

to its sustainability objective. Keeping this in mind, initially we will make the web application

available to smaller groups of individuals such as students on a campus. Future enhancements to

the web application will include an expansion to the general public, addition of messaging within

the application to facilitate transactions, and an expansion to include the sale of items (not just

trading and borrowing).

Another area for future work is the expansion of the categories of items available to

borrow. One of the original ideas was to provide users to lend and borrow their car or truck. The

impetus for this comes from the common situation that college students face every year: having

to move their furniture and possessions to a new living place. This is a common scenario that our

platform would endeavor to solve. However we would need to do more research into any legal

requirements that may be involved with loaning a vehicle.

One additional functionality that should be implemented is the ability for users to post

requests for items. Currently, users can post items they wish to make available to others. But

there is no way to create a post requesting an item or type of item.

Ethical Considerations

Privacy is one of the foremost ethical concerns when building any multi-user application.

OpenCommune should take measures to protect the privacy of our user’s personal information

by first limiting the data that OpenCommune collects to what is strictly necessary for its primary

purpose. The data that is collected will be freely visible to the user so that users can review, edit,

or delete their personal information at any time. Certain sensitive information is required for

each transaction, such as name, email address, and possibly payment information.
8
OpenCommune should keep user information protected through use of encryption, user

authentication, and any other means deemed appropriate.

Another important ethical consideration is that of property. OpenCommune is a platform

for the exchange of goods. However, not all goods are considered ethical to trade, whether they

have been illegally obtained or are legally barred from sale or possession. For example,

controlled substances, live animals, human trafficking, and any other illegal and/or socially

reprehensible subjects should be forbidden. The application should take into consideration the

nature of the goods being exchanged, and whether or not any form of currency is part of the

transaction. OpenCommune should not be a platform for the exchange of illegal or otherwise

unethical goods.

A final ethical consideration is quality of life. OpenCommune is a platform for helping

users help each other and the environment. As such, it should follow the path of maximum

positive impact while also having minimum negative impact. The design of each aspect of

OpenCommune should take into consideration ways to improve the user experience and quality

of life. This also includes accessibility. The application should strive to be inclusive to as many

people and groups of people as possible.

Legal Considerations

One legal consideration to take into account when running an online borrowing, selling,

and trading platform is correctly handling a user’s private information. A concern from the user’s

end could be concerns about selling their information to third parties without consent. A concern

from our end could be not having enough security measures in order to prevent data breaches or

leaks from happening. Consumers are concerned and protective of their data and are quick to

realize when their information is being mishandled. According to a KMPG study from 2016,
9
55% of consumers surveyed around the world said they are against buying things online due to

privacy concerns (Mlada, 2021). In order to reassure users that their data is being protected, we

will try to implement measures to be more transparent with how their data is being collected such

as using a badge to show their privacy and data security.

Another legal consideration to take into account is the threat of crime that can occur

when two users meet up to undergo a transaction. There are countless stories of buyers and

sellers meeting and something going awry. This is due to the fact that when you are dealing with

a stranger, the risk of something bad occuring increases. When something bad does occur, police

will be notified and this will be bad for the users of the application and all parties involved. In

order to lower the chances of any crime occurring, we will put an information page on how to

safely meet up in order to have a safe transaction such as meeting at a busy place or by a police

station. This will ensure that users are mindful when meeting with other users and can keep both

parties safe and transactions smooth.

These are the main legal considerations to be aware of when creating this application.

With regards to the users, we want to make sure that their privacy and information are handled

properly. This will give them more confidence in our product and give them more confidence in

using the application. In addition, we want to make sure that their physical safety is brought to

our attention. We will do everything in our power in order to make sure that users are aware

when they are meeting with one another to complete a transaction and aware of their safety.
10
DESIGN REQUIREMENT/USABILITY TESTING

Platform

For this project, many different platforms were used. Most of these platforms were used

because the team is familiar with the technologies and have used them throughout the CSUMB

curriculum. First, this project used MySQL as the main platform for the database. It is simple to

use and requires little time to set up in the local machines.

Second, Node.js/Express were used to interact with the database on the backend. This

was chosen due to its short learning curve which leads to faster development, the ability to use

JavaScript for frontend and backend which cuts the use of an extra tech stack, and the ability to

use the Node Package Manager which allows developers the ability to use and download code

packages by other developers in the project.

Third, we used the React framework for the frontend. This was mainly used because it

has a great way of creating components for web applications. Since repeating code is not a good

practice, the ability to create components, such as a nav bar, and reusing those components in

multiple pages saves a lot of development time.

Major Functions

The main purpose of this application is allowing users to post, borrow, sell, and trade

items within different networks. When the user first goes to the website, they will be taken to the

homepage and will show them a list of items that are currently being put up for rent, trade, or

sale. If a user is a member, they will be able to log in to the site.

Once logged in, the user will be redirected to the user home page which will show a list

of networks that are currently available. In addition, the user is able to create his or her own
11
network. They will also be able to click on the different networks and see a list of items up on the

site.

From here, they will be able to rent or buy depending on what they choose to do.

Build a user portal that displays joined groups, within each group there is a catalog for items.

Below (Figure 1.0) is a simple, rough sketch of the functionalities that the user is able to do on

the site.

Figure 1.0 - Simple user flow diagram when using the site.

Usability Test Plan

The web application will be tested by friends and family. The testers will be given the

developers laptops/computers where the website’s URL will be given along with a checklist of

items to complete while using the website. Initially there will be items and user accounts in the

database that we will place as a starting point.

The checklist to complete will consist of the following base components: add an item for

one of the categories (trade, sale, lend/borrow), browse through the available items, create a
12
group or network to share, add existing users to the group, purchase, borrow, or trade an item for

one of the categories aforementioned. If each participant is able to complete these tasks, we will

consider the tests successful.

We will also ask each user to fill out an exit survey about their experience while using the

website. The questions on the survey will include the following. How easy was it to navigate the

website? Did you find any particular task from the checklist difficult to complete? Were you

unable to complete any task? How likely are you to use this website? Are there any comments

you would like to include about the website in general? We will modify and correct the website

based on findings from the tasks lists and surveys

Usability Testing/Evaluation

We set up a testing environment in person. Since our product was not deployed online,

we had the tester come and test our application using our local machine. During the testing, we

observed and communicated with the user while they gave us feedback as they were testing the

product. The feedback that they gave us was noted in order to further improve our project before

we have to present it.

We sent a survey with the list of items to complete prior to testing, so the tester has

enough preparation beforehand. Our intention of sending the survey early was to allow the tester

to understand our instructions and to raise any questions that they might have prior to the testing.

After the testing, we had the tester fill out a short questionnaire about their experience

during the testing. The questionnaire will be in the appendix section of the paper. In addition, we

had a meeting with the tester and communicated on what improvements needed to be made.
13
FINAL DISCUSSION/REFLECTION

Timeline

The timeline for this project (Figure 2.0) is located below. It is based on the waterfall

software development cycle. There was no significant delay on each stage. We were able to

follow this timeline progressing. There were occasions that we worked across all the stages. This

was because some features of our application require revisiting most of the tasks listed in the

timeline to implement.

Figure 2.0
14
Budget/Resources

The resources required for this project include a laptop, and softwares — Discord for

communication, mySQL Workbench for backend development, text editor of choice for

programming, and Github for code management. All of the resources chosen for this project are

free and/or open source.

Final Implementation

We used mySQL for our database. We began designing our database in the schema design

tool in MySQL Workbench to generate a .sql script. After this was completed, we picked

Node.JS as our backend framework and created a basic CRUD route for all entities followed by

testing using Postman. An important object relational mapper library to support interaction with

our database we used is Sequelize. Upon completion, we turned our focus on pen and paper to

sketch out the essential elements of frontend. Following with what we have on sketch (figure

1.0), we developed our frontend (Client side, Figure 3.0 ) using ReactJS framework and used

Axios to interact with our backend (Server side, Figure 3.1).

Figure 3.0 Figure 3.1


15
Discussion

Design and Implementation Problems

One of the issues that we encountered during the implementation process was not being

able to show items in a specific network. This was due to the fact that we did not have a column

for network_id represented in the items table. In order to fix this, we had to reconfigure the

database schema in order to show that change. After adding that column to the table, we were

able to easily pull data from the network and items table in order to show the items that were in

their specific networks.

Targets versus Accomplishments

When initially planning the concept of the website we had the following ideas in mind as

targets for the functionality: users were able to borrow and rent items, users were able to create

groups, users were able to register/log in to their account, users were able to join groups, and

users were able to edit/change items they posted.

The accomplishments of the website that we were able to build were very close to these

initial ideas. A user was able to create an account and then log in with that account, users were

able to borrow items, users were able to create groups which we called networks, and users were

able to edit a posted item if they were the ones that initially listed it.

Project Design

The goal for the design of the website was to create a user interface that was minimalistic

and intuitive. There are key elements that tie the entire website together such as the

OpenCommune banner and menu that appear in all the webpages. This can be observed in the

website images included (Appendix B, Figure 4.0 - 4.5). We designed the home page with

engagement in mind to encourage users to use the site. This is why a quick description of
16
OpenCommune is included as well as a showcase of some of the items in the site (Appendix B,

Figure 4.0). The registration and login pages look visually similar but each serve their separate

purpose (Appendix B, Figure 4.1- Figure 4.2). The network page and item list page are both

organized in a table form with alternating colors per row. This organization is meant to present

the information in a cohesive manner that is easy to navigate (Appendix B, Figure 4.3 - Figure

4.4). The single item view page isolates the selected item and presents its information at the

center of the page (Appendix B, Figure 4.5).


17
REFERENCE

Beardsley, E. (2015). Why buy when you can borrow? App connects people and stuff. NPR.
Retrieved from
https://www.npr.org/sections/alltechconsidered/2015/01/02/374184584/why-buy-when-y
ou-can-borrow-app-connects-people-and-stuff

Environmental Protection Agency. (2022). National Overview: Facts and Figures on Materials,
Wastes and Recycling. EPA. National Overview: Facts and Figures on Materials, Wastes
and Recycling | US EPA

Morgan, B. (2019). The future of stuff is shared or rented. Forbes. Retrieved from
https://www.forbes.com/sites/blakemorgan/2019/10/14/the-future-of-stuff-is-shared-or-re
nted/?sh=30b0d1273a40

Mlada , P. (2021). Privacy Concerns Stop Customers from Buying. Openli ApS. Retrieved from
https://openli.com/blog/privacy-concerns
18
Appendix A

Items to Test:

SignUp/Login

Add an item for one of the categories (trade, sale, lend/borrow).

Borrow or buy an item.

Browse through the available items.

Create a group or network to share.

Add existing users to the group, purchase, borrow, or trade an item for one of the

categories aforementioned.

Tasks Participants Were Able to Complete: _________

If each participant is able to complete these tasks, we will consider the tests successful.

Closing Survey:

How easy was it to navigate the website?

Did you find any particular task from the checklist difficult to complete?

Were you unable to complete any task?

How likely are you to use this website?

Are there any comments you would like to include about the website in general?
19
Appendix B

Figure 4.0
20

Figure 4.1

Figure 4.2
21

Figure 4.3

Figure 4.4
22

Figure 4.5
23
Appendix C

All team members worked on both the back and the front end code for the website. The backend

work was divided by routes/tables. The frontend was divided by webpages to complete.

You might also like