NodeJS
is used for building Backend part of this Website.MongoDB
used for Database to store data.ExpressJS
is used as Backend Framework.Materialize-CSS
is used for CSS Framework and the website is Responsive for all Devices.ChartJS
is used for Charting the responses and Data.
PassportJS
is used for Authentication purpose.- Two types of Strategy is used in this Website. (viz. [Local Strategy] and [Google oAuth Strategy]).
- User can Register via
Google
or by submittingEmail
andPassword
as Standard Login.
- Only logged in user can create a Survey.
- Completely newly created
Survey
will have no question on it initially - Only Survey owner can added question to Survey.
- Only survey owner can view the analysis of his survey.
- Only those surveys show on
Public Surveys
section which has atleastone
question. - In
My Surveys
section an user can view all of his surveys. - There have total 7 types of feedback Question (eg. Multiple Choice, Yes/No, slider, Select Many, Like-Dislike, Emoji Feedback, Star Rating etc. and also has a
Comment Box
feature.) - In User
Dashboard
, an user canDelete
,Update
andAdd Question
to a Survey.
ChartJS
is used for charting the Data got from Responses of a Survey.- Two types of Chart is used. One is
Bar Chart
and another isDoughtnut
. - Easily Understandable to all users.
- Encrypt passwords with
bcrypt
- Prevent cross site scripting -
XSS
usingxss-clean
. - Prevent NoSQL injections using
express-mongo-sanitize
. - Add a rate limit for requests of 50 requests per 10 minutes using
express-rate-limit
. - Protect against http param polution using
hpp
. - Add headers for security using
helmet
. - Use
CORS
to make API public.
- Prerequisites
- NodeJS installed on your machine
- MongoDB installed on your local machine or have an Atlas Account.
- Google API keys for Google OAuth-Authentication
- Credentials Setup
- Project Setup
- Clone this Repository or Download the zip File.
>> git clone https://github.com/nil1729/poll-app
- On root directory create file named
.env
& put all secret Credentials. (In following Format)GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= MONGO_URI= SESSION_SECRET= PORT= HOST_DOMAIN=
- Clone this Repository or Download the zip File.
Made With ❤ by Nilanjan Deb