Let's get into it, what is reswork ? Reswork is a side project I've been working on it's a LaTex style resume builder, that gives you the ease of quickly editing and managing your resume.
Why am I building this?
We all know the stress and pain of trying to update our resumes. Dealing with Word documents, importing weird PDF templates from random corners of the internet, and still ending up with a resume that gets tossed out by ATS checkers is frustrating.
You might ask, why not just use an existing builder? Well, if I did, it wouldn't be my own! Jokes aside, the LaTeX resume builder I usually use has had a persistent bug for a while where long sentences won't wrap properly. They just keep going until they run off the screen, completely ignoring the margins. Itβs incredibly annoying. On top of that, it lacks any built-in AI features to actually help streamline the writing process.
Tech Stack
A lot of the decisions I made were in the thoughts that I wouldn't increase the complexity of this project but alas I decided to run with the project and now I regret some of those choices ( every one has been here )
React.js + Tanstack Router: I chose this combination because it offered a lightweight, client-side routing solution without the heavy overhead or boilerplate of other frameworks. It allowed me to spin up the application quickly without worrying about complex framework configurations. In hindsight: As the project evolves, I will likely migrate to TanStack Start. Having access to Server Actions and Server-Side Rendering (SSR) would drastically improve performance and simplify data handling for certain aspects of the app.
Typescript: Well typescript is the lords language, this is my default choice for all projects cause it allows for errors that might have gone unnoticed to be caught before the code leaves our editor and it increases the overall ergonomics of building out applications.
React-pdf: I used react-pdf for building out the template documents and generating the completed pdf blob. I choose this cause it was a mature library already and it provided support for the main thing I needed ( Templates ) component-driven document rendering.
Dexie.js ( IndexeDB ): Reswork is designed to be offline-first. To store resumes directly in the browser, I chose IndexedDB as it is far better at handling more complex data than localstore. However, working with the native browser API can be very frustrating, so I used Dexie.js as a wrapper which provides a clean interface with said api.
Convex: I made use of Convex for online and cloud syncing of data, it gave me access to a pesduo realtime data store, and removed the hassle of me coding out my own data sync engine.
Better-auth: To complement Convex, I integrated Better Auth to handle my authentication removing the hassle of rolling out my own authentication in favor of a ready made and mature solution that saved me time and will continue to save me time in the future if I decide to add more authentication options.
@google/genai: For the AI features, I chose the Google Gen AI SDK utilizing Gemini. It was the perfect fit for a side project, giving me access to powerful language models without costing me an arm.
Top comments (0)