Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
187 commits
Select commit Hold shift + click to select a range
7d5f13d
Create proposal.md
nchintada Oct 5, 2020
73e9cfa
Made names and others bullet points for legibility
bnklaiman Oct 7, 2020
630c7d8
Created base front end files
nchintada Oct 7, 2020
5f001e9
Adding in base files for back-end
nchintada Oct 7, 2020
21d1a90
Update project structure. Add basic server. Add dependencies. Set env…
lbodwell Oct 8, 2020
d70912d
Set up API routing. Implement various Express middlewares. Set up db …
lbodwell Oct 8, 2020
fb38e42
initial
rkayastha98 Oct 10, 2020
2b7c9aa
layout complete
rkayastha98 Oct 10, 2020
ba41399
layout complete
rkayastha98 Oct 12, 2020
978edb7
Merge pull request #1 from nchintada/rimsha-dev
rkayastha98 Oct 12, 2020
02f78fd
Update home.html
bnklaiman Oct 12, 2020
b42d226
Merge pull request #1 from nchintada/rimsha-dev
nchintada Oct 12, 2020
7b53e4a
Merge pull request #2 from nchintada/home-page
nchintada Oct 12, 2020
88d2af4
Changed second heading to groups
bnklaiman Oct 12, 2020
db33709
layout complete
rkayastha98 Oct 12, 2020
4627277
Merge branch 'home-page' into rimsha-dev
rkayastha98 Oct 12, 2020
60f4519
layout complete
rkayastha98 Oct 13, 2020
913c0b2
Minor tweaks.
lbodwell Oct 13, 2020
631ce81
Started writing task script
nchintada Oct 13, 2020
e8d7eb8
Work on user and group API routes.
lbodwell Oct 13, 2020
7d63a08
Fix error.
lbodwell Oct 13, 2020
cf56d29
Continue work on group routes.
lbodwell Oct 13, 2020
6bcbdfa
Finish user and group routes.
lbodwell Oct 13, 2020
598d42d
User and group route improvements. Start message routes.
lbodwell Oct 13, 2020
3c972ea
Implement message routes. General cleanup.
lbodwell Oct 13, 2020
77422b8
Fix bug in message routes. Add endpoints and comments for task routes.
lbodwell Oct 13, 2020
319a19f
Tasks can be added
nchintada Oct 13, 2020
9871fad
Adding and deleting column basic functionality works
nchintada Oct 13, 2020
d8ac35c
Merge branch 'master' into rimsha-dev
nchintada Oct 13, 2020
578a41c
Merge pull request #3 from nchintada/rimsha-dev
nchintada Oct 13, 2020
c46c19a
Merge branch 'master' of https://github.com/nchintada/final-project i…
bnklaiman Oct 13, 2020
910b938
Merge branch 'master' into nikhil-dev
nchintada Oct 13, 2020
18bcbf6
Displays tasks on load
nchintada Oct 13, 2020
911b567
Updated new column and task display
nchintada Oct 13, 2020
73f732f
New add task buttons now functional
nchintada Oct 13, 2020
df33fe5
Merge pull request #4 from nchintada/nikhil-dev
nchintada Oct 14, 2020
1f72264
Merge branch 'master' of https://github.com/nchintada/final-project i…
bnklaiman Oct 14, 2020
7c82fbc
worked on login page
bnklaiman Oct 14, 2020
8869033
bnklaiman Oct 14, 2020
4c7a9f8
layout complete
rkayastha98 Oct 14, 2020
6f96940
Just a little commit so I can checkout another branch :)
nchintada Oct 15, 2020
64d1191
Merge branch 'rimsha-dev' into nikhil-dev
nchintada Oct 15, 2020
38f1edf
Rimsha's changes implemented
nchintada Oct 15, 2020
aa11538
Edit Modal Autopopulate
nchintada Oct 15, 2020
cce935a
Editing Tasks Works
nchintada Oct 15, 2020
655c334
Deleting Tasks Works
nchintada Oct 15, 2020
bc95f80
Implement task routes.
lbodwell Oct 15, 2020
d75046c
Resolve merge conflicts.
lbodwell Oct 15, 2020
4db6319
Fix bug.
lbodwell Oct 15, 2020
148cc6a
Various bug fixes.
lbodwell Oct 15, 2020
8d65a62
Routing tweaks.
lbodwell Oct 15, 2020
6e3f674
Fix issue with account page.
lbodwell Oct 15, 2020
165e42e
Tasks now display on multiple columns
nchintada Oct 15, 2020
5513cda
Fix bug preventing new users from being added to database.
lbodwell Oct 15, 2020
06a6c96
Deleting Columns Works Now
nchintada Oct 15, 2020
f087c10
Merge branch 'master' into luke-dev
nchintada Oct 15, 2020
950ebc6
Merge pull request #6 from nchintada/luke-dev
nchintada Oct 15, 2020
c1c0054
Merge branch 'master' of https://github.com/nchintada/final-project i…
bnklaiman Oct 15, 2020
56415da
Add groupId to Task schema.
lbodwell Oct 15, 2020
bf6a759
Merge branch 'luke-dev' of https://github.com/nchintada/final-project…
lbodwell Oct 15, 2020
e9225bd
Merge pull request #7 from nchintada/luke-dev
lbodwell Oct 15, 2020
d3c4b79
Merge branch 'master' of https://github.com/nchintada/final-project i…
bnklaiman Oct 15, 2020
398dab6
Merge branch 'master' into nikhil-dev
nchintada Oct 16, 2020
38dab0b
Starting to set up Task API functionality
nchintada Oct 16, 2020
49f418c
Forgot this
nchintada Oct 16, 2020
beab282
Merging in task code from nikhil-dev
nchintada Oct 15, 2020
b941f83
Merge remote-tracking branch 'origin/rimsha-dev' into rimsha-dev
rkayastha98 Oct 16, 2020
863ad89
Added server code
nchintada Oct 16, 2020
325a9f0
Merge branch 'nikhil-dev' into rimsha-dev
rkayastha98 Oct 16, 2020
ccd3c33
Updated again because it apparently missed the packages
nchintada Oct 16, 2020
0b8bbdf
Everything should work now
nchintada Oct 16, 2020
5fd7db5
Commiting to test something
nchintada Oct 16, 2020
f499f84
Merge remote-tracking branch 'origin/rimsha-dev' into rimsha-dev
rkayastha98 Oct 16, 2020
329891f
Slowly getting stuff working
nchintada Oct 16, 2020
b263ce1
Merge branch 'nikhil-dev' into rimsha-dev
rkayastha98 Oct 16, 2020
f7bac4f
layout complete
rkayastha98 Oct 16, 2020
d5410d6
Have now successfully connected with API
nchintada Oct 16, 2020
5403ab4
Merge pull request #8 from nchintada/rimsha-dev
rkayastha98 Oct 16, 2020
ac24c37
Setup for API based task functions
nchintada Oct 16, 2020
3d3ae0a
Added the back button
nchintada Oct 16, 2020
12cf51e
Adding tasks works with API
nchintada Oct 16, 2020
9f52e0d
Displaying tasks works with API
nchintada Oct 16, 2020
975fb58
Adding and displaying added tasks works with API
nchintada Oct 16, 2020
31c08ef
Deleting tasks works with API
nchintada Oct 16, 2020
4665312
sidebar appears again, but hamburger button still doesn't expand sidebar
bnklaiman Oct 16, 2020
f705fd6
updated login page
bnklaiman Oct 16, 2020
d591d3b
the cards now align
bnklaiman Oct 16, 2020
e7fc3fd
layout complete
rkayastha98 Oct 16, 2020
002afbf
Editing Tasks works with API
nchintada Oct 16, 2020
016a6e3
layout complete
rkayastha98 Oct 16, 2020
5fe5ff5
lots of stuff
acdesveaux Oct 16, 2020
5a54224
Merge pull request #9 from nchintada/bnklaiman-dev
acdesveaux Oct 16, 2020
104af2a
Merge branch 'master' of https://github.com/nchintada/final-project i…
rkayastha98 Oct 16, 2020
dbb4ed9
Merge pull request #10 from nchintada/bnklaiman-login-styling
acdesveaux Oct 16, 2020
44a9617
Merge branch 'master' into adam-dev
acdesveaux Oct 16, 2020
b934ede
Merge branch 'nikhil-dev' into adam-dev
acdesveaux Oct 16, 2020
4f5fae0
fixed server
acdesveaux Oct 16, 2020
715726f
cleaned up login page
bnklaiman Oct 16, 2020
a8e6bce
Implement Google OAuth. Add invitation support to API. Various bug fi…
lbodwell Oct 16, 2020
03e44d8
Resolve merge conflicts.
lbodwell Oct 16, 2020
881ef75
Merge pull request #12 from nchintada/adam-dev
nchintada Oct 16, 2020
a7375fc
Add back parts of server.js lost in merge.
lbodwell Oct 16, 2020
88f6447
Actually add back everything lost in merge. Add functionality to logi…
lbodwell Oct 16, 2020
d45837b
Merge branch 'master' into luke-dev
nchintada Oct 16, 2020
0eb4e42
Merge pull request #13 from nchintada/luke-dev
nchintada Oct 16, 2020
b1982eb
Minor tweaks.
lbodwell Oct 16, 2020
68b0288
Resolve merge conflicts.
lbodwell Oct 16, 2020
fc4224c
Merge branch 'master' of https://github.com/nchintada/final-project i…
lbodwell Oct 16, 2020
a843a2b
Bug fixes.
lbodwell Oct 17, 2020
dd2211a
Merge pull request #14 from nchintada/luke-dev
lbodwell Oct 17, 2020
15034ef
added add group mini-form
bnklaiman Oct 17, 2020
7d97011
Task functionality is working again
nchintada Oct 17, 2020
87fa89f
Merge branch 'master' of https://github.com/nchintada/final-project
nchintada Oct 17, 2020
85a19b8
add group button
acdesveaux Oct 17, 2020
cadecc5
added accept/reject buttons to invites
bnklaiman Oct 17, 2020
e494fe6
Merge branch 'master' into adam-dev
acdesveaux Oct 17, 2020
a005ad0
Merge pull request #16 from nchintada/adam-dev
acdesveaux Oct 17, 2020
696b476
test
bnklaiman Oct 17, 2020
ac563f9
Added accept and reject invite buttons
bnklaiman Oct 17, 2020
4441b70
Merge pull request #17 from nchintada/bnklaiman-invite-accept
acdesveaux Oct 17, 2020
66a7c29
Merge pull request #11 from nchintada/rimsha-dev
nchintada Oct 17, 2020
97c5333
layout complete
rkayastha98 Oct 17, 2020
d185bae
Merge branch 'master' into rimsha-dev
nchintada Oct 17, 2020
f6897b2
Merge pull request #18 from nchintada/rimsha-dev
nchintada Oct 17, 2020
0938b81
Chat testing.
lbodwell Oct 17, 2020
ed083b3
improved chat window and delete button
bnklaiman Oct 17, 2020
aa25d10
Persistent chat functionality.
lbodwell Oct 17, 2020
0f94295
add group works
acdesveaux Oct 17, 2020
e031876
Merge branch 'master' into adam-dev
acdesveaux Oct 17, 2020
5baf79f
Merge pull request #19 from nchintada/bnklaiman-chat
acdesveaux Oct 17, 2020
0b3a5d5
Resolve merge conflicts.
lbodwell Oct 17, 2020
8da3760
Merge pull request #21 from nchintada/luke-dev
lbodwell Oct 17, 2020
4c6c041
Merge pull request #20 from nchintada/adam-dev
acdesveaux Oct 17, 2020
6eca197
Bug fix.
lbodwell Oct 17, 2020
f801cc8
Merge pull request #22 from nchintada/luke-dev
lbodwell Oct 17, 2020
a78419b
Have dropdown working and displaying properly
nchintada Oct 17, 2020
8399ecd
Now also shows up in the edit drop down
nchintada Oct 17, 2020
5fc2504
fixed chat window
bnklaiman Oct 17, 2020
804ca46
Fix bug with message routes.
lbodwell Oct 17, 2020
32bd9af
Update README.md
rkayastha98 Oct 17, 2020
8760553
Merge branch 'master' of https://github.com/nchintada/final-project i…
bnklaiman Oct 17, 2020
47ee41b
Add invitations route.
lbodwell Oct 17, 2020
7445ce6
Merge pull request #23 from rkayastha98/master
acdesveaux Oct 17, 2020
d9d784e
Merge branch 'master' of https://github.com/nchintada/final-project i…
bnklaiman Oct 17, 2020
97e8f4b
Merge pull request #24 from nchintada/luke-dev
acdesveaux Oct 17, 2020
02d0a45
Merge branch 'master' of https://github.com/nchintada/final-project i…
bnklaiman Oct 17, 2020
4bcc7b0
Chat testing.
lbodwell Oct 17, 2020
6b5cf5c
More fixes.
lbodwell Oct 17, 2020
edcc9d5
CSS tweaks.
lbodwell Oct 17, 2020
523be91
Merge branch 'master' of https://github.com/nchintada/final-project i…
lbodwell Oct 17, 2020
b6b0d54
Transferring group name between pages works
nchintada Oct 17, 2020
0a50d99
Delete buttons get added for each column
nchintada Oct 17, 2020
aa08e38
Fix order of chat.
lbodwell Oct 17, 2020
d56e4d1
Merge pull request #25 from nchintada/luke-dev
lbodwell Oct 17, 2020
8c6f99c
Merge branch 'master' of https://github.com/nchintada/final-project i…
bnklaiman Oct 17, 2020
42fc504
added padding
bnklaiman Oct 17, 2020
b444a25
Deleting columns back to original functionality
nchintada Oct 17, 2020
260c5ec
Merge remote-tracking branch 'origin' into bnklaiman-chat-window
lbodwell Oct 17, 2020
1bd45b3
Resolve merge conflicts.
lbodwell Oct 17, 2020
192b619
Resolve merge conflicts.
lbodwell Oct 17, 2020
4704e90
Merge pull request #26 from nchintada/bnklaiman-chat-window
lbodwell Oct 17, 2020
f973787
Merge branch 'master' into nikhil-dev
nchintada Oct 17, 2020
ec5eec6
Header changes based on group name
nchintada Oct 17, 2020
68547c5
Merge branch 'master' into nikhil-dev
lbodwell Oct 17, 2020
69da0b8
Merge pull request #27 from nchintada/nikhil-dev
lbodwell Oct 17, 2020
a089e10
Display for edit is also working now
nchintada Oct 17, 2020
62f1890
Merge branch 'nikhil-dev' of https://github.com/nchintada/final-proje…
nchintada Oct 17, 2020
9b48bc3
styled and improved chat text
bnklaiman Oct 17, 2020
018adbd
Update README.md
nchintada Oct 17, 2020
3e2804f
Merge pull request #28 from nchintada/nikhil-dev
nchintada Oct 17, 2020
78c82bc
Add route for all users.
lbodwell Oct 17, 2020
c9b14ab
Merge pull request #29 from nchintada/luke-dev
lbodwell Oct 17, 2020
f9b9d8d
Fix comment.
lbodwell Oct 17, 2020
6801558
invite stuff not done
acdesveaux Oct 17, 2020
bab73d6
Merge branch 'master' into adam-dev
acdesveaux Oct 17, 2020
0ac28bf
Inviting to a group works
nchintada Oct 17, 2020
ed0260a
Minor tweaks.
lbodwell Oct 17, 2020
f718530
Merge pull request #30 from nchintada/luke-dev
lbodwell Oct 17, 2020
278497d
receiving invites works
acdesveaux Oct 17, 2020
e2a69ff
Merge branch 'master' into adam-dev
acdesveaux Oct 17, 2020
e5aa18d
Merge pull request #31 from nchintada/adam-dev
acdesveaux Oct 17, 2020
b789560
Idk whats going on
nchintada Oct 17, 2020
ea143c7
Merge branch 'master' of https://github.com/nchintada/final-project
nchintada Oct 17, 2020
5f6df44
Set callbacks for prod.
lbodwell Oct 17, 2020
843fcde
Update README.md
nchintada Oct 17, 2020
df1268a
Fix date bug.
lbodwell Oct 17, 2020
a6e3b90
Video link
nchintada Oct 17, 2020
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
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
*.DS_Store
node_modules/
.history/
package-lock.json
.env
public/js/moment.js
public/js/moment.min.js
82 changes: 38 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,56 +1,50 @@
# cs4241-FinalProject
# cs4241-FinalProject:Taskinator

For your final project, you'll implement a course project that exhibits your mastery of the course materials.
This project should provide an opportunity to be creative and to pursue individual research and learning.
README

## General description
Project Description
==========================
https://webware-team19-final.herokuapp.com/login

Your project should consist of a complete Web application, exhibiting facets of the three main sections of the course material:
Taskinator is a website that allows users to keep track of their tasks for a project. This website provides a simplistic yet useful interface to allow users to create groups, add team members to the groups, and assign tasks to each member. Hence, it specifically targets people who are working on a team project and need an organizational tool.

- 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 (TypeScript is also allowed if your group wants to explore it).
- Server-side programming *using Node.js*. Typically this will take the form of some sort of persistent data, authentication, and possibly server-side computation. Ideally it will also include support for realtime commmunication as discussed below.
- Groups are *highly encouraged* to consider including some type of realtime communication technology in their projects (chat, networked multiplayer games, collaborative coding/editing, video/audio via WebRTC etc.) We'll be discussing many of these technologies in class next week.
- A video (less than five minutes) where each group member explains some aspect of the project. An easy way to produce this video is for you all the groups members to join a Zoom call that is recorded; each member can share their screen when they discuss the project or one member can "drive" the interface while other members narrate (this second option will probably work better.) The video should be posted on YouTube or some other accessible video hosting service.
The website consists of three pages: a login page, a home page, and a task page. Logging in leads the users to the home page where they can see what groups they are a part of, or create new groups. The homepage also shows a list of tasks that are approaching their deadline or that are overdue. Clicking on each group leads to a task page corresponding to that group. Each task page allows the user to add lists of tasks where different lists can pertain to different categories of task. On this page, the user can also invite other team members. Additionally, the task page has a chat feature that allows real-time communication for the team members, making it easier for them to discuss their project as they organize their tasks.

## 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.
Additional Instructions
========================

## Logistics
Taskinator requires the users to have a GitHub or a Google account to login with.

### Team size
Students are will work in teams of 3-5 students for the project; teams of two can be approved with the permission of the instructor. Working in teams will allow you to build a good project in a limited amount of time.
Utilized Technologies
======================
- Materialize Framework
We used Google's Materialize framework to stylize the entire website and better the functionalities of the html elements.
- Javascript
- Node.js
We used Node.js for server-side programming.
- MongoDB for Server + Mongoose
We used a combination of MongoDB and Mongoose to ensure persistence of data for each user.
- OAuth Authentication (from multiple services Google, GitHub)
We used Google and GitHub OAuth Authentications to have the users log into the website.
- Socket io
We used Socket io for the live chat feature on the task page.
- Moment.js
We used Moment.js to handle due dates of each task.

### Deliverables
Challenges Faced
=====================
An expected challenge we faced was deciding on the most appropriate technologies for this project. Along the same lines, it was also a bit difficult to make sure we found a good balance between having this website do all we desired while also meeting the requirements of the assignment. Implementing our back-end API in conjuction with our front-end code took longer than expected. Additionally the number of features we were adding and items we were keeping track of/sending data between added a growing level of complexity as we worked, drawing out or development time with testing and debugging. The chat functionality took time to implement particularly with keeping the messages displayed in the correct order. Additionally we didn't have enough time to schedule regular meetings during finals week as a team but were able to use Microsoft Teams for effective communication.

