diff --git a/Daniel Chen.typ b/danielchen_web_fullstack.typ similarity index 89% rename from Daniel Chen.typ rename to danielchen_web_fullstack.typ index 708a0f3..a2c86a6 100644 --- a/Daniel Chen.typ +++ b/danielchen_web_fullstack.typ @@ -1,37 +1,8 @@ -#import "fontawesome.typ": fa, globe, github, linkedin, envelope -#import "lib.typ": template, work_entry, project, indent, SMALL_STRONG, DEFAULT_STRONG, render_contact_data -// orange!! -#let color = blue // rgb("#ff983e") -#let name = "Daniel Chen" +#import "lib.typ": SMALL_STRONG +#import "template_common.typ": template_common, work_entry, project, indent -#let contact_data = (( - service: fa[#globe], - display: "eggworld.me", - link: "https://eggworld.me", -), ( - service: fa[#github], - display: "github.com/potatoeggy", - link: "https://github.com/potatoeggy", -), ( - service: fa[#linkedin], - display: "linkedin.com/in/potatoeggy", - link: "https://www.linkedin.com/in/potatoeggy/", -), ( - service: fa[#envelope], - display: "d7chen@uwaterloo.ca", - link: "mailto://d7chen@uwaterloo.ca", -),) - -#show: doc => template(name, color, doc) - -#render_contact_data(contact_data) - -// MAIN CONTENT STARTS here - -= Education - -#indent[ +#let education = indent[ #work_entry( "B.A.Sc. in Computer Engineering", "University of Waterloo", @@ -47,6 +18,17 @@ ) ] +#let skills = indent[ + *Languages:* TypeScript/JavaScript, HTML, CSS, SQL, Python, Java, C, C++, Rust \ + // Dart + *Technologies:* React, Next.js, Spring Boot, Express, Prisma, Apollo, GraphQL \ + // Qt, Jest / Pytest, Apollo, Prisma, Rails + *Tools:* Linux, Git, Docker, Postgres, Pytest, Jest, AWS/GCP, Kubernetes, + Terraform, Figma // Jenkins, systemd, Jira +] + +#show: doc => template_common(education, skills, doc) + = Experience #indent[ @@ -219,15 +201,4 @@ // personal projects behind *nginx* // - Containerised services with *Docker* and *systemd* to simplify deployment and // management -] - -= Skills - -#indent[ - *Languages:* TypeScript/JavaScript, HTML, CSS, SQL, Python, Java, C, C++, Rust \ - // Dart - *Technologies:* React, Next.js, Spring Boot, Express, Prisma, Apollo, GraphQL \ - // Qt, Jest / Pytest, Apollo, Prisma, Rails - *Tools:* Linux, Git, Docker, Postgres, Pytest, Jest, AWS/GCP, Kubernetes, - Terraform, Figma // Jenkins, systemd, Jira ] \ No newline at end of file diff --git a/lib.typ b/lib.typ index f527fd1..fdd6422 100644 --- a/lib.typ +++ b/lib.typ @@ -127,15 +127,15 @@ set align(left + horizon) let title = smallcaps(i.body) - let colored_line(header_text) = style(styles => { - let size = measure(header_text, styles) + let colored_line(header_text) = { + let size = measure(header_text) // 100% - spacing - width of text line( length: 100% - HEADING_LINE_GAP - size.width, stroke: (paint: color, thickness: 2pt, cap: "round"), ) - }) + } set block(above: 0.9em, below: 0.75em) set text(size: HEADING_FONT_SIZE, fill: color, font: HEADING_FONT) diff --git a/template_common.typ b/template_common.typ new file mode 100644 index 0000000..df2bd46 --- /dev/null +++ b/template_common.typ @@ -0,0 +1,46 @@ +#import "fontawesome.typ": fa, globe, github, linkedin, envelope +#import "lib.typ": template, work_entry, project, indent, SMALL_STRONG, DEFAULT_STRONG, render_contact_data + +#let SEQUENCE = ("education", "skills", "content") + +// orange!! +#let color = blue // rgb("#ff983e") +#let name = "Daniel Chen" + +#let contact_data = (( + service: fa[#globe], + display: "eggworld.me", + link: "https://eggworld.me", +), ( + service: fa[#github], + display: "github.com/potatoeggy", + link: "https://github.com/potatoeggy", +), ( + service: fa[#linkedin], + display: "linkedin.com/in/potatoeggy", + link: "https://www.linkedin.com/in/potatoeggy/", +), ( + service: fa[#envelope], + display: "d7chen@uwaterloo.ca", + link: "mailto://d7chen@uwaterloo.ca", +),) + +#show: doc => template(name, color, doc) + +#let template_common(education, skills, doc) = { + template(name, color, { + render_contact_data(contact_data) + + SEQUENCE.map(section => { + if section == "education" [ + = Education + #education + ] else if section == "skills" [ + = Skills + #skills + ] else if section == "content" [ + #doc + ] + }).join() + }) +} \ No newline at end of file