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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions Proposal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# cs4241-FinalProject-Proposal

## The Team
**Yicheng Yang** <yyang17@wpi.edu>

**James J. Scherick** <jjscherick@wpi.edu>

**Jean Claude Zarate** <jzarate@wpi.edu>

## Project Outline
The idea of our team is to create the 🔥🔥 ultimate 🔥🔥 final 💪 grade 💯 calculator 🧮 for students 👩‍🎓 🎉 (sorry we've spent too much time on product hunt). This calculator will store individual information for every user who uses it. These users can then list unlimited amount of classes, and then split the classes into and number of catagories (ie: tests, quizes, projects, etc.). They will then be able to say what precentage each catagory counts toward final grade. In each catagory, the user can list any amount of things that will be graded, say the maximum points that can be earned and how many points it will be out of (these are not the same due to some assignments giving extra credit). On the website, users can enter what grades they have and the website will tell them their current grade, maximum possible final grade, and minimum possible final grade. We will also do market research and learn of any other optional features that might be vital to a~~n addictive~~ good user experience. There will also be support for features like # number of lowest grades in a catagory droped, or if an assignment is purly extra credit that can be toggled as well.

We are also looking forward to create a nice looking webapp as a user interface for entering the information. In addition, we plan to create a simplistic marketing page to advertise the app.

For the frontend we will be using [Quasar Framework](https://quasar.dev), which is a Vue.js framework that enables the creation of Single Page Applications, Server Side Rendered webapps, and hybrid apps with a pre-configured and streamlined development and build process featuring tree shaking and hot module reloading, and comes with a suite of Material Design components.

For the backend we will be using an express http server with a JSON API, powered by MongoDB hosted in an mongo atlas instance.

Stretch Goals:
- Marketing website / landing page to promote our creation
- Hook up to an analytics service
- Add SMS reminders to add grades every week
- Add email reminders
- support offline session savings
60 changes: 23 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,37 @@
# cs4241-FinalProject
# cs4241-FinalProject- the 🔥🔥 Ultimate 🔥🔥 Final 💪 Grade 💯 Calculator 🧮

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.
[Try it now!](https://jcharante.com/your-final-grade)

## General description
![qr-code-200](https://user-images.githubusercontent.com/13973198/66542565-eb329980-eb00-11e9-9984-0c6c51c5b9f6.png)

Your project should consist of a complete Web application, exhibiting facets of the three main sections of the course material:
## The Team
**Yicheng Yang** <yyang17@wpi.edu>

- 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.
**James J. Scherick** <jjscherick@wpi.edu>

Additionally, you should incorporate features that you independently research, design, and implement for your project.
**Jean Claude Zarate** <jzarate@wpi.edu>

## Project ideation
## Project Introduction
For the final project, our group developed a final grade calculator. As a user, you can add your class grades and grading policy in it and it will tell you your current grade as well as the highest/lowest grades. The system supports several different grading policies such as dropping, extra credit, top worth more, etc. It will store individual information for every user who uses it. Users also have the option to use it offline only or synchronize online. Available in English和中文。

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.
## Instructions
As a user, you may want to create an account first. After that, you can login and create classes, categories and grades. There will be specific explanation next to each field. You also turn on/off Offline Only Mode or Sync Online in the bar on the left. You will also be able to see the logout button there.

## Logistics
## Technologies
There are three main components to our project. There is the calculator package, which is published on NPM as your-final-grade-calculator-public. This has no third party dependencies. Then there is the api service, which is a function that is made available by a local express server but is also invoked by sending an HTTP to its endpoint on Google Cloud Platform. The API service facilitates all communication with MongoDB. Then there is the client, which is a Single Page Application developed with Quasar Framework, which enables you to use Vue.js and its pre-configured build system and Material Design components.

### 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.
## Challenges
Basically, there are too many different grading policies. It is complicated to figure out the algorithm for each one and how to implement all of them at the same time.

### Deliverables
## Members' responsibility
**Jean Claude Zarate:** Helped coordinate the team and plan out objectives, did extensive work on the website, developed API server, liaison between the team that used the calculator and the team working on the calculator. Worked on collecting syllabuses and reading them to discover what features the calculator algorithm needed to support.

__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
**Yicheng Yang:** Contributed to the algorithm of the calculating system. Did the translation for the Chinese version of the website. Helped to write an explanation of each field that user need to fill.

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).
**James J. Scherick:** Critical contributor on the team developing the calculator algorithm.

#### Turning in Your Outline / Project
## Source Code

**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.
(Staff will use the proposal to build the grading sheet.)

## Final Presentation

Presentations will occur during the final day of class.

## 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.
- [Website](https://github.com/JCharante/your-final-grade-spa)
- [Calculator](https://github.com/JCharante/your-final-grade-calculator)
- [API Server](https://github.com/JCharante/your-final-grade-api)