This project is a fullstack coding challenge which consumes locations and health plans APIs and has a simple login system with password change and account deletion.
Demo: https://health-plan-listing.onrender.com/ (it might take a while to wake up the hosting service)
- Public code hosted on Github/Gitlab
- Demo hosted on Heroku or Netlify
- Frontend JS Framework (preferably Vue.js)
- Any CSS Framework can be used
- Users registration with name, email and password
- Two equal emails can't be registered
- Authentication and Authorization
- Made in NodeJS and with MongoDB/Redis/Neo4j
- CRUD
- States and cities using external API
- JWT Authentication
- Atomic Design for components structure
- Continuous Deploy with
Github Actions to HerokuRender.com
- Clone this repository
- Run
yarn
ornpm install
- Run
yarn dev:server
andyarn dev:client
(or withnpm run <command>
)
I really like to be proud of my codes and this requires lots of refactoring. I surely could deliver this project sooner, however the code quality would be compromised. The way it is, it's good, but there are lot room for code improvements such as moving some server/index.js functions to other files and refactoring some API Calls in PlansForm.vue, for example.
Would be cool to improve several components props validation and password complexity.
Also, login error and API loading feedbacks could be more dynamic and responsive.
I'm not that good with interface design, so I avoided making more than one page (and therefore Vue Routes) and didn't use CSS Frameworks (altough by the end of the project, using one would make things easier to adjust)
At first a state manager such as VueX didn't seemed to be necessary, as event emitting and listening sounded good enough, but after implementing user login it started to be tempting.
Login is not saved between page refreshes and token is not expired on logout, so yeah, there's room to improve this application
- Since this application is hosted on HTTPS, the provided HTTP apis wouldn't work, so I've looked up and found the same API but on HTTPS.