source code:
#import "@preview/nerd-icons:0.2.0": *
#change-nerd-font("jetbrainsmono nfm")
#set document(title: "Curriculum Vitae in Typst", author: "Matt Ji")
#set page(
paper: "a4",
margin: (left: 0.50in, right: 0.50in, top: 0.25in, bottom: 0.50in),
)
#let resume(json,pic) = block[
#set text(lang: json.meta.language)
#if pic {
place(right,image("profile.svg", width: 17%))
place(left,image("signature.png", width: 20%))
} else {}
#let header = {
align(center)[
#pad(bottom: 5pt)[
#text(size: 24pt, weight: "bold")[#json.basics.name]
]
#set text(size: 11pt)
#for label in json.basics.altLabels [
#label
]
#json.basics.location.city, #json.basics.location.region, #json.basics.location.countryCode
#text([#json.basics.phone])
|
#link("mailto:"+json.basics.email)[#json.basics.email]
#link(json.basics.url)[#text("Homepage")]
#for profile in json.basics.profiles [
|
#link(profile.url)[#profile.network: #profile.username]
]
]
}
#let experience_item(organization, role, startdate, enddate, body) = {
set text(size: 11pt)
block[
#text(weight: "bold")[#organization]
#if role != none {
text(style: "italic")[#text(weight: "bold")[#role]]
}
#box(width: 1fr)[
#align(right)[#text(size: 8pt)[#startdate \- #enddate]]
]
]
for highlight in body [
• #highlight
]
}
#let project_item(name, keywords, body) = {
set text(size: 11pt)
block[
#text(weight: "bold")[#name]
#box(width: 1fr)
#for keyword in keywords [
#keyword
]
]
for highlight in body [
• #highlight
]
}
#let education_item(school, role, startdate,enddate, body) = {
set text(size: 11pt)
block[
#text(weight: "bold")[#school]
#if role != none {
text(style: "italic")[#text(weight: "bold")[#role]]
}
#box(width: 1fr)[
#align(right)[#text(size: 8pt)[#startdate \- #enddate]]
]
]
for course in body [
• #course
]
}
#header
== Skills:
bash Python HTML CSS NixOS Go HTMX Docker JavaScript Linux PDF Typst
== Experience:
#for job in json.work [
#experience_item(job.name,job.position,job.startDate,job.endDate,job.highlights)
]
== Projects:
#for project in json.projects [
#project_item(project.name,project.keywords,project.highlights)
]
== Education:
#for school in json.education [
#education_item(school.institution, school.studyType,school.startDate,school.endDate,school.courses)
]
== Language:
#for language in json.languages [
• #language.language: #language.fluency
]
]
#context [
#set text(font: "JetBrainsMono NFM")
#set-favorite-nf-prefix("dev")
#show "Docker": name => box[#nf-icon("nf-seti-docker") #name]
#show "NixOS": name => box[#nf-icon("nixos") #name]
#show "Lua": name => box[#nf-icon("lua") #name]
#show "Go": name => box[#nf-icon("nf-seti-go") #name]
#show "HTML": name => box[#nf-icon("html") #name]
#show "CSS": name => box[#nf-icon("css") #name]
#show "Vim": name => box[#nf-icon("vim") #name]
#show "Python": name => box[#nf-icon("python") #name]
#show "bash": name => box[#nf-icon("terminal_bash") #name]
#show "JavaScript": name => box[#nf-icon("javascript") #name]
#show "React": name => box[#nf-icon("react") #name]
#show "HTMX": name => box[#nf-icon("html") #name]
#show "Linux": name => box[#nf-icon("linux") #name]
#show "Windows": name => box[#nf-icon("windows") #name]
#show "C++": name => box[#nf-icon("c") #name]
#show "LLM": name => box[#nf-icon("robot") #name]
#show "solar": name => box[#nf-icon("sun") #name]
#show "database": name => box[#nf-icon("database") #name]
#show "Kubernetes": name => box[#nf-icon("kubernetes") #name]
#show "GitHub:": name => box[#nf-icon("nf-cod-github_alt")]
#show "LinkedIn:": name => box[#nf-icon("linkedin")]
#show "XING:": name => box[#nf-icon("xing")]
// #set-favorite-nf-prefix("seti")
#show "Excel": name => box[#nf-icon("nf-seti-excel") #name]
#show "Word": name => box[#nf-icon("nf-seti-word") #name]
#show "Typst": name => box[#nf-icon("nf-linux-typst") #name]
#show "PDF": name => box[#nf-icon("nf-fa-file_pdf") #name]
#show "Markdown": name => box[#nf-icon("nf-cod-markdown") #name]
#resume(json("resume.json"),true )
]