Skip to content

Commit 2e0e35d

Browse files
authored
linked-cv:0.1.0 (#3486)
1 parent f9e7222 commit 2e0e35d

File tree

17 files changed

+1550
-0
lines changed

17 files changed

+1550
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2025 ellsphillips
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.
Lines changed: 229 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,229 @@
1+
# linked-cv
2+
3+
A beautiful, timeline-based CV template for Typst that emulates the LinkedIn UI aesthetic.
4+
5+
![Preview](thumbnail.png)
6+
7+
## Features
8+
9+
- **LinkedIn-inspired design** with clean, professional layout
10+
- **Timeline visualisation** for multiple roles at the same company
11+
- **Tech stack icons** with 100+ built-in technology logos
12+
- **Customisable colours and fonts** to match your personal brand
13+
- **Responsive layout** optimised for A4 paper
14+
- **Easy to use** with simple, intuitive component API
15+
16+
## Installation
17+
18+
Import the package using the Typst package manager:
19+
20+
```typ
21+
#import "@preview/linked-cv:0.1.0": *
22+
```
23+
24+
## Quick Start
25+
26+
```typ
27+
#import "@preview/linked-cv:0.1.0": *
28+
29+
#show: linked-cv.with(
30+
firstname: "Your",
31+
lastname: "Name",
32+
socials: (
33+
34+
mobile: "01234 567890",
35+
github: "your-github-username",
36+
linkedin: "your-linkedin-username",
37+
),
38+
accent-colour: colours.accent,
39+
fonts: (
40+
headings: "Roboto",
41+
body: "Source Sans Pro",
42+
),
43+
)
44+
45+
#typography.summary[
46+
Experienced software engineer who values learning and growing with people, teams, and technologies...
47+
]
48+
49+
#components.section("Experience")
50+
51+
#components.employer-info(
52+
image("path/to/logo.svg"),
53+
name: "Company Name",
54+
duration: ("01-2023", "current"),
55+
)
56+
57+
#frame.connected-frames(
58+
"company-id",
59+
(
60+
title: [Software Engineer],
61+
duration: ("01-2023", "current"),
62+
body: [
63+
#components.workstream(
64+
title: "Project Name",
65+
tech-stack: ("python", "typescript", "react", "postgresql")
66+
)
67+
- Key achievement or responsibility
68+
- Another achievement
69+
]
70+
),
71+
)
72+
```
73+
74+
## Components
75+
76+
### Header & Personal Info
77+
78+
The `linked-cv` template automatically generates a header with your name and contact information:
79+
80+
```typ
81+
#show: linked-cv.with(
82+
firstname: "First",
83+
lastname: "Last",
84+
socials: (
85+
86+
mobile: "+1234567890",
87+
github: "username",
88+
linkedin: "username",
89+
),
90+
)
91+
```
92+
93+
### Sections
94+
95+
Create section headers:
96+
97+
```typ
98+
#components.section("Experience")
99+
#components.section("Education")
100+
#components.section("Skills")
101+
```
102+
103+
### Company Experience
104+
105+
Display company information with optional logo, followed by timeline entries for roles:
106+
107+
```typ
108+
#components.employer-info(
109+
image("path/to/logo.svg"), // content placeholder available
110+
name: "Company Name",
111+
duration: ("01-2020", "current"),
112+
)
113+
```
114+
115+
### Timeline Frames
116+
117+
Create connected timeline entries for multiple roles at the same company:
118+
119+
```typ
120+
#frame.connected-frames(
121+
"unique-company-id",
122+
(
123+
title: [Senior Engineer],
124+
duration: ("01-2022", "current"),
125+
body: [
126+
#components.workstream(
127+
title: "Project Name",
128+
tech-stack: ("python", "docker", "kubernetes")
129+
)
130+
- Key achievement
131+
- Another achievement
132+
]
133+
),
134+
(
135+
title: [Engineer],
136+
duration: ("01-2020", "12-2021"),
137+
body: [
138+
- Earlier achievements
139+
]
140+
),
141+
)
142+
```
143+
144+
### Tech Stack Icons
145+
146+
Display technology icons inline with your projects:
147+
148+
```typ
149+
#components.workstream(
150+
title: "Project Name",
151+
tech-stack: ("python", "typescript", "react", "postgresql", "docker")
152+
)
153+
```
154+
155+
Supports 100+ technologies including: Python, JavaScript, TypeScript, React, Vue, Angular, Node.js, Docker, Kubernetes, AWS, GCP, Azure, PostgreSQL, MongoDB, and many more.
156+
157+
**Custom Icons:** You can mix built-in icon names with custom images:
158+
159+
```typ
160+
#components.workstream(
161+
title: "Project Name",
162+
tech-stack: ("python", image("path/to/custom-logo.svg"), "docker")
163+
)
164+
```
165+
166+
You can also use tech icons standalone:
167+
168+
```typ
169+
#tech-icon("python")
170+
#tech-icon("docker", size: 1em)
171+
#tech-icons(("python", "typescript", image("custom.svg")))
172+
```
173+
174+
### Education & Qualifications
175+
176+
```typ
177+
#components.qualification(
178+
"Degree Name",
179+
"Grade",
180+
"Year",
181+
"Institution"
182+
)
183+
```
184+
185+
## Customisation
186+
187+
### Colours
188+
189+
Choose from predefined accent colours or create your own:
190+
191+
```typ
192+
#show: linked-cv.with(
193+
accent-colour: colours.accent,
194+
// accent-colour: blue,
195+
// accent-colour: rgb("#1a73e8").lighten(20%),
196+
)
197+
```
198+
199+
### Fonts & Type
200+
201+
Customise fonts and text settings:
202+
203+
```typ
204+
#show: linked-cv.with(
205+
fonts: (
206+
headings: "Roboto",
207+
body: "Source Sans Pro",
208+
),
209+
)
210+
```
211+
212+
Override default text settings for fine-tuned control:
213+
214+
```typ
215+
#set text(size: 8pt, hyphenate: false)
216+
#set par(justify: true, leading: 0.52em)
217+
```
218+
219+
## Example
220+
221+
See [example/cv.typ](example/cv.typ) for a complete working example with multiple companies, roles, and sections.
222+
223+
## Licence
224+
225+
MIT License - see [LICENCE](LICENCE) for details.
226+
227+
## Contributing
228+
229+
Contributions are welcome! Please feel free to open issues or submit pull requests.

0 commit comments

Comments
 (0)