A full stack project with React and Node. It has been deployed here: https://vast-garden-42186.herokuapp.com/.
This is a feedback collection application for startup owners. If you are a startup owner and you want some feedback from your customers, you can use this application to send emails requesting feedback and get tabulation of results. Your app/service can be better with valuable feedbacks!
Here is the app user flow:
- User signs up via Google OAuth
- User pays for email credits via Stripe
- User creates a new 'campaign'
- User enters a list of emails to send survey to
- We send email to list of surveyees
- Surveyees click on link in email to provide feedback
- We tabulate feedback
- User can see report of all survey responses
Main tech for main steps (some smaller libraries not included):
- User Signup: Express Server + MongoDB + PassportJS
- User Payment: Stripe + MongoDB
- User Create Survey: React + Redux
- User Enter Emails: React + Redux + Redux Form
- We Send Emails: Email Provider (SendGrid)
- Surveyees Click Links: SendGrid + Express + MongoDB
The detailed list of development notes can be viewed here.
Part I. Server Side Architecture
- Relationship Between Node & Express
- Generating Our First Express App
- Express Route Hanlders
- How to Deploy the Application
Part II. Authentication with Google OAuth
- Intro to Google OAuth
- Passport JS
- Testing OAuth
- Access and Refresh Tokens
- Nodemon Setup
- Appendix
Part III. Adding MongoDB
- Server Structure Refactor
- Sign In Users with OAuth
- MongoDB Setup
- Working with Mongoose
- Finishing up with Authentication
Part IV. Dev vs Prod Environments
- Dev vs Prod Keys
- Determining Environment
- Heroku Env Variables
- Fixing Heroku Proxy Issues
Part V. Moving to the Client Side
- React App Generation
- Running the Client and Server
- Routing Stumbling Block
- Why This Architecture (Optional)
Part VI. Developing the Client Side - I
- Async/Await Syntax
- Client Setup
- Why We Care About Auth
Part VII. Developing the Client Side - II
- React Router Setup
- Header Component Implementation
- Communication between React and Server
- After Logged In
Part VIII. Handling Payments
- Client Side Billing
- Sever Side Billing
- After Charging the User
- Express with Create-React-App in Production
- Routing in Production
- Deployment Options
- Adding in a Heroku Build Step
Part X. Mongoose for Survey Creation
- Intro to Survey
- Database Setup for Surveys
- Back End Setup for Surveys
- Sending Emails
Part XI. Client Side Surveys - I
- Survey Introduction
- New Survey Form
Part XII. Client Side Surveys - II
- Form Validation
- Form Review Page
- Submitting Form
Part XIII. Handling Webhook Data
- Feedback with Webhooks
- Server Side Setup for Survey Results
Part XIV. The Home Stretch
- Fetching a List of Surveys
- Displaying Surveys in the Front End