Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
7acd613
Added team members
amandaeze97 Sep 30, 2019
81277d6
Update README.md
mmdanke Sep 30, 2019
35d6d27
Carla test
Sep 30, 2019
67ee575
Update and rename README.md to proposal.md
mmdanke Sep 30, 2019
94031ff
Update proposal.md
mmdanke Sep 30, 2019
7bbe229
Create README.md
mmdanke Sep 30, 2019
5c96baa
Server methods
Oct 1, 2019
010ec40
implement login.html
eos7l Oct 2, 2019
525f4ee
implemented login
eos7l Oct 3, 2019
6dbca60
Merge pull request #1 from eos7l/stylingInit-Sylvia
eos7l Oct 3, 2019
c504793
fixed login
eos7l Oct 3, 2019
61fdf2f
Merge pull request #2 from eos7l/stylingInit-Sylvia
eos7l Oct 3, 2019
ef48109
Availability table
Oct 3, 2019
aff2946
Merge pull request #3 from eos7l/ciduarte/table
Oct 3, 2019
29ff941
Table in template
Oct 3, 2019
313a07b
Edited Names of Buttons
mmdanke Oct 4, 2019
b57221d
Edited HTML References
mmdanke Oct 4, 2019
6c03f4b
Update reference.html
mmdanke Oct 4, 2019
d918166
Created register.html
mmdanke Oct 4, 2019
eaef12f
changed css for title
mmdanke Oct 4, 2019
895a486
Omitted logo, changed css for title
mmdanke Oct 4, 2019
0f2ca61
Update register.html
mmdanke Oct 4, 2019
1e2a742
added window.onload part for const registerButton
mmdanke Oct 5, 2019
6c25088
added potential register.js reference
mmdanke Oct 5, 2019
319b5d5
added potential register.js reference
mmdanke Oct 5, 2019
4dfa796
added potential register.js reference
mmdanke Oct 5, 2019
2d0aa79
Updated register.html
mmdanke Oct 5, 2019
e85318d
Fixed login
Oct 6, 2019
b209d13
Table styling changes
eos7l Oct 6, 2019
60c7649
Bootstrap 4, integrate form
Oct 7, 2019
d12e433
Merge pull request #4 from eos7l/tableStyling-Sylvia
Oct 7, 2019
1afc55b
update register.html
mmdanke Oct 7, 2019
1eeabd3
update register.js
mmdanke Oct 7, 2019
5e3c594
Update register.js
mmdanke Oct 7, 2019
90e2bdf
Merge pull request #5 from eos7l/mmdanke/registration
Oct 7, 2019
3ef2326
update form styling
eos7l Oct 7, 2019
8e7f4f5
Merge remote-tracking branch 'origin/tableStyling-Sylvia' into tableS…
Oct 7, 2019
1889b5d
Merge header changes
Oct 7, 2019
e2ba7f5
Merge pull request #6 from eos7l/tableStyling-Sylvia
Oct 7, 2019
31ad204
added room field
eos7l Oct 7, 2019
dd850cb
Availability array
Oct 7, 2019
0683a43
Merge branch 'master' of https://github.com/eos7l/fp
Oct 7, 2019
948af27
Form updates
Oct 7, 2019
22b2d74
Merge pull request #7 from eos7l/ciduarte/separate-form-js
Oct 7, 2019
7f338ec
Added email
Oct 8, 2019
45137fa
🌧🐩 Checkpoint
Oct 8, 2019
8fe4349
🌿💸 Checkpoint
Oct 8, 2019
390118a
🛍💇 Checkpoint
Oct 8, 2019
c287ccd
🚨🛀 Checkpoint
Oct 8, 2019
0dddf23
🐘🗽 Checkpoint
Oct 8, 2019
bbc0da3
👘📙 Checkpoint
Oct 8, 2019
6c0bbb3
📙🐸 Checkpoint
Oct 8, 2019
b44fe38
🛀🐾 Checkpoint
Oct 8, 2019
44db371
👗🚝 Checkpoint
Oct 8, 2019
b37e231
✂️🌊 Checkpoint
Oct 8, 2019
d007ed4
📒🙈 Checkpoint
Oct 8, 2019
989e1e1
Delete .glitch-assets
mmdanke Oct 8, 2019
d62590c
Update db.json
amandaeze97 Oct 8, 2019
9754fc1
Quick Fixes
Oct 8, 2019
e8399db
Email functionality
Oct 8, 2019
a6396fc
Fix header
Oct 8, 2019
dd5c594
input field no longer clears
eos7l Oct 8, 2019
79778bc
Valid room availability
Oct 8, 2019
823ff53
Merge pull request #8 from eos7l/ciduarte/availability-validation
Oct 9, 2019
e820c3d
update email form
eos7l Oct 9, 2019
3a4d273
Merge branch 'master' of https://github.com/eos7l/fp into updatedEmail
eos7l Oct 9, 2019
3189d4f
Merge pull request #9 from eos7l/updatedEmail
Oct 9, 2019
6a9616d
Create meetingsDisplay.html
amandaeze97 Oct 9, 2019
31a2797
Added meetings button
amandaeze97 Oct 9, 2019
f13eda8
Update dashboard.html
amandaeze97 Oct 9, 2019
fea6b28
Update meetingsDisplay.html
amandaeze97 Oct 9, 2019
607140a
Updating General Layout of README
mmdanke Oct 9, 2019
9a10c5c
Made 17:30 to show up for startTime
amandaeze97 Oct 9, 2019
df3b3a8
Quick Fixes
Oct 9, 2019
f3cc6b4
Update proposal.md
mmdanke Oct 9, 2019
95e9c4b
Update README.md
mmdanke Oct 9, 2019
d192151
Update README.md
mmdanke Oct 9, 2019
682ff6a
Update README.md
mmdanke Oct 9, 2019
be6b7f6
Update README.md
mmdanke Oct 9, 2019
2aeae43
Update README.md
mmdanke Oct 9, 2019
bc6cf4f
Update README.md
mmdanke Oct 9, 2019
1744b25
Update README.md
mmdanke Oct 9, 2019
b5f7839
View meeting feature
Oct 9, 2019
c19e86f
Register styling
Oct 9, 2019
5cb29a1
Updated README
Oct 9, 2019
d97e1f1
Update README.md
eos7l Oct 9, 2019
1e34c79
Merge pull request #10 from eos7l/amandaeze97-patch-1
Oct 9, 2019
fda36c7
Roominder logo and favicon
amandaeze97 Oct 9, 2019
e94172c
Update README.md
amandaeze97 Oct 9, 2019
1f8ea2a
Added logo and favicon
amandaeze97 Oct 9, 2019
6e14c10
Added logo and favicon
amandaeze97 Oct 9, 2019
0a93fef
Added logo and favicon
amandaeze97 Oct 9, 2019
3ee4fb6
Added logo and favicon
amandaeze97 Oct 9, 2019
df08b03
Made 17:30 to show up for startTime
amandaeze97 Oct 9, 2019
e2340c9
Logo
Oct 10, 2019
964b5c6
Merge pull request #11 from eos7l/final-submission
Oct 10, 2019
66010c3
Update logo
Oct 10, 2019
c6fa1bf
Merge pull request #12 from eos7l/final-submission
Oct 10, 2019
9b8f7f9
Update README.md
mmdanke Oct 10, 2019
7018a47
Update README.md
mmdanke Oct 10, 2019
d3bb097
Update README.md
mmdanke Oct 10, 2019
f82cb20
Update README.md
mmdanke Oct 10, 2019
6d15f1c
Update README.md
amandaeze97 Oct 10, 2019
9de8705
Minor fixes
amandaeze97 Oct 10, 2019
4710a54
Update README.md
amandaeze97 Oct 10, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
177 changes: 146 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,166 @@
# cs4241-FinalProject

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.
## Logistics

