mintyfrankie / brilliant-CV

💼 another CV template for your job application, yet powered by Typst and more
https://typst.app/universe/package/brilliant-cv
Apache License 2.0
470 stars 28 forks source link

Header Info Icons can be more flexible and customizable #67

Open mintyfrankie opened 1 month ago

mintyfrankie commented 1 month ago

It seems to be a recurrent request to make the header icons more customizable (#63, #59, #28, #11), yet with current implementation it is harder than expected, because:

  1. Currently Typst's path handling functionality is very limited. With templating capabilities, users can not point to their right path unless hardcoding absolute paths; this make any img(Path) import impossible.
  2. The new metadata.toml is intended to keep textual metadata, but beyond that it's hard to invoke functions from it unless we use some really ugly hacks.
  3. I always intend to keep the template simple, structured and opinionated. There are requests that can be easily done (adding more hardcoded icons, more fields, etc), but one should balance between simplicity and versatility. It's not preferable to have a 2000-lines template just to cover every edge cases.

In this regard, I would like to keep this issue open so that we could find a more elegant way to handle this functionality.

munzirtaha commented 1 month ago

What makes using the present approach better than your previous one? or maybe simply having one or two files where everything is exposed to the user? All that's required of a novice user is to update the placeholder text; no coding knowledge is required. Apart from a lot fewer lines of code, an experienced user would have all control. For example. As of right now, I've discovered that formatting my resume in this way suits me better. e.g.

#let header(name, font, size, color, title) = {
  grid(
    columns: (1fr, 13%),
    [
      #text(font: font, weight: "bold", size, name)
      #v(-2em)
      #set text(primary_color)
      #smallcaps(title)

       #link("tel:+00") |  #link("mailto:m@example.com") | #link("https://github.com/example")[ example] | #link("https://linkedin.com/in/example")[ example]
    ],
    [#box(clip: true, radius: 50%, image("assets/photo.jpg"))],
  )
}
#header(
  [John *Doe*],
  header_font,
  header_font_size,
  primary_color,
  "JOB TITLE",
)

It took me hours to replicate your nice template, but it's easier then. In all cases your work and attitude is very much appreciated and this is just one user perspective.

mintyfrankie commented 1 month ago

Thanks @munzirtaha for your engagement too, really appreciated it!

My philosophy is kind of that templating should separate styles and contents as much as possible, though sometimes it can be paradoxal. Simplicity and flexibility is definitely another dilemma to take into account, and apparently I am falling more on the first one.

But still bravo for spending time and make your own template based on this one, your approach is indeed more flexible and customizable! If you want, I'd encourage you to share your forked version, I'd be happy to put it in my description saying that it's intended for those who love to have more fine-grained control on their template.

munzirtaha commented 1 month ago

Thanks for your kind words. If you think it could be useful I will make it available.

munzirtaha commented 1 month ago

As per your suggestion, I uploaded my approach to typst-cv. I hope it helps individuals that require their own customization, and I would be delighted to hear your opinions. Thanks again.

mintyfrankie commented 1 month ago

@munzirtaha you are welcome! I've added your repo on my README :)