__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, 11:59 PM
Member Responsibilities
=======================
- Benny: Front-end, page layout and styling home and login page + chat styling
- Luke: Back-end, databases and authentication + chat-based functionality (socket.io)
- Nikhil: Front-end, Javascript for task-list functionality, group invites
- Rimsha: Front-end, task page layout and styling
- Adam: Front-end, Javascript for home page functionality and group invite handling

There are no other scheduled checkpoints for your project.
Project video
===============
https://youtu.be/fCMFh9jnc3g

#### Turning in Your Outline / Project

**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.
6. A link to your project video.

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%.

## FAQs

- **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. Your client-side language should be either JavaScript or TypeScript.
49 changes: 49 additions & 0 deletions config/passport-config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
const passport = require("passport");
const GitHubStrategy = require("passport-github2").Strategy;
const GoogleStrategy = require("passport-google-oauth2").Strategy;

const setupPassport = () => {
const GITHUB_CLIENT_ID = process.env.GITHUB_CLIENT_ID;
const GITHUB_CLIENT_SECRET = process.env.GITHUB_CLIENT_SECRET;
const GOOGLE_CLIENT_ID = process.env.GOOGLE_CLIENT_ID;
const GOOGLE_CLIENT_SECRET = process.env.GOOGLE_CLIENT_SECRET;

passport.serializeUser((user, done) => done(null, user));
passport.deserializeUser((obj, done) => done(null, obj));

passport.use(new GitHubStrategy({
clientID: GITHUB_CLIENT_ID,
clientSecret: GITHUB_CLIENT_SECRET,
callbackURL: "https://webware-team19-final.herokuapp.com/auth/github/callback"
}, (accessToken, refreshToken, profile, done) => process.nextTick(() => {
done(null, profile);
})));

passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: "https://webware-team19-final.herokuapp.com/auth/google/callback"
}, (accessToken, refreshToken, profile, done) => process.nextTick(() => {
done(null, profile);
})));
};