## General description
### Team:

Your project should consist of a complete Web application, exhibiting facets of the three main sections of the course material:
Our team consists of four members: Manasi Danke, Carla Duarte, Amanda Ezeobiejesi, and Sylvia Lin.

- 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. Typically this will take the form of some sort of persistent data, authentication, and possibly server-side computation.
## Deliverables:

Additionally, you should incorporate features that you independently research, design, and implement for your project.
### __Project:__ https://fp-md-cd-ae-sl.glitch.me

## Project ideation
#### Directions to run it:
1) Make sure you run npm install if the application is not loading on glitch.
2) Sign out of all current gmail accounts.
3) Sign into our project team’s gmail account with these credentials:
- Username: wpi.meeting.notification@gmail.com
- Password: meetingwpi1
4) Go to email settings and allow access to less secure apps: https://myaccount.google.com/lesssecureapps
5) Go to this link and click “Continue” : http://www.google.com/accounts/DisplayUnlockCaptcha
6) If there are any issues, please check our gmail to see if there are any recent emails regarding security. Please check the green "yes" in the email to indicate that this activity was due to our application.
7) You are all set! You can now log in with any of these credentials or create and register your own account:

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
Username: ciduarte@wpi.edu

Password: 1234

<br><br>
Username: mmdanke@wpi.edu

