diff --git a/README.md b/README.md index 238a506..2b113bd 100644 --- a/README.md +++ b/README.md @@ -2,24 +2,90 @@ fluentCV ======== *Generate beautiful, targeted resumes from your command line or shell.* -FluentCV is a **hackable, data-driven, dev-friendly resume authoring tool** with support for HTML, Markdown, Word, PDF, YAML, plain text, smoke signal, carrier pigeon, and other resume formats. - ![](assets/fluentcv_cli_ubuntu.png) -Looking for a desktop GUI version with pretty timelines and graphs? Check out [FluentCV Desktop][7]. +FluentCV is a Swiss Army knife for resumes and CVs. Use it to: + +1. **Generate** polished multiformat resumes in HTML, Word, Markdown, PDF, plain +text, JSON, and YAML formats—without violating DRY. +2. **Convert** resumes between [FRESH][fresca] and [JSON Resume][6] formats. +3. **Validate** resumes against either format. + +Install it with NPM: + +```bash +[sudo] npm install fluentcv -g +``` + +Note: for PDF generation you'll need to install a copy of [wkhtmltopdf][3] for +your platform. ## Features - Runs on OS X, Linux, and Windows. - Store your resume data as a durable, versionable JSON or YAML document. -- Generate polished resumes in multiple formats without violating DRY. +- Generate polished resumes in multiple formats without violating [DRY][dry]. - Output to HTML, PDF, Markdown, MS Word, JSON, YAML, plain text, or XML. -- Compatible with [FRESH][fresh], [JSON Resume][6], [FRESCA][fresca], and [FCV Desktop][7]. +- Compatible with [FRESH][fresh], [JSON Resume][6], [FRESCA][fresca], and +[FCV Desktop][7]. - Validate resumes against the FRESH or JSON Resume schema. - Support for multiple input and output resumes. - Free and open-source through the MIT license. - Forthcoming: StackOverflow and LinkedIn support. -- Forthcoming: More themes. +- Forthcoming: More commands and themes. + +Looking for a desktop GUI version for Windows / OS X / Linux? Check out +[FluentCV Desktop][7]. + +## Getting Started + +To use FluentCV you'll need to create a valid resume in either [FRESH][fresca] +or [JSON Resume][6] format. Then you can start using the command line tool. +There are three commands you should be aware of: + +- `build` generates resumes in HTML, Word, Markdown, PDF, and other formats. Use +it when you need to submit, upload, print, or email resumes in specific formats. + + ```bash + # fluentcv BUILD TO [-t THEME] + fluentcv BUILD resume.json TO out/resume.all + fluentcv BUILD r1.json r2.json TO out/rez.html out/rez.md foo/rez.all + ``` + +- `convert` converts your source resume between FRESH and JSON Resume formats. +Use it to convert between the two formats to take advantage of tools and services. + + ```bash + # fluentcv CONVERT TO + fluentcv CONVERT resume.json TO resume-jrs.json + fluentcv CONVERT 1.json 2.json 3.json TO out/1.json out/2.json out/3.json + ``` + +- `validate` validates the specified resume against either the FRESH or JSON +Resume schema. Use it to make sure your resume data is sufficient and complete. + + ```bash + # fluentcv VALIDATE + fluentcv VALIDATE resume.json + fluentcv VALIDATE r1.json r2.json r3.json + ``` + +## Supported Output Formats + +FluentCV supports these output formats: + +Output Format | Ext | Notes +------------- | - | ------------- +HTML | .html | A standard HTML 5 + CSS resume format that can be viewed in a browser, deployed to a website, etc. +Markdown | .md | A structured Markdown document that can be used as-is or used to generate HTML. +MS Word | .doc | A Microsoft Word office document in 2003 format for widest compatibility. +Adobe Acrobat (PDF) | .pdf | A binary PDF document driven by an HTML theme. +plain text | .txt | A formatted plain text document appropriate for emails or as a source for copy-paste. +JSON | .json | A JSON representation of the resume. Can be passed back into FluentCV as an input. +YAML | .yml | A YAML representation of the resume. Can be passed back into FluentCV as an input. +RTF | .rtf | Forthcoming. +Textile | .textile | Forthcoming. +image | .png, .bmp | Forthcoming. ## Install @@ -31,29 +97,32 @@ FluentCV requires a recent version of [Node.js][4] and [NPM][5]. Then: ## Use -Assuming you've got a JSON-formatted resume handy, generating resumes in different formats and combinations easy. Just run: +Assuming you've got a JSON-formatted resume handy, generating resumes in +different formats and combinations easy. Just run: ```bash -fluentcv generate [inputs] [outputs] [-t theme]. +fluentcv BUILD [-t theme]. ``` -Where `[inputs]` is one or more .json resume files, separated by spaces; `[outputs]` is one or more destination resumes, each prefaced with the `-o` option; and `[theme]` is the desired theme. For example: +Where `` is one or more .json resume files, separated by spaces; +`` is one or more destination resumes, and `` is the desired +theme (default to Modern). For example: ```bash # Generate all resume formats (HTML, PDF, DOC, TXT, YML, etc.) -fluentcv generate resume.json -o out/resume.all -t modern +fluentcv build resume.json -o out/resume.all -t modern # Generate a specific resume format -fluentcv generate resume.json -o out/resume.html -fluentcv generate resume.json -o out/resume.pdf -fluentcv generate resume.json -o out/resume.md -fluentcv generate resume.json -o out/resume.doc -fluentcv generate resume.json -o out/resume.json -fluentcv generate resume.json -o out/resume.txt -fluentcv generate resume.json -o out/resume.yml +fluentcv build resume.json TO out/resume.html +fluentcv build resume.json TO out/resume.pdf +fluentcv build resume.json TO out/resume.md +fluentcv build resume.json TO out/resume.doc +fluentcv build resume.json TO out/resume.json +fluentcv build resume.json TO out/resume.txt +fluentcv build resume.json TO out/resume.yml # Specify 2 inputs and 3 outputs -fluentcv generate in1.json in2.json -o out.html -o out.doc -o out.pdf +fluentcv build in1.json in2.json TO out.html out.doc out.pdf ``` You should see something to the effect of: @@ -78,8 +147,8 @@ Generating YAML resume: out/resume.yml You can specify a predefined or custom theme via the optional `-t` parameter. For a predefined theme, include the theme name. For a custom theme, include the path to the custom theme's folder. ```bash -fluentcv generate resume.json -t modern -fluentcv generate resume.json -t ~/foo/bar/my-custom-theme/ +fluentcv build resume.json -t modern +fluentcv build resume.json -t ~/foo/bar/my-custom-theme/ ``` As of v0.9.0, available predefined themes are `modern`, `minimist`, and `hello-world`, and `compact`. @@ -90,13 +159,13 @@ You can **merge multiple resumes together** by specifying them in order from mos ```bash # Merge specific.json onto base.json and generate all formats -fluentcv generate base.json specific.json -o resume.all +fluentcv build base.json specific.json -o resume.all ``` This can be useful for overriding a base (generic) resume with information from a specific (targeted) resume. For example, you might override your generic catch-all "software developer" resume with specific details from your targeted "game developer" resume, or combine two partial resumes into a "complete" resume. Merging follows conventional [extend()][9]-style behavior and there's no arbitrary limit to how many resumes you can merge: ```bash -fluentcv generate in1.json in2.json in3.json in4.json -o out.html -o out.doc +fluentcv build in1.json in2.json in3.json in4.json TO out.html out.doc Reading JSON resume: in1.json Reading JSON resume: in2.json Reading JSON resume: in3.json @@ -112,14 +181,14 @@ You can specify **multiple output targets** and FluentCV will build them: ```bash # Generate out1.doc, out1.pdf, and foo.txt from me.json. -fluentcv generate me.json -o out1.doc -o out1.pdf -o foo.txt +fluentcv build me.json -o out1.doc -o out1.pdf -o foo.txt ``` You can also omit the output file(s) and/or theme completely: ```bash # Equivalent to "fluentcv resume.json resume.all -t modern" -fluentcv generate resume.json +fluentcv build resume.json ``` ### Using .all @@ -128,7 +197,7 @@ The special `.all` extension tells FluentCV to generate all supported output for ```bash # Generate all resume formats (HTML, PDF, DOC, TXT, etc.) -fluentcv generate me.json -o out/resume.all +fluentcv build me.json -o out/resume.all ``` ..tells FluentCV to read `me.json` and generate `out/resume.md`, `out/resume.doc`, `out/resume.html`, `out/resume.txt`, `out/resume.pdf`, and `out/resume.json`. @@ -148,13 +217,29 @@ FluentCV will validate each specified resume in turn: ```bash *** FluentCV v0.9.0 *** -Validating JSON resume: resume.json (INVALID) -Validating JSON resume: resume.json (VALID) +Validating JSON resume: resumeA.json (INVALID) +Validating JSON resume: resumeB.json (VALID) ``` +### Converting + +FluentCV can convert between the [FRESH][fresca] and [JSON Resume][6] formats. +Just run: + +```bash +fluentcv CONVERT +``` + +where is one or more resumes in FRESH or JSON Resume format, and + is a corresponding list of output file names. FluentCV will autodetect +the format (FRESH or JRS) of each input resume and convert it to the other +format (JRS or FRESH). + ### Prettifying -FluentCV applies [js-beautify][10]-style HTML prettification by default to HTML-formatted resumes. To disable prettification, the `--nopretty` or `-n` flag can be used: +FluentCV applies [js-beautify][10]-style HTML prettification by default to +HTML-formatted resumes. To disable prettification, the `--nopretty` or `-n` flag +can be used: ```bash fluentcv generate resume.json out.all --nopretty @@ -185,3 +270,4 @@ MIT. Go crazy. See [LICENSE.md][1] for details. [10]: https://github.com/beautify-web/js-beautify [fresh]: https://github.com/fluentdesk/FRESH [fresca]: https://github.com/fluentdesk/FRESCA +[dry]: https://en.wikipedia.org/wiki/Don%27t_repeat_yourself diff --git a/assets/fluentcv_cli_ubuntu.png b/assets/fluentcv_cli_ubuntu.png index 338af47..f4db94c 100644 Binary files a/assets/fluentcv_cli_ubuntu.png and b/assets/fluentcv_cli_ubuntu.png differ