{"id":14037152,"url":"https://github.com/SergChr/qcv","last_synced_at":"2025-07-27T05:30:32.082Z","repository":{"id":56204322,"uuid":"279655058","full_name":"SergChr/qcv","owner":"SergChr","description":"A JSON to HTML resume generator","archived":false,"fork":false,"pushed_at":"2020-11-20T17:38:28.000Z","size":136,"stargazers_count":11,"open_issues_count":2,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-12T21:17:07.907Z","etag":null,"topics":["cv","cv-builder","resume","resume-generator"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SergChr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-14T17:49:24.000Z","updated_at":"2023-08-16T01:43:35.000Z","dependencies_parsed_at":"2022-08-15T14:40:23.677Z","dependency_job_id":null,"html_url":"https://github.com/SergChr/qcv","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SergChr%2Fqcv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SergChr%2Fqcv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SergChr%2Fqcv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SergChr%2Fqcv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SergChr","download_url":"https://codeload.github.com/SergChr/qcv/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227762542,"owners_count":17816036,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cv","cv-builder","resume","resume-generator"],"created_at":"2024-08-12T03:02:32.110Z","updated_at":"2024-12-02T16:32:07.674Z","avatar_url":"https://github.com/SergChr.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"`qcv` is a tool to generate HTML resume from JSON template.\n![img](https://travis-ci.com/SergChr/qcv.svg?token=2R5NQSKq8dFxzneyxJie\u0026branch=master)\n\n## Content\n- [Use cases](#use-cases)\n- [How does it work](#how-does-it-work)\n- [List of the available themes](/src/assets/themes/README.md)\n- [Custom HTML themes](#custom-html-themes)\n- **[How to install](#installing)**\n\n## Use cases\n#### Keeping a JSON resume in Git\nThe tool allows to have one JSON file where the resume information placed. It can be stored in a `git` repository to make the updating process more seamless. There could be branching applied for different versions; the diffs are more simpler to track.\nNo more `CV_1.pdf`, `CV_1_updated.pdf`, `CV_1_updated_for_facebook.pdf`.\n\n#### Controlling and keeping track of the information\nNo need to move between different services that generate a resume or/and store it.\n\n#### Generating a simple portfolio website\nThe tool generates a HTML file based on a HTML template that can be customized.\n\n## How does it work\nThe tool replaces variables in a HTML template (see `src/assets/themes`) with corresponding values in the JSON template. Example:\nThis is a HTML template\n```html\n\u003cdiv\u003e{{basics.name}}\u003cdiv\u003e\n```\nThe JSON template is\n```json\n{\n    \"basics\": {\n        \"name\": \"John Doe\"\n    }\n}\n```\nSo the result will be as follows:\n```html\n\u003cdiv\u003eJohn Doe\u003c/div\u003e\n```\n#### Formatting rules\n##### cv.json\nThis is the JSON template example below. It will be generated by the `init` command. It creates `cv.json` file with the similar content:\n```json\n{\n    \"basics\": {\n      \"name\": \"John Doe\",\n      \"label\": \"Programmer\",\n      \"email\": \"john@gmail.com\",\n      \"phone\": \"(912) 555-4321\",\n      \"website\": \"http://johndoe.com\",\n      \"summary\": \"A brief summary on who I am\",\n      \"location\": {\n        \"country\": \"The Johnited States Of Doe\",\n        \"address\": \"2712 Broadway St\",\n        \"city\": \"San Francisco\"\n      },\n      \"profiles\": [{\n        \"network\": \"Twitter\",\n        \"username\": \"john\",\n        \"url\": \"http://twitter.com/john\"\n      }]\n    },\n    \"work\": [{\n      \"company\": \"Company\",\n      \"position\": \"President\",\n      \"website\": \"http://company.com\",\n      \"start_date\": \"2013-01-01\",\n      \"end_date\": \"2014-01-01\",\n      \"summary\": \"Description...\"\n    }],\n    \"projects\": [{\n      \"name\": \"An app to track time\",\n      \"description\": \"A web and mobile application that allowed 2500 people to track their working time\"\n    }],\n    \"education\": [{\n      \"institution\": \"University\",\n      \"area\": \"Software Development\",\n      \"study_type\": \"Bachelor\",\n      \"start_date\": \"2011-01-01\",\n      \"end_date\": \"2013-01-01\",\n      \"courses\": [\n        \"DB1101 - Basic SQL\"\n      ],\n      \"location\": \"Washington DC, US\"\n    }],\n    \"skills\": [{ \"name\": \"Web Development\" }],\n    \"languages\": [{\n      \"language\": \"English\",\n      \"level\": \"Native speaker\"\n    }]\n  }\n```\nPut your information into this file. Then use the `build simple` command to generate the `cv.html` output.\n\n## Available themes\nSee [themes documentation](/src/assets/themes/README.md)\n\n## Custom HTML themes\nThere is an ability to build your custom HTML template and generate a resume from it. Example:\n```sh\n$ qcv build-from my_theme.html\n```\n#### Formatting rules for the HTML templates\n_As a reference, you could use \"simple\" theme (`src/assets/themes/simple/index.html`)._\n##### Primitive/simple values\nA value inside `{{ root_key }}` in a HTML template looks up for a key `root_key` in the `cv.json` file and replaces `{{ root_key }}` with the corresponding value. Nested keys should be written as `{{ root.nested.more_nested }}`. Say, we have the following `cv.json`:\n```json\n{\n    \"basics\": {\n      \"name\": \"John Doe\",\n      \"label\": \"Programmer\",\n    },\n}\n```\nA theme could be:\n```html\n\u003csection id=\"main-info\"\u003e\n    \u003ch1\u003e{{ basics.name }}\u003c/h1\u003e\n    \u003c!-- It doesn't matter if you use wrapping spaces or not inside {{ }} --\u003e\n    \u003ch2\u003e{{basics.label}}\u003c/h2\u003e\n\u003c/section\u003e\n```\nCSS styles could be inside `\u003cstyle\u003e` as well as Javascript code. A template is just a HTML with `{{ }}` that will be replaced with values from the `cv.json`.\n##### Arrays\n`cv.json` has arrays with objects. Like:\n```json\n{\n    \"basics\": {\n      \"profiles\": [{\n        \"network\": \"Twitter\",\n        \"username\": \"john\",\n        \"url\": \"http://twitter.com/john\"\n      }]\n    }\n}\n```\nTo map array values, the syntax is:\n```html\n\u003c!-- Point a key which value is an array --\u003e\n{! basics.profiles\n    \u003c!-- Note the number of braces here: { } not {{ }} --\u003e\n    \u003c!-- Number of spaces inside { } also doesn't matter --\u003e\n    \u003cdiv\u003e{network}\u003c/div\u003e\n    \u003cp\u003e{username}\u003c/p\u003e\n    \u003ca href=\"{url}\"\u003e{url}\u003c/a\u003e\n!}\n```\n\n## Installing\n#### Installing a crate\nIf you have Cargo installed, download [qcv crate](https://crates.io/crates/qcv) and use it globally in a terminal.\n```sh\n$ cargo install qcv\n# Usage\n$ qcv init\n$ qcv build simple\n```\n\n#### Installing a binary\nDownload an archive in the [releases](https://github.com/SergChr/qcv/releases) section. E.g. for Ubuntu, download `...x86_64-unknown-linux-gnu.tar.gz`, unpack it, then use as follows:\n```sh\n# Create a JSON template\n./qcv init\n# Generate HTML file\n./qcv build simple\n```\n\n#### Cloning the repo\nUse this method if you have Rust ecosystem installed.\n```sh\n$ git clone \u003crepo\u003e\n# Create cv.json template\n$ cargo run init\n\n# Build cv.html result based on cv.json\n$ cargo run build simple\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSergChr%2Fqcv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSergChr%2Fqcv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSergChr%2Fqcv/lists"}