/SurveyApe

Survey Application

Primary LanguageJavaScript

SurveyApe

Team project for Graduate software engineering course Enterprise Application Development.

Goal

  • The goal is to build a distributed enterprise web application which enables the user to become surveyor and surveyee. User can login and create surveys as a surveyor and ask others to provide their response. Surveyee does not have to be registered to participate in survey and can provide survey response.

  • We were tasked with this project requirement so that we can learn and develop REST API enterprise application.

Introduction

  • User can be surveyee and surveyor
  • 3 types of survey in terms of their accessibility:
    • General: Accessible by anyone
    • Open: Accessible by invited user
    • Closed: Accessible by invited and registered user only
  • Applications supports following questions types in survey:
    • Multiple choice questions
      • Choice type
        • Text only: all choices are given as text.
        • Image only: every choice is given as an image.
      • Answer type:
        • Dropdownlist (Single selection only)
        • Radio button (Single selection only)
        • Checkbox (Single & multiple selection)
    • Yes/no questions.
    • Short answer questions, where the answer is plain text.
    • Date/time questions, which allow the surveyee to pick a Date and/or Time as the answer
    • Star rating questions, which allow surveyees to rank a variable using 0-5 stars
  • Surveyor can visualize statistics of survey for each question in dashboard
  • Surveyor can export created survey and import multiple questions from any survey

High Level Architecture

Technology stack


Area Technology
Front-End React, Redux, React Router, Bootstrap, HTML5, CSS3, Javascript ( ES6 )
Analytics Graphs chart.js
Back-End Spring Boot (Hibernate, JPA, AOP), Java
API Testing JUnit, Postman
Database MySQL (AWS RDS)
Image File Storage AWS S3 Bucket
Deployment AWS EC2

Database

Database design and the data was critical for the project so To maintain consistency within team we deployed our database on AWS RDS (MySQL).

Screenshots

Login/Signup

Email Account Verification Email

User Dashboard

Create Survey

Survey Builder

Export Survey

Exported file JSON data

Import Survey

Before Import Survey

After Import Survey

Invite Users for participating in Survey

Participation Link with QR Code for different type of surveys

General Survey

Open Survey

Closed Survey

Survey Response Page for Survey participant

Readonly Survey Response for submitted response

Survey Statistics Dashboard

Statistics for Question Types (Checkbox, Radio, Dropbox, YESNO, Rating)

Statistics for Question Types (Short Answers, DateTime)

Docker Deployment Steps

MySQL

docker run -d -p 6603:3306 --name=docker-mysql --env="MYSQL_ROOT_PASSWORD=username" --env="MYSQL_PASSWORD=password" --env="MYSQL_DATABASE=dbname" mysql

SpringBoot Server

Build

docker build -f Dockerfile -t surveyape-server:1.0.2 .

Run

docker run -t --name surveyape-server --link docker-mysql:mysql -p 8080:8080 surveyape-server:1.0.2

React Client

Build

docker build -f Dockerfile -t surveyape-client:1.0.0 .

Run

docker run -t --name surveyape-client --link surveyape-server:surveyape-server -p 3000:3000 surveyape-client:1.0.0

Team Members

  • Arijit Mandal
  • Rutvik Pensionwar
  • Sannisth Soni
  • Varun Shah