this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

initiate vantage-typst template

sardorml d9b4eea4

+524
+21
LICENSE
··· 1 + MIT License 2 + 3 + Copyright (c) 2024 Sardor Mamadaliev 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.
+77
README.md
··· 1 + # Vantage Typst 2 + 3 + An ATS friendly simple Typst CV template, inspired by [alta-typst by George Honeywood](https://github.com/GeorgeHoneywood/alta-typst). See [`example.pdf`](example.pdf) for the rendered PDF output. 4 + 5 + ![Preview](screenshot.png) 6 + 7 + ## Features 8 + 9 + - **Two-column layout**: Experience on the left and other important details on the right, organized for easy scanning. 10 + - **Customizable icons**: Add and replace icons to suit your personal style. 11 + - **Responsive design**: Adjusts well for various print formats. 12 + 13 + ## Usage 14 + 15 + ### Running Locally with Typst CLI 16 + 17 + 1. **Install Typst CLI**: Follow the installation instructions on the [Typst CLI GitHub page](https://github.com/typst/typst#installation) to set up Typst on your machine. 18 + 19 + 2. **Clone the repository**: 20 + 21 + ```bash 22 + git clone https://github.com/sardorml/vantage-typst.git 23 + cd vantage-typst 24 + ``` 25 + 26 + 3. **Run Typst**: 27 + 28 + Use the following command to render your CV: 29 + 30 + ```bash 31 + typst compile example.typ 32 + ``` 33 + 34 + This will generate a PDF output in the same directory. 35 + 36 + 4. **Edit your CV**: 37 + 38 + Open the `example.typ` file in your preferred text editor to customize the layout. 39 + 40 + ### Configuration 41 + 42 + You can easily customize your personal data by editing the `configuration.yaml` file. This file allows you to set your name, contact information, work experience, education, and skills. Here’s how to do it: 43 + 44 + 1. Open the `configuration.yaml` file in your text editor. 45 + 2. Update the fields with your personal information. 46 + 3. Save the file, and your CV will automatically reflect these changes when you compile it. 47 + 48 + ## Icons 49 + 50 + You can enhance your CV with additional icons by following these steps: 51 + 52 + 1. **Upload Icons**: Place your `.svg` files in the `icons/` folder. 53 + 54 + 2. **Reference Icons**: Modify the `links` array in the Typst file to include your new icons by referencing their filenames as the `name` values. 55 + 56 + Example: 57 + 58 + ```typst 59 + links: [ 60 + { name: "your-icon-name", url: "https://example.com" }, 61 + ] 62 + ``` 63 + 64 + For existing icons, the current selection is sourced from [Lucide Icons](https://lucide.dev/icons/). 65 + 66 + ## License 67 + 68 + This project is licensed under the [MIT License](./LICENSE). 69 + 70 + Icons are from Lucide Icons and are subject to [their terms](https://lucide.dev/license). 71 + 72 + ## Acknowledgments 73 + 74 + - Inspired by the work of [George Honeywood](https://github.com/GeorgeHoneywood/alta-typst). 75 + - Thanks to [Lucide Icons](https://lucide.dev/icons/) for providing the icon library. 76 + 77 + For any questions or contributions, feel free to open an issue or submit a pull request!
+194
configuration.yaml
··· 1 + contacts: 2 + name: John Doe 3 + title: Software Engineer 4 + email: johndoe@example.com 5 + address: "City, Country" 6 + location: Country 7 + linkedin: 8 + url: https://www.linkedin.com/in/johndoe/ 9 + displayText: johndoe 10 + github: 11 + url: https://github.com/johndoe/ 12 + displayText: "@johndoe" 13 + website: 14 + url: https://johndoe.com 15 + displayText: www.johndoe.com 16 + 17 + position: Software Engineer 18 + 19 + tagline: Software engineer with 5 years of experience and a strong foundation in computer science, skilled in developing software for innovative industries. Proficient in JavaScript/TypeScript, Python, and C/C++, with a solid understanding of system architecture and design principles. 20 + 21 + jobs: 22 + - position: Lead Software Developer 23 + company: 24 + name: Quantum Innovations 25 + link: https://quantuminnovations.com/ 26 + product: 27 + name: QuantumLeap 28 + link: https://quantumleap.com 29 + description: 30 + - Spearheaded the development of a cutting-edge quantum computing simulator, optimizing algorithms for performance. 31 + - Collaborated with a team to create intuitive user interfaces that simplified complex scientific data for end-users. 32 + from: "2023 Mar." 33 + to: "2024 Jul." 34 + tags: 35 + - Quantum Computing 36 + - Algorithm Optimization 37 + - UI Design 38 + location: Remote 39 + - position: Backend Developer 40 + company: 41 + name: CloudSync Solutions 42 + link: https://cloudsyncsolutions.com/ 43 + product: 44 + name: SyncManager 45 + link: https://syncmanager.com 46 + description: 47 + - Built scalable backend services for SyncManager, ensuring high availability and performance for cloud synchronization. 48 + - Designed and implemented RESTful APIs to facilitate data exchange between clients and servers. 49 + from: "2024 Aug." 50 + to: "present" 51 + tags: 52 + - API Development 53 + - Cloud Computing 54 + - Microservices 55 + location: Remote 56 + - position: DevOps Engineer 57 + company: 58 + name: AutoTech Dynamics 59 + link: https://autotechdynamics.com/ 60 + product: 61 + name: AutoPilot 62 + link: https://autopilot.com 63 + description: 64 + - Streamlined CI/CD pipelines for the AutoPilot system, enhancing deployment frequency and reliability. 65 + - Monitored system performance and implemented improvements for optimized infrastructure. 66 + from: "2022 Feb." 67 + to: "2023 Dec." 68 + tags: 69 + - DevOps 70 + - CI/CD 71 + - Infrastructure Management 72 + location: Denver, USA 73 + - position: Game Developer 74 + company: 75 + name: PixelForge Studios 76 + link: "https://pixelforgestudios.com/" 77 + product: 78 + name: Realm of Adventure 79 + link: https://realmofadventure.com 80 + description: 81 + - Developed engaging gameplay mechanics and interactive environments using Unity and C#. 82 + - Collaborated with artists to ensure visual consistency and high-quality game experiences. 83 + from: "2021 Jan." 84 + to: "2022 Dec." 85 + tags: 86 + - Game Development 87 + - Unity 88 + - C# 89 + location: Los Angeles, USA 90 + - position: Data Engineer 91 + company: 92 + name: Insight Analytics 93 + link: "https://insightanalytics.com/" 94 + product: 95 + name: DataVision 96 + link: https://datavision.com 97 + description: 98 + - Engineered data pipelines to aggregate and process large datasets for analytics using Python and Apache Spark. 99 + - Developed dashboards for real-time data visualization and business intelligence. 100 + from: "2020 Jan." 101 + to: "2021 Dec." 102 + tags: 103 + - Data Engineering 104 + - Python 105 + - Data Visualization 106 + location: Chicago, USA 107 + - position: Quality Assurance Intern 108 + company: 109 + name: CodeFix Labs 110 + link: "https://codefixlabs.com/" 111 + product: 112 + name: TestSuite Pro 113 + link: https://testsuitepro.com 114 + description: 115 + - Assisted in testing software applications for functionality and usability, reporting bugs and feedback. 116 + - Gained experience in automated testing frameworks to improve product quality. 117 + from: "2019 Jan." 118 + to: "2019 Dec." 119 + tags: 120 + - Quality Assurance 121 + - Testing 122 + - Automation 123 + location: Austin, USA 124 + 125 + objective: Seeking to advance my skills and build a strong career with a company that values innovation and creativity. 126 + 127 + education: 128 + - place: 129 + name: Example University 130 + link: "http://exampleuniversity.edu" 131 + degree: "B.Sc." 132 + major: Computer Science 133 + track: Computer Science 134 + from: "2015" 135 + to: "2019" 136 + location: City, Country 137 + - place: 138 + name: Technical College 139 + link: "" 140 + degree: Diploma 141 + major: IT Specialist 142 + track: IT Specialist 143 + from: "2012" 144 + to: "2015" 145 + location: City, Country 146 + 147 + technical_expertise: 148 + - name: Kotlin 149 + level: 4 150 + - name: Angular 151 + level: 5 152 + - name: Ruby on Rails 153 + level: 5 154 + - name: Flutter 155 + level: 4 156 + - name: Go 157 + level: 4 158 + - name: Subversion 159 + level: 5 160 + 161 + skills: 162 + - JavaScript 163 + - Python 164 + - Java 165 + - React 166 + - Node.js 167 + - Express 168 + - MongoDB 169 + - AWS 170 + - Docker 171 + - Git 172 + - HTML/CSS 173 + - SQL 174 + - Material UI 175 + - Tailwind CSS 176 + 177 + methodology: 178 + - Lean 179 + - Kanban 180 + - Design Thinking 181 + - Test-Driven Development 182 + - Pair Programming 183 + 184 + tools: 185 + - GitHub 186 + - IntelliJ IDEA 187 + - Asana 188 + - Slack 189 + - Adobe XD 190 + - Postman 191 + 192 + achievements: 193 + - name: "Best Project Award" 194 + description: Developed an innovative solution for community service management and received recognition from the university.
+82
example.typ
··· 1 + #import "vantage-typst.typ": vantage, term, skill, styled-link 2 + #let configuration = yaml("configuration.yaml") 3 + 4 + #vantage( 5 + name: configuration.contacts.name, 6 + position: configuration.position, 7 + links: ( 8 + (name: "email", link: "mailto:"+ configuration.contacts.email), 9 + (name: "website", link: configuration.contacts.website.url, display: configuration.contacts.website.displayText), 10 + (name: "github", link: configuration.contacts.github.url, display: configuration.contacts.github.displayText), 11 + (name: "linkedin", link: configuration.contacts.linkedin.url, display: configuration.contacts.linkedin.displayText), 12 + (name: "location", link: "", display: configuration.contacts.address) 13 + ), 14 + tagline: (configuration.tagline), 15 + [ 16 + 17 + == Experience 18 + 19 + #for job in configuration.jobs [ 20 + === #job.position \ 21 + _#link(job.company.link)[#job.company.name]_ - #styled-link(job.product.link)[#job.product.name] \ 22 + #term[#job.from --- #job.to][#job.location] 23 + 24 + #for point in job.description [ 25 + - #point 26 + ] 27 + ] 28 + 29 + ], 30 + [ 31 + == Objective 32 + 33 + #configuration.objective 34 + 35 + 36 + == Education 37 + 38 + #for edu in configuration.education [ 39 + === #if edu.place.link != "" [ 40 + #link(edu.place.link)[#edu.place.name]\ 41 + ] else [ 42 + #edu.place.name\ 43 + ] 44 + 45 + #edu.from - #edu.to #h(1fr) #edu.location 46 + 47 + #edu.degree in #edu.major 48 + 49 + ] 50 + 51 + == Technical Expertise 52 + 53 + #for expertise in configuration.technical_expertise [ 54 + #skill(expertise.name, expertise.level) 55 + ] 56 + 57 + == Skills/Exposure 58 + 59 + #for skill in configuration.skills [ 60 + • #skill 61 + ] 62 + 63 + == Methodology/Approach 64 + #for method in configuration.methodology [ 65 + • #method 66 + ] 67 + 68 + == Tools 69 + #for tool in configuration.tools [ 70 + • #tool 71 + ] 72 + 73 + == Achievements/Certifications 74 + 75 + #for achievement in configuration.achievements [ 76 + === #achievement.name 77 + \ 78 + #achievement.description 79 + ] 80 + 81 + ] 82 + )
+1
icons/archive/calendar.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z"/></svg>
+1
icons/archive/email.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256v32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32v80 32c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-106-86-192-192-192zm64 192c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z"/></svg>
+1
icons/archive/location.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 256c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z"/></svg>
+1
icons/archive/website.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z"/></svg>
+1
icons/calendar.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar"><path d="M8 2v4"/><path d="M16 2v4"/><rect width="18" height="18" x="3" y="4" rx="2"/><path d="M3 10h18"/></svg>
+1
icons/email.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-at-sign"><circle cx="12" cy="12" r="4"/><path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8"/></svg>
+1
icons/github.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-github"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"/><path d="M9 18c-4.51 2-5-2-7-2"/></svg>
+1
icons/linkedin.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-linkedin"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"/><rect width="4" height="12" x="2" y="9"/><circle cx="4" cy="4" r="2"/></svg>
+1
icons/location.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/><circle cx="12" cy="10" r="3"/></svg>
+1
icons/website.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-unlink-2"><path d="M15 7h2a5 5 0 0 1 0 10h-2m-6 0H7A5 5 0 0 1 7 7h2"/></svg>
screenshot.png

