Skip to content

aelsammak/Mini-SurveyMonkey-BackEnd

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SYSC4806-Project - Mini-SurveyMonkey

Build Status

Project Description:

Surveyor can create a survey with a list of Questions. Questions can be open-ended (text), asking for a number within a range, or asking to choose among many options. Users fill out a survey that is a form generated based on the type of questions in the survey. Surveyor can close the survey whenever they want (thus not letting in new users to fill out the survey), and at that point a survey result is generated, compiling the answers: for open-ended questions, the answers are just listed as-is, for number questions a histogram of the answers is generated, for choice questions a pie chart is generated

Team Members:

  • Adi El Sammak
  • Astrid MacKinnon
  • Daniel Innes
  • Erik Iuhas
  • Marianne Brissette

Important Links:

Front-End Deployment: https://sysc4806.brotherwolf.ca/
Back-End Deployment: https://sysc4806-survey-monkey.herokuapp.com/
Front-End Repo: https://github.com/Daniel-W-Innes/SYSC4806-Project-Frontend
Back-End Repo: https://github.com/Daniel-W-Innes/SYSC4806-Project-Backend

Deliverable 3:

Application is now fully functional and deployed. Every use case was implemented. The back-end of the application is hosted on TravisCI and deployed on Heroku. To develop the application, we are using the framework Spring Boot on the back end and React Static for the front end.

Model

In this application, we consider that to create surveys, a user must have an account. When the user creates an account, the user becomes a Surveyor and can create Survey objects. To fill surveys, users do not need accounts, they will be considered as a Respondent, but will remain anonymous. Surveys are composed of a list of Question objects. The most basic type of questions is long answer question. These are modeled with the TextAnswerable class. MultipleChoiceQuestion are questions where the user must pick an option from a list. These can also be used for True or False questions. NumberQuestion are questions where the user is asked to pick a number in a range. When users fill surveys, we create Answer objects to record their answers. Answers are associated with one particular Question and Survey. TextAnswer are used for long answer questions and multiple choice questions. NumberAnswer are used for number questions. Note that one Question has as many Answer associated to it as the number of people who answer the question.

ModelUML

Database

The database structure is very similar to the structure of the model classes. We are using a PostgreSQL database hosted on Heroku. One-to-many relationships are modelled with foreign keys and inheritance is modelled with joined tables.

DatabaseSchema

Use Case 1: Authentication

This is the use case that allows a surveyor to log in to the application and manage their surveys. The surveyor can create an account or log in as an existing user. Once they are logged in, surveyors can view the list of their own surveys, or create a new survey. In the next milestone, we will add the option to view statistics about the collected answers to surveys.

SignUp LogIn

Use Case 2: Display list of surveys

Take the list of surveys that were created by a specific surveyor and to display it. The survey names and IDs are stored in the database (back-end) and we format this data into an HTML table before displaying it. We can click the "CHECK RESULTS" button to get to use case 5.

ListOfSurveys

Use Case 3: Create a survey

In this use case, the user can create a new survey and save it to the database. The user needs to specify the name of the survey and the list of questions. Once the survey was successfully created, we provide the surveyor with the survey ID. The ID can be shared to respondents so they can answer the survey.

CreateSurvey

Use Case 4: Answer a survey

In this use case, a respondent can enter a survey ID in the input box on the upper left corner of the page and answer the survey with this ID. We fetch the survey ID from the URL and we use the ID to fetch the survey questions from the database. The questions are displayed and the user can answer them. The answers are stored in the state of the application (through React) and when the user clicks "SUBMIT SURVEY", the answers are saved into the database.

AnswerSurvey

Use Case 5: Display survey results

In this use case, the surveyor can view the answers to a survey that they created. To see the answers, the user has to look at their list of survey (use case 2) and select the specific survey. Answers to long answer questions are presented as a list. Multiple choice answers are presented with pie charts, and number answers are presented with histograms. Anyone can answer a survey, but only the surveyor who created the survey can view its answers.

DisplayResults1 DisplayResults2

About

Mini Survey Monkey web app backend using Spring

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%