Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
95 changes: 42 additions & 53 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,60 +1,49 @@
# cs4241-FinalProject
## Knock! Knock!

For your final project, you'll implement a course project that exhibits your mastery of the course materials.
Similar to A4, this project gives you an opportunity to be creative and to pursue individual research and learning.
## Project Link
[http://fp-cs4241.glitch.me](http://fp-cs4241.glitch.me)

## General description
## Team Members
- [Vandana Anand](https://github.com/vanand23): Passport login and payments
- [Ching Wing Cheng](https://github.com/WinnyCheng): Passport user registration and calendar
- [Janette Fong](https://github.com/jlfong): Calendar and events
- [Shine Lin Thant](https://github.com/heartkiIIer): Scheduling Payments and database structure
- [Joseph Yuen](https://github.com/jhyuen): Design User Mockups for the screens, contacts, and managing apartments

Your project should consist of a complete Web application, exhibiting facets of the three main sections of the course material:

- Static Web page content and design. You should have a project that is accessible, easily navigable, and features significant content.
- Dynamic behavior implemented with JavaScript.
- Server-side programming *using Node.js*. Typically this will take the form of some sort of persistent data, authentication, and possibly server-side computation.

Additionally, you should incorporate features that you independently research, design, and implement for your project.

## Project ideation

Excellent projects serve someone/some group; for this assignment you need to define your users and stakeholders. I encourage you to identify projects that will have impact, either artistically, politically, or in terms of productivity. Consider creating something useful for a cause or hobby you care about.

## Logistics

### Team size
Students are encouraged to work in teams of 2-5 students for the project. This will allow you to build a good project without expending an excessive amount of effort. While I would expect a team of four or five students to produce a project with more features, I expect a every team's work to exhibit all of the required facets described above.

### Deliverables

__Proposal:__
Provide an outline of your project direction and the names of the team members.
The outline should have enough detail so that staff can determine if it meets the minimum expectations, or if it goes too far to be reasonable by the deadline.
This file must be named proposal.md so we can find it.
Submit a PR to turn it in by Monday, September 30th, before class
## Login Information
- **Landlord**: janette (username), janette1 (password)
- **Tenant**: ccheng (username), 123 (password)
- Or register yourself

There are no other scheduled checkpoints for your project.
You must be done in time to present before the final project demo day (October 10th).
## Purpose
To develop a web application that allows for landlords and tenants to communicate, and view upcoming events and payments.

#### Turning in Your Outline / Project
## Requirements Satisfied

**NOTE: code is due before the project presentation day due to the end of term / grading schedule constraints**
Submit a second PR on the final project repo to turn in your app and code.

Deploy your app, in the form of a webpage, to Glitch/Heroku/Digital Ocean or some other service.
Folks on the same team do not need to post the same webpage, but must instead clearly state who is on the team in their proposal.

The README for your second pull request doesn’t need to be a formal report, but it should contain:

1. A brief description of what you created, and a link to the project itself.
2. Any additional instructions that might be needed to fully use your project (login information etc.)
3. An outline of the technologies you used and how you used them.
4. What challenges you faced in completing the project.
5. What each group member was responsible for designing / developing.

Think of 1,3, and 4 in particular in a similar vein to the design / tech achievements for A1—A4… make a case for why what you did was challenging and why your implementation deserves a grade of 100%.

## Final Presentation

Presentations will occur during the final day of class in *Riley Commons*.

## FAQs
Your project should consist of a complete Web application, exhibiting facets of the three main sections of the course material:

- **Can I use XYZ framework?** You can use any web-based frameworks or tools available, but for your server programming you need to use node.js.
- Static Web page content and design. You should have a project that is accessible, easily navigable, and features significant content. ✔
- Dynamic behavior implemented with JavaScript. ✔
- Server-side programming *using Node.js*. Typically this will take the form of some sort of persistent data, authentication, and possibly server-side computation. ✔
- Incorporate features that you independently research, design, and implement for your project. ✔

## Features
- **Login/Register** - Passport authentication
- **Server and database** - Express, lowdb, node.js
- **Landlord and Tenant Views** - Javascript, HTML, and Bootstrap for CSS
- **Schedule** - Landlords can create new events to add to the calendar
- **Calendar** - Displays events related to each user
- **Manage Apartments** - Landlords can manage keys/apartments
- **Contact** - Tenants and view contact information
- **Payment** - Tenants can view their bills and navigate to PayPal

## Challenges
Some challenges we faced was scoping the project and time management. When the team members met to discuss ideas for the final project, we brainstormed many different features and soon realized most of these features would be too out of scope for the project because we only had 1.5 weeks to implement it. In addition, all the team members had other classes and time commitments so we had to make sure to prioritize time for implementing this final project. We made sure to keep the features down to what we can accomplish within the timeframe and deliver a successful product.

## Technical Achievements
- **Side Tabs for Multiple Views (Technical)**: We wanted the user to be able to click tabs on the side and have the main window display the necessary information, which required us to utilize tags wisely for both the landlord and tenant views.
- **Related databases**: We had to construct multiple databases to link common features together, so we can ensure that the correct data is being displayed for the user.

### Design/Evaluation Achievements
- **Side Tabs for Multiple Views (Design)**: The side tabs are a nice design choice because it allows us to organize everything neatly in one page and don't require redirecting.
- **CSS from scratch**: We created mockups so we applied our CSS skills from scratch to achieve our desired design.
284 changes: 284 additions & 0 deletions database.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,284 @@
{
"users": [
{
"userType": "tenant",
"first": "Winny",
"last": "Cheng",
"username": "ccheng",
"password": "123",
"phone": "123",
"email": "123",
"key": 8
},
{
"userType": "landlord",
"first": "Joe",
"last": "Yuen",
"username": "janette",
"password": "janette1",
"phone": "512-576-6716",
"email": "jhyuen@wpi.edu"
},
{
"userType": "tenant",
"first": "Vandana",
"last": "Anand",
"username": "vandu",
"password": "123",
"phone": "12345",
"email": "hello@gmail.com",
"key": ""
},
{
"userType": "tenant",
"first": "WebwareFirst",
"last": "WebwareLast",
"username": "webware",
"password": "webware1",
"phone": "0000000000",
"email": "webware@wpi.edu"
},
{
"userType": "tenant",
"first": "WebFirst",
"last": "WebLast",
"username": "web",
"password": "web1",
"phone": "1111111111",
"email": "web@wpi.edu",
"key": "webkey"
},
{
"userType": "tenant",
"first": "Joe",
"last": "Yuen",
"username": "t1",
"password": "t1",
"phone": "123-456-7890",
"email": "jhyuen@wpi.edu",
"key": 8
},
{
"userType": "tenant",
"first": "John",
"last": "Smith",
"username": "t2",
"password": "t2",
"phone": "21323",
"email": "2313",
"key": 8
},
{
"userType": "tenant",
"first": "John",
"last": "Smith",
"username": "t3",
"password": "t3",
"phone": "21323",
"email": "2313",
"key": 8
},
{
"userType": "tenant",
"first": "John",
"last": "Smith",
"username": "t4",
"password": "t4",
"phone": "21323",
"email": "2313",
"key": 8
},
{
"userType": "tenant",
"first": "foisie",
"last": "foisielast",
"username": "foisie",
"password": "foisie1",
"phone": "8888888888",
"email": "foisie@wpi.edu",
"key": 400
},
{
"userType": "tenant",
"first": "ww",
"last": "www",
"username": "wwww",
"password": "www",
"phone": "1111111111",
"email": "asdf",
"key": 123445
}
],
"apartments": [
{
"address": "44 Somerset St. Apt. 2",
"key": 8,
"landlord": "janette"
},
{
"address": "hjhk",
"key": 1,
"landlord": "janette"
}
],
"keycount": 9,
"events": [
{
"eventname": "BBQ",
"day": "2019-10-23",
"desc": "Veggis can die",
"apt": 8,
"eventid": "BBQ56 Fluffy St"
},
{
"eventname": "House Tour",
"day": "2019-10-23",
"desc": "",
"apt": 8,
"eventid": ""
},
{
"eventname": "test",
"day": "2019-10-16",
"desc": "test",
"apt": 1,
"eventid": "testtest"
},
{
"eventname": "BBQ2",
"day": "2019-10-23",
"desc": "Veggis can die",
"apt": 1,
"eventid": "BBQ56 Fluffy St"
},
{
"eventname": "House Tour2",
"day": "2019-10-16",
"desc": "",
"apt": 1,
"eventid": ""
},
{
"eventname": "test2",
"day": "2019-10-16",
"desc": "test",
"apt": 8,
"eventid": "testtest"
},
{
"eventname": "finalproject",
"day": "2019-10-11",
"desc": "webware ha",
"apt": 198,
"eventid": "finalproject1"
},
{
"eventname": "hi",
"day": "2019-10-13",
"desc": "bye",
"apt": 535,
"eventid": "hi1"
},
{
"eventname": "water",
"day": "2019-10-14",
"desc": "bye",
"apt": 1,
"eventid": "water1"
}
],
"payments": [
{
"amount": "$20",
"due": "2019-10-23",
"desc": "Rent",
"apt": 8,
"paymentid": "Rent56 Dover st"
},
{
"amount": "$500",
"due": "2019-10-16",
"desc": "Fridge",
"apt": 1,
"paymentid": "Fridge44 Dover St"
},
{
"amount": "$9,000.00",
"due": "2020-01-10",
"desc": "New House",
"apt": 33,
"paymentid": "New House33 Dover St"
},
{
"amount": "$0.00",
"due": "2019-10-02",
"desc": "test",
"apt": 44,
"paymentid": "testtest"
},
{
"amount": "8",
"due": "2019-10-11",
"desc": "yuop",
"apt": 27,
"paymentid": "yuop2"
},
{
"amount": "$90.00",
"due": "2019-10-17",
"desc": "ujfvjhrwvlh,",
"apt": 80,
"paymentid": "ujfvjhrwvlh,1"
},
{
"amount": "$999.00",
"due": "2019-10-10",
"desc": "mean girls 10",
"apt": 562,
"paymentid": "mean girls 101"
},
{
"amount": "$77.00",
"due": "2019-10-25",
"desc": "food",
"apt": 8,
"paymentid": "food8"
}
],
"services": [
{
"service": "Shower Repair",
"date": "2019-10-15",
"desc": "No water",
"apt": 8,
"serviceid": "Shower Repair56"
},
{
"service": "Drain",
"date": "2019-10-16",
"desc": "no hole",
"apt": 56,
"serviceid": "Drain56 Dover St"
},
{
"service": "Deomlish",
"date": "2019-10-16",
"desc": "Time to go..",
"apt": 1,
"serviceid": "Deomlish55 Dover"
},
{
"service": "Test",
"date": "2019-10-14",
"desc": "test",
"apt": 5,
"serviceid": "Testtest"
},
{
"service": "broken toilet",
"desc": "it's leeking",
"apt": 8,
"serviceid": "broken toilet8"
}
]
}
Loading