This is a binary file and will not be displayed.

+140
vantage-typst.typ
··· 1 + #let primary_colour = rgb("#3730a3") 2 + #let link_colour = rgb("#12348e") 3 + 4 + #let icon(name, shift: 1.5pt) = { 5 + box( 6 + baseline: shift, 7 + height: 10pt, 8 + image("icons/" + name + ".svg") 9 + ) 10 + h(3pt) 11 + } 12 + 13 + #let findMe(services) = { 14 + set text(8pt) 15 + let icon = icon.with(shift: 2.5pt) 16 + 17 + services.map(service => { 18 + icon(service.name) 19 + 20 + if "display" in service.keys() { 21 + link(service.link)[#{service.display}] 22 + } else { 23 + link(service.link) 24 + } 25 + }).join(h(10pt)) 26 + [ 27 + 28 + ] 29 + } 30 + 31 + #let term(period, location) = { 32 + text(9pt)[#icon("calendar") #period #h(1fr) #icon("location") #location] 33 + } 34 + 35 + #let max_rating = 5 36 + #let skill(name, rating) = { 37 + let done = false 38 + let i = 1 39 + 40 + name 41 + 42 + h(1fr) 43 + 44 + while (not done){ 45 + let colour = rgb("#c0c0c0") 46 + let strokeColor = rgb("#c0c0c0") 47 + let radiusValue = (left: 0em, right: 0em) 48 + 49 + if (i <= rating){ 50 + colour = primary_colour 51 + strokeColor = primary_colour 52 + } 53 + 54 + // Add rounded corners for the first and last boxes 55 + if (i == 1) { 56 + radiusValue = (left: 2em, right: 0em) 57 + } else if (i == max_rating) { 58 + radiusValue = (left: 0em, right: 2em) 59 + } 60 + 61 + box(rect( 62 + height: 0.3em, 63 + width: 1.5em, 64 + stroke: strokeColor, 65 + fill: colour, 66 + radius: radiusValue 67 + )) 68 + 69 + if (max_rating == i){ 70 + done = true 71 + } 72 + 73 + i += 1 74 + } 75 + 76 + [\ ] 77 + } 78 + 79 + 80 + #let styled-link(dest, content) = emph(text( 81 + fill: link_colour, 82 + link(dest, content) 83 + )) 84 + 85 + #let vantage( 86 + name: "", 87 + position: "", 88 + links: (), 89 + tagline: [], 90 + leftSide, 91 + rightSide 92 + ) = { 93 + set document( 94 + title: name + "'s CV", 95 + author: name, 96 + ) 97 + set text(9.8pt, font: "PT Sans") 98 + set page( 99 + margin: (x: 1.2cm, y: 1.2cm), 100 + ) 101 + 102 + show heading.where(level: 1) : it => text(16pt,[#{it.body} #v(1pt)]) 103 + 104 + show heading.where( 105 + level: 2, 106 + ): it => text( 107 + fill: primary_colour, 108 + [ 109 + #{it.body} 110 + #v(-7pt) 111 + #line(length: 100%, stroke: 0.5pt + primary_colour) 112 + ] 113 + ) 114 + 115 + show heading.where( 116 + level: 3 117 + ): it => text(it.body) 118 + 119 + show heading.where( 120 + level: 4 121 + ): it => text( 122 + fill: primary_colour, 123 + it.body 124 + ) 125 + 126 + [= #name] 127 + text(12pt, weight: "medium",[#position]) 128 + 129 + v(0pt) 130 + findMe(links) 131 + 132 + tagline 133 + 134 + grid( 135 + columns: (7fr, 4fr), 136 + column-gutter: 2em, 137 + leftSide, 138 + rightSide, 139 + ) 140 + }