You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
To automate my CV generation, and make it easier to maintain.
15
+
All content defined in YAML, then a script generates a LaTeX PDF and deploy a web version.
16
+
I did it this way so that I don't need to f\*\*k around with Microsoft Word.
17
+
18
+
<details>
19
+
<summary>Motive (legacy)</summary>
20
+
12
21
13
22
> **Backstory**<br>
14
-
> I've just been made redundant 😢 (Aug '24), which I am gutted about. I've never been laid off before, and I loved my job and the people I worked with. So I'm now on the market, looking for a new role!
23
+
> I'm just about to be made redundant 😢 (Aug '24), which I am gutted about. I've never been laid off before, and I loved my job and the people I worked with. So I'm now on the market, looking for a new role!
15
24
>
16
25
> I've kept my CV/resume **very** brief, in an attempt respect the hiring manager's time. But in short, I'm an experienced, Principle-level full stack engineer with a love for quality, performance, mentoring, tech and open source. The best judge of a developer is their code, and while I cannot share what I've done professional or for private clients, I have got many open source projects on my [GitHub](https://github.com/lissy93) and at [apps.aliciasykes.com](https://apps.aliciasykes.com).
17
26
27
+
28
+
</details>
29
+
18
30
---
19
31
20
32
## About
21
33
22
34
The resume content is defined in [`resume.yml`](/resume.yml) following the [jsonresume.org](https://jsonresume.org/) standard, and validated against [`schema.json`](/schema.json).
23
-
A LaTex document is then generated from [`template.jinja`](/template.jinja) formated with [`resume-format.cls`](/tex/resume-format.cls), which is then compiled into a PDF by GitHub Actions, and published under the [Releases](https://github.com/Lissy93/cv/releases) tab.
24
-
A markdown version is also generated by [`lib/markdown.py`](/lib/markdown.py), as well as a CV website which is built as a static Svelte site and deployed to GitHub Pages at [cv.aliciasykes.com](https://aliciasykes.com).<br>
25
-
...Because why spend 30 minutes writing your CV, when you could spend 30 hours automating it?
35
+
A LaTex document is then generated from [`template.jinja`](/template.jinja) formated with [`resume-format.cls`](/tex/resume-format.cls), which is then [compiled into a PDF](https://github.com/Lissy93/cv/actions/workflows/compile.yml) by GitHub Actions, and published under the [Releases](https://github.com/Lissy93/cv/releases) tab.
36
+
A markdown version is also generated by [`lib/markdown.py`](/lib/markdown.py), as well as a CV website which is built as a static site with SvelteKit, and deployed to GitHub Pages and Vercel, at [cv.aliciasykes.com](https://aliciasykes.com).
37
+
38
+
Why? ...Because why spend 30 minutes writing your CV, when you could spend 30 hours automating it, obviously!
26
39
27
40
28
41
---
29
42
30
43
## Usage
31
44
32
45
### Option #1 - GitHub
33
-
Upon creating a tag (by triggering the [Tag Workflow](/.github/workflows/tag.yml)), a new Release will be drafted with your compiled CV PDF attatched
34
-
35
46
1. Fork the repo
36
47
2. Update resume.json with your own content
37
-
3. Trigger the GitHub Action to compile the PDF
48
+
3. Create [a tag](/.github/workflows/tag.yml), or trigger the GH actions workflow
49
+
4. ....and a PDF and website gets magically generated
38
50
39
51
40
52
<details><summary>Workflows</summary>
41
53
42
-
-`tag` - Creates a new Git tag. Optionally specify the tag name and description, or by default it will just bump the sem ver patch number by 1
43
-
-`generate` - Generates your resume in PDF form as an artifact. If triggered by a tag, then a new release will be created, with the PDF attatched
44
-
-`validate` - Validates your resume data against the schema. This will also run whenever a new PR is opened, to ensure it's valid and working
|`tag`| Creates a new Git tag. Optionally specify the tag name and description, or by default it will just bump the sem ver patch number by 1 |[](https://github.com/Lissy93/cv/actions/workflows/tag.yml)|
57
+
|`generate`| Generates your resume in PDF form as an artifact. If triggered by a tag, then a new release will be created, with the PDF attatched |[](https://github.com/Lissy93/cv/actions/workflows/compile.yml)|
58
+
|`validate`| Validates your resume data against the schema. This will also run whenever a new PR is opened, to ensure it's valid and working | st |
59
+
45
60
</details>
46
61
47
62
---
@@ -51,7 +66,12 @@ See the [`Makefile`](/Makefile) for all the available commands. Or, just run `ma
51
66
52
67
1. Clone the repo
53
68
2. Update resume.json with your own content
54
-
3. Run `make` from the root, to install deps, validate content, generate LaTex, and compile PDF
69
+
1. Run `make` from the root, to install deps, validate content, generate LaTex, and compile PDF
70
+
71
+
Or, to deploy the web version
72
+
1. Follow steps above (clone, edit, validate)
73
+
2. Run `make web` to generate `dist/`
74
+
3. upload to any CDN, web server or static hosting provider (I use Vercel)
55
75
56
76
<details><summary>Commands</summary>
57
77
@@ -64,9 +84,31 @@ See the [`Makefile`](/Makefile) for all the available commands. Or, just run `ma
64
84
-`make web` - Launches web version, installs NPM deps, builds and serves the site
65
85
</details>
66
86
87
+
```mermaid
88
+
flowchart LR
89
+
GA([🤖 GitHub Actions<br><sup>Triggered on <code>resume.yml</code> change</sup>]) --> A3
90
+
91
+
A1([🚀 Start<br><sup>Clone repo & cd into it</sup>]) --> A2[✏️ Update <code>resume.yml</code><br><sub>Your resume content goes here</sub>]
92
+
A2 --> A3[✅ make validate<br><sub>Check for content or schema issues</sub>]
93
+
94
+
%% PDF PATH
95
+
A3 --> PDF[📄 PDF Output]
96
+
PDF --> B1[📦 make install<br><sub>Install all dependencies</sub>]
97
+
B1 --> B2[🛠 make generate<br><sub>Generate LaTeX from resume.yml</sub>]
98
+
B2 --> B3[📄 make compile<br><sub>Compile LaTeX to PDF</sub>]
99
+
B3 --> B4([✅ View at <code>out/resume.pdf</code>])
100
+
101
+
%% WEB PATH
102
+
A3 --> Web[🌐 Website Output]
103
+
Web --> C1[🌐 make web<br><sub>Build static site into <code>./dist</code></sub>]
104
+
Web --> C2[🧪 make web_dev<br><sub>Start local dev server at <code>localhost:5173</code></sub>]
105
+
C1 --> C3([🚀 Deploy <code>./dist</code> to your host])
106
+
C2 --> C4([🔍 View site locally in browser])
107
+
```
108
+
67
109
---
68
110
69
-
###Editing
111
+
## Editing
70
112
Modify data by editing [`resume.yml`](/resume.yml)<br>
71
113
If you need to customize the layout, edit [`template.jinja`](/template.jinja)<br>
72
114
Or to change the styles and formatting, edit [`resume-format.cls`](/tex/resume-format.cls)<br>
@@ -78,7 +120,21 @@ The source for the website version is located in [`web/`](/web)
skill_items.append(f"See example projects built with each technology at <a href=\"{extra_links_projects['link']}\">{extra_links_projects['link']}</a>")
0 commit comments