GithubHelp home page GithubHelp logo

jskherman / imprecv Goto Github PK

View Code? Open in Web Editor NEW
311.0 5.0 39.0 379 KB

A no-frills curriculum vitae (CV) template using Typst and YAML to version control CV data.

License: Apache License 2.0

Typst 97.78% Makefile 2.22%
cv pdf resume typst typst-template yaml cv-template resume-template

imprecv's Introduction

imprecv

Apache-2 License Apache-2 License Release

imprecv is a no-frills curriculum vitae (CV) template for Typst that uses a YAML file for data input in order to version control CV data easily.

This is based on the popular template on Reddit by u/SheetsGiggles and the recommendations of the r/EngineeringResumes wiki.

Demo

See example CV and @jskherman's CV:

Sample CV Page 1 Sample CV Page 2

Usage

This imprecv is intended to be used by importing the template's package entrypoint from a "content" file (see template.typ as an example). In this content file, call the functions which apply document styles, show CV components, and load CV data from a YAML file (see template.yml as an example). Inside the content file you can modify several style variables and even override existing function implementations to your own needs and preferences.

With the Typst CLI

The recommended usage with the Typst CLI is by running the command typst init @preview/imprecv:1.0.1 in your project directory. This will create a new Typst project with the imprecv template and the necessary files to get started. You can then run typst compile template.typ to compile your file to PDF.

Take a look at the example setup for ideas on how to get started. It includes a GitHub action workflow to compile the Typst files to PDF and upload it to Cloudflare R2.

From the Dashboard, select "Start from template", search and choose the imprecv template. From there, decide on a name for your project and click "Create". You can now edit the template files and preview the result on the right.

You can also click the Create project in app button in Typst Universe to create a new project with the imprecv template.

Contributing

I'm only doing programming as a hobby so it might take me a while to respond to issues and pull requests. If you would like to contribute to this project, I would be happy to review your pull requests when I can. Thank you for your understanding.

imprecv's People

Contributors

0x42697262 avatar a-eghrari avatar aparaxium avatar btrose98 avatar jskherman avatar mangkoran avatar notplancha avatar nrmancuso avatar osares10 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

imprecv's Issues

Support for "Present"

Being able to specify "Present" instead of an end date in an entry would be a nice little QoL addition

Multilingual setup

Hi! First of all, allow me to thank you for creating this wonderful template, it is really cool!

I would be super interested in having a unified and consistent system to have the YAML data and the CV compiled both in English and other language(s).

I would be very happy to contribute to the project, but I would need some guidance. Could you give me some suggestions about the first steps to achieve this?

Thanks a lot!

Manual processing of month can be processed using Typst standard library

imprecv/utils.typ

Lines 1 to 27 in dfc0345

// Helper Functions
#let monthname(n, display: "short") = {
n = int(n)
let month = ""
if n == 1 { month = "January" }
else if n == 3 { month = "March" }
else if n == 2 { month = "February" }
else if n == 4 { month = "April" }
else if n == 5 { month = "May" }
else if n == 6 { month = "June" }
else if n == 7 { month = "July" }
else if n == 8 { month = "August" }
else if n == 9 { month = "September" }
else if n == 10 { month = "October" }
else if n == 11 { month = "November" }
else if n == 12 { month = "December" }
else { month = none }
if month != none {
if display == "short" {
month = month.slice(0, 3)
} else {
month
}
}
month
}

This can be achieved like so:

#let monthname(n, display: "short") = {
  datetime(month: n, day: 1, year: 0).display("[month repr:#display]")
}

This will throw on an invalid month so if that isn't desirable you should add another line to check if n is within the range 1 to 12.

'uservars.showNumber=false' leaves empty element in 'profiles'

Greetings cv.typ maintainers, it seems like the filtering of nones in profiles is not working correctly.

➜  cv-typist git:(update-cv) ✗ git diff -u
diff --git a/my-cv-content.typ b/my-cv-content.typ
index 787c258..eeae905 100644
--- a/my-cv-content.typ
+++ b/my-cv-content.typ
@@ -9,7 +9,7 @@
     fontsize: 10pt, // 10pt, 11pt, 12pt
     linespacing: 6pt,
     showAddress: true, // true/false Show address in contact info
-    showNumber: true,  // true/false Show phone number in contact info
+    showNumber: false,  // true/false Show phone number in contact info
 )
 
 // setrules and showrules can be overridden by re-declaring it here
➜  cv-typist git:(update-cv) ✗ typst compile my-cv-content.typ

➜  cv-typist git:(update-cv) ✗ echo $?
0

Results:
image

➜  cv-typist git:(update-cv) ✗ cd cv.typ 
➜  cv.typ git:(formatting) ✗ git diff -u
diff --git a/cv.typ b/cv.typ
index 1f950a9..ca67113 100644
--- a/cv.typ
+++ b/cv.typ
@@ -85,7 +85,7 @@
     // Create a list of contact profiles
     #let profiles = (
         box(link("mailto:" + info.personal.email)),
-        if uservars.showNumber {box(link("tel:" + info.personal.phone))} else {none},
+        //if uservars.showNumber {box(link("tel:" + info.personal.phone))} else {none},
         if info.personal.url != none {
             box(link(info.personal.url)[#info.personal.url.split("//").at(1)])
         }
➜  cv.typ git:(formatting) ✗ cd ..
➜  cv-typist git:(update-cv) ✗ typst compile my-cv-content.typ

➜  cv-typist git:(update-cv) ✗ echo $?                        
0

Results:
image

Links along with text

Ability to add links in any text location (eg. job highlights, projects description, etc)

I tried adding using #link function but it didn't work.

Escape Sequence Issue

When including a character like # in a section that is evaluated as markdown, like a projects highlight section, you receive:

error: expected expression
    ┌─ cv.typ/cv.typ:248:28
    │
248 │                     - #eval(hi, mode: "markup")

Trying to escape sequence the character with '' results in:

unknown escape sequence:
    ./resume.cue:81:11
error: Recipe `compile` failed on line 4 with exit code 1

Allow to not include Start Date in Education

If I comment out the start date, it gives an error.

This feature is particularly useful if candidates would feel more comfortable not to display the amount of time it took them to graduate or simply thinks this is adding verbosity without additional value

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.