Password: 1234

<br><br>
Username: ylin7@wpi.edu

Password: 1234

<br><br>
Username: aezeobiejesi@wpi.edu

Password: 1234

8) If you have any additional questions, please do not hesitate to reach out to us.

### _Professor Roberts' Feedback on the Proposal:_

"This sounds really really useful! I don't have much experience using Live25 so I'm unclear how much effort it will take to
integrate your software with this system. Do you have a backup plan / alternative feature to implement if Live25 integration
proves to be too challenging? If you already know this won't be a problem, then you're good to go!" - Charlie Roberts

### How We Implemented His Feedback:

After reviewing Professor Robert's feedback, we decided to focus our project entirely on creating a room booking service (rather
than implementing user availability), since that would be quite a coding challenge in itself. To appropriately limit the scope of
our project (to be completed in 2 weeks), we focused on prototyping what an updated room booking service might look like.
Our hope for this tool would be that along with booking capabilities, our users would have a concise location to view what
reservations they have made.

## Final Project Description:

#### Intended Users:
Groups or teams who need a tool to book meeting spaces.

### General Description:

We created a project management tool that enables users to book rooms based on their availability. We implemented these
key features in our project management dashboard:

1) Login functionality that allows users to log in/register in order to save relevant booking information.

2) A room availability dashboard which includes:

- a form that allows users to select which days and times of the week they'd like to book a meeting for, and
- a visual table display of rooms that are already booked for particular times

3) A tool that sends an email to recipients through our application to share booking details and provide confirmation.

4) A table that shows the user's meetings and enables them to delete meetings they have booked.

#### Impact:

As students who have worked on large group projects and IQP teams, we know how difficult and how confusing it can be to use 25live
to find empty meeting spaces on campus.
Our application addresses this issue and provides a solution that enable teams to find a time and place to interact and accomplish
their team goals.

## Technical Requirements Accomplished:

Our project is a complete web application:

- Our project has static web page content and design. It is accessible, easily navigable, and features significant content.
- Our project showcases dynamic behavior implemented with JavaScript.
- Our project uses Node.js, uses persistent data (lowdb) and implements authentication through login and register functionality (passport).
- Our project implements middleware and server-side computations.
- Our project implements a form that lets users add, view and delete data that is displayed in varying ways throughout the website.
- Our project lets users delete their bookings from their list of meetings.

### Technologies Used and How We Used Them:

- <b>HTML:</b> divided main pages into their own html files to help modularize the code and display certain content for certain aspects of the site

- <b>CSS:</b> A bootstrap template found on TemplateMag; we additionally altered CSS through flexbox and editing style, color, font, size,etc...

- <b>Javascript:</b>
- <u>In general:</u> helped to modify content on the website, interact with user’s actions, and connect the front-end and back-end of the project
- <u>Node.js:</u> used for server-side
- <u>Nodemailer:</u> used to help us send booking confirmation emails from our account to the specified recipients
- <u>Lowdb:</u> used for our database and make sure that our data is persistent

- <b>Middleware:</b>
- <u>Express:</u> a middleware and routing web framework with minimal functionality that listens for requests and calls the appropriate functions
- <u>bodyParser:</u> parses incoming http request bodies before handlers.
- <u>Passport and Passport-local:</u> authenticates requests through strategies such as the Local strategy(in this example).
- <u>serveStatic:</u> serves static files from the path where files are being drawn from by the application
- <u>Compression:</u> improves the performance of our Node.js, since it decreases the amount of data that is downloaded and served to users

### Fun Features that we independently researched, designed, and implemented:

We had to research many components of our application and found resources on Stack Overflow, w3schools, tutorial points, and YouTube.

Additional Technical/Design Achievements:

- <b>*nodemailer:*</b> used to send emails from our specialized team gmail account that notified recipents of the day, start time, end time,
and location of their scheduled meeting.
- <b>*Responsive Layout:*</b> maintained a responsive layout throughout the entire website. This makes it more convenient for users to
book rooms on the go through their mobile devices.
- <b>*Login security*:</b> We implemented login redirect cards in order to prevent users from booking meetings if they are not logged in.

## Challenges:

Our group faced challenges in terms of the scope of the project. Initially, our intent was to recreate a more visually appealing WhenToMeet that would allow users to save their availability for future use. We also wanted to incorporate booking rooms and creating meetings, like 25Live. We quickly realized this would be too much to accomplish in two weeks, so we scaled the project down to simply booking rooms for meetings. Doing so also allowed us to focus heavily on UI design, which was our primary goal in reimagining a service like WhenToMeet or 25Live.

In addition, we encountered a few difficulties when we first began to implement nodemailer. We realized that we needed to log out of all gmail accounts, log into the team gmail account, change the gmail settings to enable less secure app access, log into our gmail to confirm that we made the change to settings, and then click the DisplayUnlockCaptcha link to ensure that our project can send emails from our gmail account.

## Individual Responsibilities:

<b>Carla:</b> Created the server file, established the database, wrote methods for client/server interaction, helped mock and create the meeting page and the room availability page, helped make the logo.

<b>Amanda:</b> Wrote some methods for client interaction (incorporating client experience), helped mock and create the meeting page from scratch, helped fix bugs in the header, made the favicon, and helped make the logo.

### 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.
<b>Manasi:</b> Created registration page, helped mock and create the meeting page, helped to implement nodemailer functionality, and wrote initial versions of the proposal and final readme.

### Deliverables
<b>Sylvia:</b> Created login page from scratch, custom styled CSS on top of the original Bootstrap template, helped create the room availability page, created the booking form from scratch.

__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

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).
### Future Improvements:

#### Turning in Your Outline / Project
If we had more time, we would have implemented the following features:

**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.
<b>MM-DD-YYYY System:</b>
Made a week-by-week scrolling system that allows the user to book rooms based on a particular week and in accordance with dates from the calendar. For example, a user could book the Frida Kahlo room from 10:00AM - 12:00PM on Oct 15th, 2019 rather than just being limited to the current week Sunday - Saturday.

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.
(Staff will use the proposal to build the grading sheet.)
<b>Different Table Layout:</b>
Set up the room availability table in a different way (room vs. hours) so it becomes easier to check the most recent available rooms since people are more concerned with the first day they can book any room rather than the actual room
- Potentially have a dropdown menu so it is easier to switch days

## Final Presentation
<b>Room Sizes:</b>
We would implement different room sizes so that a user can choose if they want to book a room that holds 4 people, 6 people, or 8 people.

Presentations will occur during the final day of class.
<b>Email Functionality:</b>
We would change the sending emails functionality so that when an email is sent to the recipients, it shows that that user is the one that booked the room. We could also allow users to add a message in the booking form so all recipients will receive the message.

## FAQs
<b>Past Meetings:</b>
For the Meetings page, we would have made it possible for a user to see their past meetings as if stored in their own personal calendar. Possibly a dropdown where the user could select a particular day and that day’s, meetings would show up.

- **Can I use XYZ framework?** You can use any web-based frameworks or tools available.
Loading