Inspiration

I got tired of updating my portfolio every time I updated my website :)

What it does

There are three main components.

  1. Parser/Compiler/Language -- creates a representation of your resume that can easily be translated into whatever form is necessary

  2. API -- allows you to turn a .resume file into TypeScript and a LaTeX resume

  3. Frontend -- demo because it's a hackathon

How we built it

The frontend/demo relies on the API, which relies on the language.

The language was written as a PEG using pyparsing and templated into various formats using Jinja2.

The API was written with Flask. Compiling LaTeX to PDF was done with pdflatex.

The frontend was written in react with mantine as a styling library.

The API and frontend were dockerized, and hosted on DigitalOcean with docker compose.

Challenges we ran into

Learning the pyparsing library was kind of slow, but fun in the end.

Compiling LaTeX down into a PDF was actually incredibly annoying because pdflatex is very picky about the paths it accepts as input.

Accomplishments that we're proud of

Getting the language written relatively quickly was quite satisfying.

Writing everything alone was a fun challenge.

Overall, just making something cool was neat!

What we learned

Writing languages is fun.

Jinja2 exists for templating and saves a LOT of headache compared to doing it manually.

What's next for ResumeLang

Probably a really big nap. I've been writing/debugging code for around 20 hours straight at this point.

More formats to output. Maybe styled React/Angular components. Maybe even just raw JSON.

Extend the language to allow for other fields, like volunteer work or a bio.

More resume templates.

Built With

Share this project:

Updates