const ensureAuthenticated = (req, res, next) => {
if (req.isAuthenticated()) {
return next();
}
res.status(401).redirect("/login");
};

const getUsername = req => {
if (req.isAuthenticated()) {
if (req.user.username) {
return req.user.username;
} else if (req.user.provider === "google") {
return req.user.name.givenName.toLowerCase() + req.user.name.familyName.toLowerCase();
}
}
return undefined;
};

module.exports = {setupPassport, ensureAuthenticated, getUsername};
30 changes: 30 additions & 0 deletions models/Group.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// @author: Luke Bodwell
"use strict";

const mongoose = require("mongoose");

const Schema = mongoose.Schema;

const GroupSchema = new Schema({
name: {
type: String,
required: true
},
adminId: {
type: Schema.Types.ObjectId,
ref: "User",
required: true
},
members: {
type: [Schema.Types.ObjectId],
ref: "User",
required: true
},
invitees: {
type: [Schema.Types.ObjectId],
ref: "User",
required: true
}
});

module.exports = mongoose.model("Group", GroupSchema);
34 changes: 34 additions & 0 deletions models/Message.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// @author: Luke Bodwell
"use strict";

const mongoose = require("mongoose");

const Schema = mongoose.Schema;

const MessageSchema = new Schema({
groupId: {
type: Schema.Types.ObjectId,
ref: "Group",
required: true
},
senderId: {
type: Schema.Types.ObjectId,
ref: "User",
required: true
},
content: {
type: String,
required: true
},
edited: {
type: Boolean,
required: true
},
dateSent: {
type: Date,
required: true,
default: Date.now
}
});

module.exports = mongoose.model("Message", MessageSchema);
47 changes: 47 additions & 0 deletions models/Task.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// @author: Luke Bodwell
"use strict";

const mongoose = require("mongoose");

const Schema = mongoose.Schema;

const TaskSchema = new Schema({
name: {
type: String,
required: true
},
desc: {
type: String,
required: false
},
groupId: {
type: Schema.Types.ObjectId,
ref: "Group",
required: true
},
columnName: {
type: String,
required: true
},
assignees: {
type: String, //[Schema.Types.ObjectId],
ref: "User",
required: false
},
tags: {
type: [String],
required: false
},
dateDue: {
//Changed this to string, @Luke change it back to date
type: Date,
required: false
},
dateCreated: {
type: Date,
required: true,
default: Date.now
}
});

module.exports = mongoose.model("Task", TaskSchema);
19 changes: 19 additions & 0 deletions models/User.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// @author: Luke Bodwell
"use strict";

const mongoose = require("mongoose");

const Schema = mongoose.Schema;

const UserSchema = new Schema({
username: {
type: String,
required: true
},
displayName: {
type: String,
required: true
}
});

module.exports = mongoose.model("User", UserSchema);
45 changes: 45 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"name": "final-project",
"version": "1.0.0",
"description": "For your final project, you'll implement a course project that exhibits your mastery of the course materials. \r This project should provide an opportunity to be creative and to pursue individual research and learning.",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js",
"dev": "cross-env NODE_ENV=development nodemon server.js",
"prod": "cross-env NODE_ENV=production node server.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/nchintada/final-project.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/nchintada/final-project/issues"
},
"homepage": "https://github.com/nchintada/final-project#readme",
"devDependencies": {
"cross-env": "^7.0.2",
"nodemon": "^2.0.4"
},
"dependencies": {
"body-parser": "^1.19.0",
"compression": "^1.7.4",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"express-session": "^1.17.1",
"helmet": "^4.1.1",
"materialize-css": "^1.0.0",
"method-override": "^3.0.0",
"moment": "^2.29.1",
"mongodb": "^3.6.2",
"mongoose": "^5.10.8",
"morgan": "^1.10.0",
"passport": "^0.4.1",
"passport-github2": "^0.1.12",
"passport-google-oauth2": "^0.2.0",
"socket.io": "^2.3.0"
}
}
37 changes: 37 additions & 0 deletions proposal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Webware Team 19

