Giter Site home page Giter Site logo

nil1729 / poll-app Goto Github PK

View Code? Open in Web Editor NEW
6.0 0.0 6.0 6 MB

The Survey Creator App with auto deployment setup

Home Page: https://poll-app.projects.nilanjan.tech

JavaScript 27.98% CSS 8.61% EJS 63.26% Dockerfile 0.15%
chartjs mongodb share materializecss passport oauth2-authentication config method-override bcrypt hacktoberfest

poll-app's Introduction

Survey Creator App

  • This site is live here.

  • Github Repository link.


Features of the Project

  • Frameworks or Languages:

  1. NodeJS is used for building Backend part of this Website.
  2. MongoDB used for Database to store data.
  3. ExpressJS is used as Backend Framework.
  4. Materialize-CSS is used for CSS Framework and the website is Responsive for all Devices.
  5. ChartJS is used for Charting the responses and Data.

  • Authentication for Users:

  1. PassportJS is used for Authentication purpose.
  2. Two types of Strategy is used in this Website. (viz. [Local Strategy] and [Google oAuth Strategy]).
  3. User can Register via Google or by submitting Email and Password as Standard Login.

  • Survey Create and Manage:

  1. Only logged in user can create a Survey.
  2. Completely newly created Survey will have no question on it initially
  3. Only Survey owner can added question to Survey.
  4. Only survey owner can view the analysis of his survey.
  5. Only those surveys show on Public Surveys section which has atleast one question.
  6. In My Surveys section an user can view all of his surveys.
  7. 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.)
  8. In User Dashboard, an user can Delete , Update and Add Question to a Survey.

  • Analysis of Survey

  1. ChartJS is used for charting the Data got from Responses of a Survey.
  2. Two types of Chart is used. One is Bar Chart and another is Doughtnut.
  3. Easily Understandable to all users.

  • Security

  1. Encrypt passwords with bcrypt
  2. Prevent cross site scripting - XSS using xss-clean.
  3. Prevent NoSQL injections using express-mongo-sanitize.
  4. Add a rate limit for requests of 50 requests per 10 minutes using express-rate-limit.
  5. Protect against http param polution using hpp.
  6. Add headers for security using helmet.
  7. Use CORS to make API public.

Run this Project on Local Environment.

  1. Prerequisites
    1. NodeJS installed on your machine
    2. MongoDB installed on your local machine or have an Atlas Account.
    3. Google API keys for Google OAuth-Authentication
  2. Credentials Setup
    1. Create a MongoDB Atlas Account for Host this Project Online. Find Tutorials here.
    2. Setup and Enable Google API keys for OAuth. Find Tutorials here
  3. Project Setup
    1. Clone this Repository or Download the zip File.
       >> git clone https://github.com/nil1729/poll-app
      
    2. 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=
      

Website Preview

  • Home Page ( Describe the features )

  • Login and Resgister Page ( For Authenticating Users ).

  • Public Surveys Page ( Show all surveys which atleast have one Question ).

  • My Surveys Page ( Show all of your Surveys either it has atlest one Question or not ).

  • Dashboard ( User can manage all CRUD operation here in one single page).

  • Add Question Page ( Add Question to a particular Survey ).

  • Preview and Response Page ( Show the particular survey with all of its Questions ).

  • Analysis Page ( Show analysis of responses and Charts for a particular Survey ).


Made With โค by Nilanjan Deb

poll-app's People

Contributors

jacklagare avatar nil1729 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

poll-app's Issues

Create a template file for the configuration

To guide users, it would be beneficial to have a template file in config/ that can be used as a reference in creating the configuration files. Maybe something like config_template.json.

Create a Getting Started section in README.md

It would be useful for a Getting Started section to be included in the README.md so that users may be guided on how to run the application. Information such as configuration parameters necessary would be very beneficial.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.