Universe

Create project in app

Modular, ATS-friendly résumé template for software developers.

Quick start

typst init @preview/tech-focused-resume:0.1.1

This creates a ready-to-edit résumé project. To use the package in an existing document, import its public definitions:

#import "@preview/tech-focused-resume:0.1.1": *

Minimal example

The resume function configures the page and applies the résumé layout to the content that follows it. Pass it to a show rule with resume.with(...):

#import "@preview/tech-focused-resume:0.1.1": *

#show: resume.with(
  header-info: (
    author: (
      name: "Jane Doe",
      headline: "Software Engineer",
    ),
    contact: (
      info: (
        email: "jane.doe@example.com",
        github: "janedoe",
      ),
    ),
  ),
  style: (
    accent-color: "#26428b",
    paper: "a4",
  ),
)

#section("Summary")[
  Software engineer focused on building reliable web applications.
]

#section("Work Experience")[
  #work(
    company: "Acme Corp",
    title: "Software Engineer",
    dates: dates-helper(start-date: "2022", end-date: "Present"),
    tech-stack: "TypeScript, React, Node.js",
    modality: "Remote",
    location: "São Paulo, Brazil",
  )[
    - Built and maintained production web applications.
    - Improved delivery workflows through automation.
  ]
]

Configuration

resume

resume accepts the following dictionaries:

Parameter Description
header-info Configures the author and contact information shown at the top of the page.
style Configures the accent color, font, paper size, font size, and page margins.
config Sets the document language and regional conventions.
document-metadata Sets the PDF title, description, and keywords.

The main header-info options are:

Parameter Description
style Header arrangement: "row" or "column".
author.name Name displayed in the header.
author.headline Professional headline displayed below the name.
author.position Author alignment: left, center, or right.
author.uppercase Whether to uppercase the name and headline.
contact.info Contact values such as email, github, linkedin, phone, location, and personal-site.
contact.show-icons Whether to display icons next to contact values.
contact.show-sensitive-info Whether to display phone and location.
contact.position Contact alignment: left, center, right, or horizon.
contact.gap Spacing between contact values when not using horizon.

The style options are accent-color, font, paper, font-size, and margin. The margin dictionary accepts top, bottom, left, and right. The default language and region are "en" and "us".

Components

All components accept a content block where indicated, so entries can contain paragraphs, lists, links, or other Typst content.

section and grid-section

Use section(title)[content] for a full-width section. Use grid-section(columns: ..., gutter: ..., sections: (...)) to place multiple sections side by side. Each item in sections is normally created with section("Title")[content].

work

#work(
  company: "Acme Corp",
  company-category: "Fintech",
  title: "Software Engineer",
  tech-stack: "TypeScript, React",
  dates: "Jan 2022 — Present",
  modality: "Hybrid",
  location: "New York, NY",
  columns: (1.5fr, 1fr),
)[
  - Describe an achievement.
]

edu

#edu(
  institution: "University of Example",
  degree: "B.Sc. in Computer Science",
  dates: "2018 — 2022",
  location: "Boston, MA",
)[
  Relevant coursework or academic achievements.
]

project

project supports an optional role, URL, tagline, relation, and relation type.

#project(
  name: "TaskFlow",
  tagline: "Team task management platform",
  role: "Lead Developer",
  url: "https://github.com/janedoe/taskflow",
  dates: "2023",
  relation: "University of Example",
  relation-type: "Capstone Project",
)[
  - Describe the project and its impact.
]

certificates

#certificates(
  name: "AWS Certified Cloud Practitioner",
  issuer: "Amazon Web Services",
  date: "March 2025",
  url: "https://aws.amazon.com/certification",
)

extracurriculars

#extracurriculars(
  activity: "Open-source contributor",
  dates: "2021 — Present",
)

skills and languages

Use these components with a list. They remove list markers while preserving inline formatting such as *bold labels*:

#skills[
  - *Languages:* TypeScript, Python, SQL
  - *Tools:* Git, Docker, GitHub Actions
]

#languages[
  - *English:* Fluent
  - *Portuguese:* Native
]

dates-helper

dates-helper(start-date: ..., end-date: ...) joins two dates with an em dash. It is useful for keeping date formatting consistent:

#let dates = dates-helper(start-date: "Jan 2022", end-date: "Present")
Dates: #dates

Fonts

The package does not distribute fonts. The selected font must be available in the user’s Typst environment. The default is Calibri; the included example uses New Computer Modern, which can be replaced with any installed font.

Credits

Based on basic-resume by stuxf, and adapted from simple-technical-resume by steadyfall. Also inspired by RenderCV.

Third-party assets

The icons in src/assets/icons/ are from Font Awesome Free (v7.3.1) by Fonticons, Inc., licensed under CC BY 4.0. They are not covered by this package’s license.

License

The package library in src/ is licensed under the MIT License. See LICENSE.

The starter files in template/ are licensed under the MIT-0 License. See LICENSE-MIT-0. This allows users to modify and redistribute their initialized projects without attribution requirements.

The Font Awesome icons in src/assets/icons/ are third-party assets and are licensed separately under CC BY 4.0 as described above.