# Team Members:
- Nikhil Chintada
- Luke Bodwell
- Rimsha Kayastha
- Adam Desveaux
- Benny Klaiman

# Project Description:
A website designed for teams to collaborate in planning tasks. The website will have a login page which allows users to create an account tied to an existing service.
There will be a home page where the user can see what groups they are a part of and make a new group. Once a group is made they can invite users by entering their username.
The homepage will also have a list of tasks approaching their deadline or that are overdue.
Once the user is part of a group they can click the group and go to their group's page which will contain a list of tasks (multi-column format).
This list of tasks can be added to, modified and items can be deleted or marked completed.
The tasks will have a name, due date, task type and assigned user(s) in which either the team or a user or group of users can be assigned a task.
This page will also have a live chat window in which team members can speak to one another.

# Demographics
Users: Anyone who is trying to complete a group project (small to medium sized groups).
Stakeholders: Our users.

# Technical Specifications:
- HTML + CSS Using a framework
- Javascript
- Node.js
- MongoDB for Server + Mongoose
- OAuth Authentication (from multiple services Google, GitHub)
- Live chat feature (Socket io)
- Moment.js for dealing with due dates

# Team Assignments:
- Benny: Front-end, page layout and styling
- Luke: Back-end, databases and authentication + socket.io
- Nikhil: Front-end, Javascript for authentication, task-list, group selection
- Rimsha: Front-end, page layout and styling
- Adam: Chat-based functionality (socket.io)
Loading