diff --git a/README.md b/README.md index 2af1103..b422593 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,32 @@ watermark ========= -Dress up your resume for Halloween. Resume/CV themes for [FluentCV][1] and [FluentCMD][2] live here. +Predefined template-based resume themes for [FluentCV][1] and [FluentCMD][2]. + +- `minimist`: A no-frills theme. +- `informatic`: An informative theme for technical resumes. +- `modern`: A middle of the road theme with a modern look 'n feel. +- `hello-world`: A simple-as-possible example theme. +- New themes added weekly. + +## How It Works + +Each theme lives in a folder, e.g., `themes/informatic` or `themes/modern`. The folder contains individual template files assembled by the theme author. Each template can be used to generate a single type of output file such as HTML, Word, or PDF. Template files are named according to this scheme... + + [ OuputFormat ].[ InputFormat ] + +...where `[OuputFormat]` and `[InputFormat]` are both one of `html`, `pdf`, `md`, `txt`, `doc`, or `xml`. For example: + +- `html.html` = An HTML template used to generate an HTML document. +- `doc.xml` = An XML template used to generate an MS Word document. +- `pdf.html` = An HTML template used to generate a PDF document. +- `md.txt` = A text template used to generate a Markdown document. + +This scheme ensures that theme template files have the "correct" file extension when the theme author is working with them in an editor—if your source data is XML then the template file will have an `.xml` extension regardless of whether you're ultimately generating an HTML page or a PDF document *from* that XML. It also provides a declarative mapping between a given input format (say, XML) and a given output file type (say, a Word doc or spreadsheet). ## License -MIT. See [LICENSE.md][3] for details. +MIT. See [LICENSE.md][1] for details. [1]: http://fluentcv.com [2]: https://github.com/fluentdesk/fluentcmd -[3]: LICENSE.md +[3]: ../LICENSE.md diff --git a/package.json b/package.json index dc05171..292b3a8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "watermark", - "version": "0.1.0", + "version": "0.2.0-alpha", "description": "Themes and exemplars for FluentCV.", "private": true, "repository": { diff --git a/themes/README.md b/themes/README.md deleted file mode 100644 index 05a8212..0000000 --- a/themes/README.md +++ /dev/null @@ -1,12 +0,0 @@ -themes -====== -Predefined template-based resume themes for FluentCV. - -- `minimist`: A no-frills theme. -- `informatic`: An informative theme for technical resumes. - -## License - -MIT. See [LICENSE.md][1] for details. - -[1]: ../LICENSE.md diff --git a/themes/hello-world/doc.xml b/themes/hello-world/doc.xml index aa50ea0..f92ec7a 100644 --- a/themes/hello-world/doc.xml +++ b/themes/hello-world/doc.xml @@ -1,7 +1,7 @@ {# A simple-as-possible WORD/DOC template for the "Hello World" theme. -Uses the MS Word 2003 XML format for widest compatibility. +Uses the MS Word 2003 XML format. #} diff --git a/themes/hello-world/md.txt b/themes/hello-world/md.txt new file mode 100644 index 0000000..24ac0bf --- /dev/null +++ b/themes/hello-world/md.txt @@ -0,0 +1,7 @@ +{# + + modern/md.txt + A Markdown resume template for FluentCV's "hello-world" theme. + +#} +# Hello, world! My name is {{ r.basics.name }}. diff --git a/themes/minimist/md.txt b/themes/minimist/md.txt new file mode 100644 index 0000000..66c89f1 --- /dev/null +++ b/themes/minimist/md.txt @@ -0,0 +1,59 @@ +{# + + modern/md.txt + A Markdown resume template for FluentCV's "minimist" theme. + +#} +# {{ r.basics.name }} + +{% if (r.basics.email) { %}Email: {{ r.basics.email }}{% } %} +{% if (r.basics.phone) { %}Tel: {{ r.basics.phone }}{% } %} +{% if (r.basics.website) { %}Web: {{ r.basics.website }}{% } %} + +{% if ( r.basics.summary && r.basics.summary.length ) { %}{{ r.basics.summary }}{% } %} + +{% if ( r.skills && r.skills.length ) { %} +## Skills +{% r.skills.forEach( function( skill, idx, ar) { %} +- **{{ skill.name }}**: {% print( skill.keywords.join(', ') ); %} +{% }); } %} + +{% if ( r.work && r.work.length ) { %} +## Employment +{% r.work.forEach( function( proj, idx, ar) { %} +### *{{ proj.position }}*, {{ proj.company }} ({{ proj.safeStartDate.format('MMM YYYY') }} — {{ proj.safeEndDate.format('MMM YYYY') }}) +{{ proj.summary }} +{% if( proj.highlights ) { %}{% proj.highlights.forEach( function( high, idx, ar) { %} +- {{ high }} +{% }); } }); } %} + +{% if ( r.education && r.education.length ) { %} +## Education +{% r.education.forEach( function( edu, idx, ar) { %} +### {{ edu.institution }} ({{ edu.safeStartDate.format('MMM YYYY') }} — {{ edu.safeEndDate.format('MMM YYYY') }}) +{{ edu.area }} +{% if( edu.courses ) { %}{% edu.courses.forEach( function( course, idx, ar) { %} +- {{ course }} +{% }); } }); } %} + +{% if ( r.publications && r.publications.length ) { %} +## Publications +{% r.publications.forEach( function( pub, idx, ar) { %} +### {{ pub.name }} ({{ pub.safeReleaseDate.format('MMM YYYY') }}) +{{ pub.publisher }} +{{ pub.summary }} +{% }); } %} + +{% if ( r.volunteer && r.volunteer.length ) { %} +## Volunteer +{% r.volunteer.forEach( function( vol, idx, ar) { %} +### {{ vol.organization }} ({{ vol.safeStartDate.format('MMM YYYY') }} — {{ vol.safeEndDate.format('MMM YYYY') }}) +{{ vol.summary }} +{% }); } %} + +{% if ( r.awards && r.awards.length ) { %} +## Awards +{% r.awards.forEach( function( awd, idx, ar) { %} +### *{{ awd.title }}*, {{ awd.awarder }} ({{ awd.safeDate.format('MMM YYYY') }}) +{{ awd.summary }} +{% }); } %} diff --git a/themes/modern/doc.xml b/themes/modern/doc.xml index 6ef5154..232fd96 100644 --- a/themes/modern/doc.xml +++ b/themes/modern/doc.xml @@ -1,7 +1,10 @@ {# -An MS Word resume template for FluentCV's "informatic" theme. -Uses the MS Word 2003 XML format for widest compatibility. + + modern/doc.xml + An XML-driven Microsoft Word resume template for FluentCV's "modern" theme. + Uses the MS Word 2003 XML format. + #} diff --git a/themes/modern/html.html b/themes/modern/html.html index 5668b55..4383b66 100644 --- a/themes/modern/html.html +++ b/themes/modern/html.html @@ -1,5 +1,10 @@ -{# An HTML 5 resume template for FluentCV's "informatic" theme. #} +{# + + modern/md.txt + An HTML resume template for FluentCV's "modern" theme. + +#} diff --git a/themes/modern/md.txt b/themes/modern/md.txt new file mode 100644 index 0000000..2db581a --- /dev/null +++ b/themes/modern/md.txt @@ -0,0 +1,59 @@ +{# + + modern/md.txt + A Markdown resume template for FluentCV's "modern" theme. + +#} +# {{ r.basics.name }} + +{% if (r.basics.email) { %}Email: {{ r.basics.email }}{% } %} +{% if (r.basics.phone) { %}Tel: {{ r.basics.phone }}{% } %} +{% if (r.basics.website) { %}Web: {{ r.basics.website }}{% } %} + +{% if ( r.basics.summary && r.basics.summary.length ) { %}{{ r.basics.summary }}{% } %} + +{% if ( r.skills && r.skills.length ) { %} +## Skills +{% r.skills.forEach( function( skill, idx, ar) { %} +- **{{ skill.name }}**: {% print( skill.keywords.join(', ') ); %} +{% }); } %} + +{% if ( r.work && r.work.length ) { %} +## Employment +{% r.work.forEach( function( proj, idx, ar) { %} +### *{{ proj.position }}*, {{ proj.company }} ({{ proj.safeStartDate.format('MMM YYYY') }} — {{ proj.safeEndDate.format('MMM YYYY') }}) +{{ proj.summary }} +{% if( proj.highlights ) { %}{% proj.highlights.forEach( function( high, idx, ar) { %} +- {{ high }} +{% }); } }); } %} + +{% if ( r.education && r.education.length ) { %} +## Education +{% r.education.forEach( function( edu, idx, ar) { %} +### {{ edu.institution }} ({{ edu.safeStartDate.format('MMM YYYY') }} — {{ edu.safeEndDate.format('MMM YYYY') }}) +{{ edu.area }} +{% if( edu.courses ) { %}{% edu.courses.forEach( function( course, idx, ar) { %} +- {{ course }} +{% }); } }); } %} + +{% if ( r.publications && r.publications.length ) { %} +## Publications +{% r.publications.forEach( function( pub, idx, ar) { %} +### {{ pub.name }} ({{ pub.safeReleaseDate.format('MMM YYYY') }}) +{{ pub.publisher }} +{{ pub.summary }} +{% }); } %} + +{% if ( r.volunteer && r.volunteer.length ) { %} +## Volunteer +{% r.volunteer.forEach( function( vol, idx, ar) { %} +### {{ vol.organization }} ({{ vol.safeStartDate.format('MMM YYYY') }} — {{ vol.safeEndDate.format('MMM YYYY') }}) +{{ vol.summary }} +{% }); } %} + +{% if ( r.awards && r.awards.length ) { %} +## Awards +{% r.awards.forEach( function( awd, idx, ar) { %} +### *{{ awd.title }}*, {{ awd.awarder }} ({{ awd.safeDate.format('MMM YYYY') }}) +{{ awd.summary }} +{% }); } %} diff --git a/themes/modern/pdf.html b/themes/modern/pdf.html index 2d7709f..307e9a6 100644 --- a/themes/modern/pdf.html +++ b/themes/modern/pdf.html @@ -1,5 +1,10 @@ -{# An HTML 5 PDF resume template for FluentCV's "informatic" theme. #} +{# + + modern/pdf.html + An HTML-driven PDF resume template for FluentCV's "modern" theme. + +#} diff --git a/themes/modern/txt.txt b/themes/modern/txt.txt index c9e1631..ad96ebb 100644 --- a/themes/modern/txt.txt +++ b/themes/modern/txt.txt @@ -1,5 +1,8 @@ {# -A plain TXT resume template for FluentCV's "informatic" theme. + + modern/txt.txt + A plain text resume template for FluentCV's "modern" theme. + #} {{ r.basics.name }} {% if (r.basics.email) { %}Email: {{ r.basics.email }}{% } %}