Fullstack Voting App Retrospective

Intro

The fullstack voting app is an app where the user can log in, create polls for others to vote on, vote on existing polls, and even delete polls that they created. It was my first full stack app where I created both a front end and a fully functioning CRUD backend. The front end is a series of static HTML/CSS pages that uses just vanilla JavaScript to make calls to the server.

The server is writeen in Node and uses Express as a middle layer and the database is MongoDB and uses Mongoose for a schema.

I had lots of issues just getting this project up off the ground. I relied upon this Coursera course a lot for understanding Node/Express and MongoDB/Mongoose. I also had tons of questions for other more experienced devs in my coding cohort.

Code Review

There are two things that I wish I'd done better in this project. The first is that I couldn't wrap my head around how to get an Angular SPA on the front end to build properly and still connect to the API endpoints. So that's something that I know I need to wrestle with.

The second is that the login/logout system is very elementary. I was so focused on trying to understand the basic architecture and getting everything working together that adding something like oAuth or JWT to the heap sounded awful. This is another path for future learning to explore.

Future Improvements

The two items above are the places where this app could really use some improvements. The front end isn't terrible, but it would look and feel better as an Angular app. A more robust authentication system would also be a big improvement. While adding that, it'd be nice to limit a user to voting on a single poll just one time. Right now, you can vote on the same poll as many times as you want, thus skewing the results.

  • Build the front end in Angular or Vue
  • Wrestle with oAuth or JWT to flesh out the authentication
  • Limit users to a single vote per poll