Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions packages/preview/altacv/0.3.0/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
MIT License

Copyright (c) 2023 George Honeywood
Copyright (c) 2026 Shane Murphy

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
173 changes: 173 additions & 0 deletions packages/preview/altacv/0.3.0/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
# altacv

A Typst CV template inspired by LianTze Lim's [AltaCV](https://github.com/liantze/AltaCV) (LaTeX). Data-driven via a [JSON Resume](https://jsonresume.org/)-style dict; configurable theme, labels, and sections.

<!-- Preview image is generated by CI on every push and attached to
each GitHub Release. The link below resolves to the latest
release's `preview.png` asset. Until the first release is cut
by release-please, this image will 404. -->
![Preview](https://github.com/smur89/alta-typst/releases/latest/download/preview.png)

Check warning on line 9 in packages/preview/altacv/0.3.0/README.md

View check run for this annotation

Typst package check / @preview/altacv:0.3.0

packages/preview/altacv/0.3.0/README.md#L9

Possibly inadequate alternative description for image: `Preview`. Please add a short description to make this image more accessible.

## Installation

Available on [Typst Universe](https://typst.app/universe/package/altacv):

```typst
#import "@preview/altacv:0.3.0": alta // x-release-please-version
```

## Quick start

```typst
#import "@preview/altacv:0.3.0": alta // x-release-please-version

#let cv = (
basics: (
name: "Jane Doe",
label: "Senior Software Engineer",
summary: [Backend engineer with eight years' experience…],
email: "jane@example.com",
phone: "+353 1 555 0100",
location: "Dublin, Ireland",
profiles: (
(network: "LinkedIn", username: "janedoe", url: "https://linkedin.com/in/janedoe"),
(network: "GitHub", username: "janedoe", url: "https://github.com/janedoe"),
(network: "Website", username: "janedoe.dev", url: "https://janedoe.dev"),
),
),
work: (
(
name: "Acme Corp",
position: "Senior Software Engineer",
location: "Dublin, Ireland",
startDate: "Jan 2022",
// omit endDate → renders as "Present"
highlights: ([Led the migration…], [Designed the platform…]),
),
),
skills: (
(name: "Languages", keywords: ("Scala", "Python")),
(name: "Infra", keywords: ("Kafka", "AWS", "Kubernetes")),
),
languages: (
(language: "English", fluency: "Native"),
(language: "Irish", fluency: "Professional Working"),
),
// … education, certificates, publications
)

#alta(cv)
```

See [`examples/example.typ`](examples/example.typ) for a one-page CV covering the main sections. Edge cases (publication grouping, fractional language ratings, custom preferences) are exercised by fixtures under [`tests/`](tests/).

Check failure on line 62 in packages/preview/altacv/0.3.0/README.md

View check run for this annotation

Typst package check / @preview/altacv:0.3.0

packages/preview/altacv/0.3.0/README.md#L62

Linked file not found: `/examples/example.typ`. Make sure to commit all linked files and possibly add them to the `exclude` list. More details: https://github.com/typst/packages/blob/main/docs/tips.md#what-to-commit-what-to-exclude

Check failure on line 62 in packages/preview/altacv/0.3.0/README.md

View check run for this annotation

Typst package check / @preview/altacv:0.3.0

packages/preview/altacv/0.3.0/README.md#L62

Linked file not found: `/tests/`. Make sure to commit all linked files and possibly add them to the `exclude` list. More details: https://github.com/typst/packages/blob/main/docs/tips.md#what-to-commit-what-to-exclude

## Data schema

The `cv` dict follows [JSON Resume](https://jsonresume.org/schema/) with three practical extensions:

- `focusAreas`: top-level array of prose items. This is an intentional altacv addition, distinct from JSON Resume's `interests` (which is structured `{name, keywords}` per entry). Rendered as a bulleted "Areas of Focus" section.
- `languages[].rating`: numeric 0–5 (JSON Resume uses a `fluency` string; supplying `rating` enables half-dot precision and wins over `fluency` if both are present).
- `publications[].type`: optional grouping key (e.g. `"Articles"`, `"Books"`, `"Talks"`). Entries sharing a `type` cluster under a subheading rendered verbatim from the string; entries without `type` fall under `labels.articles`. Localise either by overriding `labels.articles` or by supplying already-translated `type` values directly.

An empty or missing `endDate` is interpreted as the role still being current and renders as `Present` (localisable via `labels.present`).

Top-level keys recognised: `basics`, `focusAreas`, `work`, `skills`, `languages`, `education`, `certificates`, `publications`. Any section with empty input is skipped — no orphan headings.

### Profile networks

The `network` field of each `basics.profiles` entry is matched case-insensitively against a vendored icon set. Built-in networks: `Bluesky`, `GitHub`, `GitLab`, `Link`, `LinkedIn`, `Mastodon`, `Medium`, `Stackoverflow`, `Twitter`, `Website`. Use `Link` as a generic fallback for any URL without a brand. Unknown networks panic with a list of the supported set. To add another, drop its SVG (with `fill="#666666"` baked in) into `icons/` and register it in `_icon_sources` in `lib.typ`.

## Configuration

### Top-level `alta()` arguments

These are page-geometry primitives:

| Argument | Default | Purpose |
|---|---|---|
| `font` | `"Lato"` | Primary font family. Must be installed. |
| `body-size` | `10pt` | Base text size. Every sub-element scales from this via em-multipliers. |
| `paper` | `"a4"` | Page format. |
| `margin` | `(x: 0.9cm, y: 1.5cm)` | Page margins. |
| `column-ratio` | `0.64` | Left/right column split (experience vs side panel). |
| `labels` | `(:)` | Override section headings — see [Labels](#labels). |
| `preferences` | `(:)` | Override theme + behaviour toggles — see [Preferences](#preferences). |

### Preferences

Theme + behaviour configuration. Override any subset via `preferences:`; the rest fall back to defaults. Unknown keys panic (catches typos).

| Key | Default | Effect |
|---|---|---|
| `accent` | `rgb("#00796B")` | Theme colour for headings, accent rules, tags, dots. |
| `groupCertificates` | `true` | When true, group certificates by issuer (2+ certs from the same issuer cluster; singletons pool into a final "other" group). When false, render flat. |

Example:

```typst
#alta(cv, preferences: (
accent: rgb("#1976D2"),
groupCertificates: false,
))
```

### Labels

All display strings the template emits. Override any subset via `labels:`; the rest fall back to English defaults. Unknown keys panic. Use this for translation or local renaming.

| Key | Default |
|---|---|
| `experience` | `"Experience"` |
| `focusAreas` | `"Areas of Focus"` |
| `skills` | `"Skills"` |
| `languages` | `"Languages"` |
| `education` | `"Education"` |
| `certifications` | `"Certifications"` |
| `publications` | `"Publications"` |
| `articles` | `"Articles"` |
| `present` | `"Present"` |

Example (German + rename "Skills" to "Core Technologies"):

```typst
#alta(cv, labels: (
experience: "Berufserfahrung",
focusAreas: "Schwerpunkte",
skills: "Core Technologies",
languages: "Sprachen",
education: "Ausbildung",
certifications: "Zertifikate",
publications: "Veröffentlichungen",
present: "Heute",
))
```

### Helpers

The template also exports lower-level helpers (`icon`, `name`, `term`, `skill`, `tag`, `divider`, `styled-link`) for callers who want to compose custom layouts:

```typst
#import "@preview/altacv:0.3.0": tag, divider // x-release-please-version
```

## Building the example

```sh
typst compile --root . examples/example.typ examples/example.pdf
```

To regenerate the preview image:

```sh
typst compile --root . --format png --ppi 150 examples/example.typ 'examples/preview-{p}.png'
mv examples/preview-1.png examples/preview.png && rm examples/preview-*.png
```

## Credits

- **[LianTze Lim — AltaCV](https://github.com/liantze/AltaCV)** (LPPL). The visual ancestor: the two-column layout, accent palette, and section structure originate in LianTze's LaTeX class.
- **[George Honeywood — alta-typst](https://github.com/GeorgeHoneywood/alta-typst)** (MIT, © 2023). Prior Typst implementation; the grid layout, pill tags, and half-fill skill dots originate there.

## License

[MIT](LICENSE). Copyright © 2023 George Honeywood, © 2026 Shane Murphy.
1 change: 1 addition & 0 deletions packages/preview/altacv/0.3.0/icons/bluesky.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/preview/altacv/0.3.0/icons/calendar.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/preview/altacv/0.3.0/icons/email.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/preview/altacv/0.3.0/icons/file.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/preview/altacv/0.3.0/icons/github.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/preview/altacv/0.3.0/icons/gitlab.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/preview/altacv/0.3.0/icons/link.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/preview/altacv/0.3.0/icons/linkedin.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/preview/altacv/0.3.0/icons/location.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/preview/altacv/0.3.0/icons/mastodon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/preview/altacv/0.3.0/icons/medium.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/preview/altacv/0.3.0/icons/phone.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/preview/altacv/0.3.0/icons/stackoverflow.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/preview/altacv/0.3.0/icons/twitter.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading