Creating customized resumes are hard and annoying.

What it does

A wizard like interface that takes in user-information and generates a PDF resume.

How we built it

The frontend is built using ReactJS and is bootstrapped using create-react-app. State management is achieved using Context API provided by React. It helps to maintain a global state which we utilize throughout the application.

To create the resume in a step-by-step manner, we use the react-albus library. This provides the user with a wizard like experience. Apart from this, it also supports dynamic routing.

To generate a PDF file, we need server side processing. We chose NodeJS and ExpressJS for their speed, stability, and ease of integration with ReactJS. This allows us to offer a seamless application experience.

Our focus, to style the application, was on speed along with beautiful default options. We chose styled-compnents and TailwindCSS. styled-components allowed us to re-use a lot of code while TailwindCSS helped us to iterate faster over our designs. We use Twin.macro to get the best of both worlds.

API calls are managed using axios which makes it easy to send asynchronous HTTP requests to REST endpoints and perform CRUD operations. React-toastify is used to display success/error messages to the user.

Challenges we ran into

Challenges around how to deal with a global state (Context vs Redux). We chose Context for it's ease of implementation. Reconciling the data sent from the frontend versus what the backend was expecting.

Accomplishments that we're proud of

Developed a responsive web-application in a very short a period of time that functions well despite many moving parts, incorporates a sponsor library, and actually looks good!

What we learned

More peer-programming sessions are always better.

What's next for Resume Generator

  • Allow users to save the information and edit the resume later.
  • Make every step customizable, allow users to add dynamic fields.
  • Support multiple/customize resume templates.

Built With

Share this project: