1
0
mirror of https://github.com/JuanCanham/fresh-themes.git synced 2025-07-06 18:21:06 +01:00

Compare commits

..

36 Commits

Author SHA1 Message Date
JD
5439bd5385 Merge pull request #7 from fluentdesk/rel/v0.4.0-beta
rel/v0.4.0 beta
2015-11-18 04:47:36 -05:00
7be839bdbf Multiple: Fix skill keywords collection glitches. 2015-11-05 11:53:17 -05:00
2261537724 Modern: Update PDF template from HTML. 2015-11-05 11:36:24 -05:00
9552eda254 Modern: Exclude empty pubs / awards. 2015-11-05 11:36:11 -05:00
e23a1ed0a4 Theme: Compact: Update PDF format from HTML. 2015-11-05 11:21:17 -05:00
05a875b837 Theme: Compact: Exclude empty pubs / awards. 2015-11-05 11:21:00 -05:00
d99a99b3dc Update CSS filename for "compact" theme. 2015-11-05 01:13:31 -05:00
7435ea4aaa Bump version to 0.4.0. 2015-11-05 01:02:25 -05:00
JD
d224a6c267 Merge pull request #6 from fluentdesk/rel/v0.3.0-beta
rel/v0.3.0 beta
2015-11-02 19:26:17 -05:00
790ca0cc24 Update description. 2015-10-27 23:46:36 -04:00
928b9da331 Bump version. 2015-10-27 23:46:19 -04:00
ed0b286cf5 Bump version. 2015-10-27 20:43:38 -04:00
JD
29b00a6f22 Merge pull request #5 from fluentdesk/dev
Merge from dev.
2015-10-27 10:28:02 -04:00
ecb085ed10 Compact: Collapse jobs > 4 and use safe dates. 2015-10-27 10:30:59 -04:00
9c3d950af6 Compact: Use inline Markdown. 2015-10-27 09:06:36 -04:00
c9f116207e Introduce "Compact" theme. 2015-10-27 08:41:12 -04:00
6db7691c38 Unprivatize package.json. 2015-10-26 13:39:58 -04:00
JD
ae19fec60b Merge pull request #4 from fluentdesk/dev
Unprivatize package.json.
2015-10-26 13:38:37 -04:00
6a52ddb19c Rename to fluent-themes. 2015-10-26 13:36:18 -04:00
JD
30fd9222aa Merge pull request #3 from fluentdesk/dev
Rename to fluent-themes.
2015-10-26 13:32:54 -04:00
JD
2bdaaac9a4 Merge pull request #2 from fluentdesk/dev
v0.3.1 patch
2015-10-26 08:09:15 -04:00
b8863afd56 Remove YML template for now. 2015-10-26 08:03:54 -04:00
7c1f12198e Add explicit CSS files for PDFs. 2015-10-26 08:03:03 -04:00
485e4b6316 Bump version. 2015-10-26 04:57:15 -04:00
e7c820c9c3 Reorganize themes. 2015-10-26 04:57:06 -04:00
JD
a30395cf29 Merge pull request #1 from fluentdesk/dev
Interim release changes
2015-10-26 04:54:52 -04:00
71919429aa Fix HTML headers. 2015-10-26 00:40:23 -04:00
759a406d72 Fix comment title. 2015-10-18 02:01:08 -04:00
4e5e96733a Merge remote-tracking branch 'refs/remotes/origin/master' into dev 2015-10-18 02:00:45 -04:00
2f7a5b58dc Merge remote-tracking branch 'refs/remotes/origin/dev' 2015-10-10 21:50:45 -04:00
39b33642b8 Remove value judgment. 2015-10-10 21:49:56 -04:00
eac06fb7a9 Update file headers for "modern" theme. 2015-10-10 17:53:59 -04:00
54b0a7d3a9 Update README. 2015-10-10 17:45:29 -04:00
e45f9aece7 Introduce Markdown templates.
Add a baseline Markdown template to all themes.
2015-10-10 17:14:32 -04:00
e82a25dc9c Update package.json version. 2015-10-10 17:10:47 -04:00
0424c6d15b Rename "informatic" to "modern". 2015-10-09 15:37:16 -04:00
31 changed files with 1031 additions and 74 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
# It is pitch black. You are likely to be eaten by a grue.
informatic-new/

View File

@ -1,11 +1,32 @@
watermark
=========
Dress up your resume for Halloween. Resume/CV themes for [FluentCV][1] and [FluentCMD][2] live here.
fluent-themes
=============
Resume themes for [FluentCV][1] and [FluentCV command line][2].
- `minimist`: A no-frills theme.
- `modern`: A middle of the road theme with a modern look 'n feel.
- `hello-world`: A simple-as-possible example theme.
- `compact`: A compact theme.
- New themes forthcoming.
## 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
[2]: https://github.com/fluentdesk/fluentcv
[3]: ../LICENSE.md

View File

@ -1,11 +1,10 @@
{
"name": "watermark",
"version": "0.1.0",
"description": "Themes and exemplars for FluentCV.",
"private": true,
"name": "fluent-themes",
"version": "0.4.0-beta",
"description": "Resume themes for FluentCV.",
"repository": {
"type": "git",
"url": "https://github.com/fluentdesk/watermark.git"
"url": "https://github.com/fluentdesk/fluent-themes.git"
},
"keywords": [
"resume",
@ -16,8 +15,8 @@
"author": "James M. Devlin",
"license": "MIT",
"bugs": {
"url": "https://github.com/fluentdesk/watermark/issues"
"url": "https://github.com/fluentdesk/fluent-themes/issues"
},
"homepage": "https://github.com/fluentdesk/watermark",
"homepage": "https://github.com/fluentdesk/fluent-themes",
"dependencies": { }
}

View File

@ -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

View File

@ -0,0 +1,77 @@
html, body, main, section, header, ul, p, h1, h2, h3 {
font-family: Helvetica, sans-serif;
font-size: 12px;
margin: 0; padding: 0;
display: block;
}
a {
color: #0064BD;
text-decoration: none;
}
a:visited {
color: #7B0796;
}
a:hover {
text-decoration: underline;
}
h2 {
text-transform: uppercase;
}
h3 {
font-size: 1em;
}
main {
padding: 15px;
max-width: 700px;
margin: 0 auto;
}
section {
margin-top: 1em;
}
li {
margin-left: 2em;
}
h3 {
margin-top: 1em;
}
p, li {
text-align: justify;
}
.tenure {
float: right;
}
thead {
display: none;
}
main > header {
width: 100%;
float: left;
margin-bottom: 1em;
}
main > header > h1 {
float: left;
font-size: 1.5em;
}
#contact {
float: right;
}
#contact > div {
display: inline-block;
margin-left: 5px;
}

View File

@ -0,0 +1,169 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{{ r.basics.name }}</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'>
<link href="html.css" rel="stylesheet" type="text/css">
</head>
<body>
<main>
<header>
<h1>{{ r.basics.name }}</h1>
<div id="contact">
{% if (r.basics.email) { %}<div class="email">{{ r.basics.email }}</div>{% } %}
{% if (r.basics.phone) { %}<div class="phone">{{ r.basics.phone }}</div>{% } %}
{% if (r.basics.website) { %}<div class="website"><a href="{{ r.basics.website }}">{{ r.basics.website }}</a></div>{% } %}
</div>
</header>
{% if ( r.basics.summary && r.basics.summary.length ) { %}
<section id="summary">
{{ r.basics.summary|md }}
</section>
{% } %}
{% if ( r.skills && r.skills.length ) { %}
<section id="skills">
<header>
<h2>Skills</h2><hr>
</header>
<table>
<thead>
<tr>
<th>Skill</th>
<th>Keywords</th>
</tr>
</thead>
<tbody>
{% r.skills.forEach( function( skill, idx, ar) { %}
<tr>
<td style="width: 25%;">{{ skill.name }}</td>
<td class="keywords">{% print( (skill.keywords && skill.keywords.length && skill.keywords.join(', ')) || '[None Specified]' ) %}</td>
</tr>
{% }); %}
</tbody>
</table>
</section>
{% } %}
{% if ( r.work && r.work.length ) { %}
<section id="employment">
<header>
<h2>Employment</h2><hr>
</header>
{% r.work.forEach( function( proj, idx, ar) { %}
{% if( idx < 4 ) { %}
<h3><em>{{ proj.position }}</em>, {{ proj.company }} <span class="tenure">{{ proj.startDate }} &mdash; {{ proj.endDate }}<span></h3>
<p style="clear: both;">{{ proj.summary|md }}</p>
{% if( proj.highlights ) { %}
<ul>
{% proj.highlights.forEach( function( high, idx, ar) { %}
<li>{{ high|mdin }}</li>
{% }); %}
</ul>
{% } %}
{% } else { %}
{% if( idx === 4 ) { %}
<h3>Previously... <span class="tenure">{{ r.work[ r.work.length - 1 ].safeStartDate.format('YYYY') }} &mdash; {{ proj.safeEndDate.format('YYYY') }}<span></h3>
<p style="clear: both;">Prior to {{ r.work[ 3 ].company }}, I worked on a range of projects for companies large and small.</p>
<ul>
{% } %}
<li>{{ proj.position }}, {{ proj.company }}</li>
{% if( idx === ar.length - 1 ) { %}
</ul>
{% } %}
{% } %}
{% }); %}
</section>
{% } %}
{% if ( r.education && r.education.length ) { %}
<section id="education">
<header>
<h2>Education</h2><hr>
</header>
{% r.education.forEach( function( edu, idx, ar) { %}
<h3>{{ edu.institution }} <span class="tenure">{{ edu.safeStartDate.format('YYYY') }} &mdash; {{ edu.safeEndDate.format('YYYY') }}<span></h3>
<p style="clear: both;">{{ edu.area|md }}</p>
{% }); %}
</section>
{% } %}
{% if ( r.volunteer && r.volunteer.length ) { %}
<section id="volunteer">
<header>
<h2>Volunteer</h2><hr>
</header>
{% r.volunteer.forEach( function( vol, idx, ar ) { %}
<h3>{{ vol.organization }} <span class="tenure">{{ vol.safeStartDate.format('YYYY') }} &mdash; {{ vol.safeEndDate.format('YYYY') }}<span></h3>
<p style="clear: both;">{{ vol.summary|md }}</p>
{% if( vol.highlights ) { %}
<ul>
{% vol.highlights.forEach( function( high, idx, ar) { %}
<li>{{ high|md }}</li>
{% }); %}
</ul>
{% } %}
{% }); %}
</section>
{% } %}
{% if( r.publications && r.publications.length ) { %}
<section id="publications">
<header>
<h2>Publications</h2><hr>
</header>
<span class="fa fa-lg fa-trophy"></span>
{% r.publications.forEach( function( pub, idx, ar) { %}
<h4>
{% if( pub.website ) { %}
<span class="res-label"><a href="{{ pub.website }}" ></span>{{ pub.name }}</a>,&nbsp;{{ pub.publisher }}
{% } else { %}
<span class="res-label">{{ pub.name }}</span>,&nbsp;{{ pub.publisher }}
{% } %}
<span class="tenure">{{ pub.safeReleaseDate.format('YYYY') }}</span>
</h4>
{{ pub.summary|md }}
{% }); %}
</section>
{% } %}
{% if( r.awards && r.awards.length ) { %}
<section id="awards">
<header>
<h2>Awards</h2><hr>
</header>
<span class="fa fa-lg fa-trophy"></span>
{% r.awards.forEach( function( award, idx, ar) { %}
<h4><span class="res-label">{{ award.title }}</span>, {{ award.awarder }} <span class="tenure">{{ award.safeDate.format('YYYY') }}</span></h4>
{{ award.summary|md }}
{% }); %}
</section>
{% } %}
</main>
</body>
</html>

View File

@ -0,0 +1,77 @@
html, body, main, section, header, ul, p, h1, h2, h3 {
font-family: Helvetica, sans-serif;
font-size: 12px;
margin: 0; padding: 0;
display: block;
}
a {
color: #0064BD;
text-decoration: none;
}
a:visited {
color: #7B0796;
}
a:hover {
text-decoration: underline;
}
h2 {
text-transform: uppercase;
}
h3 {
font-size: 1em;
}
main {
padding: 15px;
max-width: 700px;
margin: 0 auto;
}
section {
margin-top: 1em;
}
li {
margin-left: 2em;
}
h3 {
margin-top: 1em;
}
p, li {
text-align: justify;
}
.tenure {
float: right;
}
thead {
display: none;
}
main > header {
width: 100%;
float: left;
margin-bottom: 1em;
}
main > header > h1 {
float: left;
font-size: 1.5em;
}
#contact {
float: right;
}
#contact > div {
display: inline-block;
margin-left: 5px;
}

View File

@ -0,0 +1,171 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{{ r.basics.name }}</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,700italic' rel='stylesheet' type='text/css'>
<style>
{{ cssInfo.data }}
</style>
</head>
<body>
<main>
<header>
<h1>{{ r.basics.name }}</h1>
<div id="contact">
{% if (r.basics.email) { %}<div class="email">{{ r.basics.email }}</div>{% } %}
{% if (r.basics.phone) { %}<div class="phone">{{ r.basics.phone }}</div>{% } %}
{% if (r.basics.website) { %}<div class="website"><a href="{{ r.basics.website }}">{{ r.basics.website }}</a></div>{% } %}
</div>
</header>
{% if ( r.basics.summary && r.basics.summary.length ) { %}
<section id="summary">
{{ r.basics.summary|md }}
</section>
{% } %}
{% if ( r.skills && r.skills.length ) { %}
<section id="skills">
<header>
<h2>Skills</h2><hr>
</header>
<table>
<thead>
<tr>
<th>Skill</th>
<th>Keywords</th>
</tr>
</thead>
<tbody>
{% r.skills.forEach( function( skill, idx, ar) { %}
<tr>
<td style="width: 25%;">{{ skill.name }}</td>
<td class="keywords">{% print( (skill.keywords && skill.keywords.length && skill.keywords.join(', ')) || '[None Specified]' ) %}</td>
</tr>
{% }); %}
</tbody>
</table>
</section>
{% } %}
{% if ( r.work && r.work.length ) { %}
<section id="employment">
<header>
<h2>Employment</h2><hr>
</header>
{% r.work.forEach( function( proj, idx, ar) { %}
{% if( idx < 4 ) { %}
<h3><em>{{ proj.position }}</em>, {{ proj.company }} <span class="tenure">{{ proj.startDate }} &mdash; {{ proj.endDate }}<span></h3>
<p style="clear: both;">{{ proj.summary|md }}</p>
{% if( proj.highlights ) { %}
<ul>
{% proj.highlights.forEach( function( high, idx, ar) { %}
<li>{{ high|mdin }}</li>
{% }); %}
</ul>
{% } %}
{% } else { %}
{% if( idx === 4 ) { %}
<h3>Previously... <span class="tenure">{{ r.work[ r.work.length - 1 ].safeStartDate.format('YYYY') }} &mdash; {{ proj.safeEndDate.format('YYYY') }}<span></h3>
<p style="clear: both;">Prior to {{ r.work[ 3 ].company }}, I worked on a range of projects for companies large and small.</p>
<ul>
{% } %}
<li>{{ proj.position }}, {{ proj.company }}</li>
{% if( idx === ar.length - 1 ) { %}
</ul>
{% } %}
{% } %}
{% }); %}
</section>
{% } %}
{% if ( r.education && r.education.length ) { %}
<section id="education">
<header>
<h2>Education</h2><hr>
</header>
{% r.education.forEach( function( edu, idx, ar) { %}
<h3>{{ edu.institution }} <span class="tenure">{{ edu.safeStartDate.format('YYYY') }} &mdash; {{ edu.safeEndDate.format('YYYY') }}<span></h3>
<p style="clear: both;">{{ edu.area|md }}</p>
{% }); %}
</section>
{% } %}
{% if ( r.volunteer && r.volunteer.length ) { %}
<section id="volunteer">
<header>
<h2>Volunteer</h2><hr>
</header>
{% r.volunteer.forEach( function( vol, idx, ar ) { %}
<h3>{{ vol.organization }} <span class="tenure">{{ vol.safeStartDate.format('YYYY') }} &mdash; {{ vol.safeEndDate.format('YYYY') }}<span></h3>
<p style="clear: both;">{{ vol.summary|md }}</p>
{% if( vol.highlights ) { %}
<ul>
{% vol.highlights.forEach( function( high, idx, ar) { %}
<li>{{ high|md }}</li>
{% }); %}
</ul>
{% } %}
{% }); %}
</section>
{% } %}
{% if( r.publications && r.publications.length ) { %}
<section id="publications">
<header>
<h2>Publications</h2><hr>
</header>
<span class="fa fa-lg fa-trophy"></span>
{% r.publications.forEach( function( pub, idx, ar) { %}
<h4>
{% if( pub.website ) { %}
<span class="res-label"><a href="{{ pub.website }}" ></span>{{ pub.name }}</a>,&nbsp;{{ pub.publisher }}
{% } else { %}
<span class="res-label">{{ pub.name }}</span>,&nbsp;{{ pub.publisher }}
{% } %}
<span class="tenure">{{ pub.safeReleaseDate.format('YYYY') }}</span>
</h4>
{{ pub.summary|md }}
{% }); %}
</section>
{% } %}
{% if( r.awards && r.awards.length ) { %}
<section id="awards">
<header>
<h2>Awards</h2><hr>
</header>
<span class="fa fa-lg fa-trophy"></span>
{% r.awards.forEach( function( award, idx, ar) { %}
<h4><span class="res-label">{{ award.title }}</span>, {{ award.awarder }} <span class="tenure">{{ award.safeDate.format('YYYY') }}</span></h4>
{{ award.summary|md }}
{% }); %}
</section>
{% } %}
</main>
</body>
</html>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
{#
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.
#}
<?mso-application progid="Word.Document"?>
<w:wordDocument xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve">

View File

@ -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 }}.

View File

@ -0,0 +1 @@
{# An empty CSS file. #}

View File

@ -41,7 +41,7 @@
{% r.skills.forEach( function( skill, idx, ar) { %}
<tr>
<td style="width: 25%;">{{ skill.name }}</td>
<td class="keywords">{% print( skill.keywords.join(', ') ) %}</td>
<td class="keywords">{% print( (skill.keywords && skill.keywords.length && skill.keywords.join(', ')) || '[None Specified]' ) %}</td>
</tr>
{% }); %}
</tbody>

View File

@ -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 }}
{% }); } %}

View File

@ -0,0 +1,65 @@
body {
margin: 0;
padding: 0;
font-family: 'Open Sans', sans-serif;
}
h1 {
font-size: 3em;
}
main {
max-width: 800px;
margin: 3em auto;
}
main > header {
position: relative;
}
thead {
display: none;
}
#contact {
width: 200px;
position: absolute;
right: 0;
bottom: 8px;
text-align: right;
font-size: 75%;
font-weight: 600;
}
#summary {
font-style: italic;
}
#employment h3, #employment .tenure {
font-size: 20px;
font-weight: bold;
}
#employment h3 {
float: left;
width: 100%;
}
.tenure {
color: #ABABAB;
float: right;
text-align: right;
}
.keywords {
color: #037FD6;
}
h2 {
font-size: 32px;
font-weight: 300;
}
td {
padding: 10px 0;
}

View File

@ -43,7 +43,7 @@
{% r.skills.forEach( function( skill, idx, ar) { %}
<tr>
<td style="width: 25%;">{{ skill.name }}</td>
<td class="keywords">{% print(skill.keywords.join(', ')); %}</td>
<td class="keywords">{% print( (skill.keywords && skill.keywords.length && skill.keywords.join(', ')) || '[None Specified]' ) %}</td>
</tr>
{% }); %}
</tbody>

View File

@ -1,6 +1,3 @@
{#
A plain TXT resume template for FluentCV's "informatic" theme.
#}
{{ r.basics.name }}
{% if (r.basics.email) { %}Email: {{ r.basics.email }}{% } %}
{% if (r.basics.phone) { %}Tel: {{ r.basics.phone }}{% } %}

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
{#
An MS Word resume template for FluentCV's "informatic" theme.
Uses the MS Word 2003 XML format for widest compatibility.
#}
<!--
[[[
title: Modern (PDF)
description: An HTML-driven PDF resume template for FluentCV's "modern" theme.
engine: Underscore
]]]
-->
<?mso-application progid="Word.Document"?>
<w:wordDocument xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve">
<w:ignoreSubtree w:val="http://schemas.microsoft.com/office/word/2003/wordml/sp2"/>

View File

@ -7,7 +7,7 @@ main {
}
body {
font-family: 'Lato', sans-serif;
font-family: 'Helvetica Neue', Helvetica, 'Lato', sans-serif;
font-size: 15px;
color: #333;
line-height: 1.42857143;
@ -92,13 +92,17 @@ a, a:visited {
font-weight: bold;
}
a:hover {
text-decoration: underline;
}
.defunct {
color: #989898;
font-weight: bold;
}
#summary > p > strong {
font-size: 150%;
font-size: 1.25em;
}
@ -193,3 +197,7 @@ a, a:visited {
text-transform: uppercase;
font-weight: normal;
}
.res-label {
font-style: italic;
}

View File

@ -1,5 +1,9 @@
<!DOCTYPE html>
{# An HTML 5 resume template for FluentCV's "informatic" theme. #}
<!-- [[[
title: Modern (HTML)
description: An HTML resume template for FluentCV's "modern" theme.
engine: Underscore
]]] -->
<html>
<head>
<meta charset="utf-8">
@ -8,6 +12,7 @@
<title>{{ r.basics.name }}</title>
<link href='https://fonts.googleapis.com/css?family=Lato:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
{{ headFragment }}
{% if( cssInfo.file ) { %}
<link href="{{ cssInfo.file }}" rel="stylesheet" type="text/css">
{% } else { %}
@ -59,9 +64,11 @@
<strong>{{ skill.name }}</strong>
<div class="space-top labels">
{% if( skill.keywords && skill.keywords.length ) { %}
{% skill.keywords.forEach(function(kw) { %}
<span class="label label-keyword">{{ kw }}</span>
{% }); %}
{% } %}
</div>
</div>
</li>
@ -83,9 +90,9 @@
<span class="fa fa-lg fa-building"></span>
{% r.work.forEach( function( proj, idx, ar) { %}
{% if( proj.website && proj.website.length ) { %}
<h4>{{ proj.position }}, <a href="{{ proj.website|raw }}">{{ proj.company }}</a></h4>
<h4><span class="res-label">{{ proj.position }}</span>, <a href="{{ proj.website|raw }}">{{ proj.company }}</a></h4>
{% } else { %}
<h4>{{ proj.position }}, <span class="defunct">{{ proj.company }}</span></h4>
<h4><span class="res-label">{{ proj.position }}</span>, <span class="defunct">{{ proj.company }}</span></h4>
{% } %}
<span class="tenure">{{ proj.startDate }}&mdash;{{ proj.endDate }}</span>
{{ proj.summary|md }}
@ -126,7 +133,7 @@
</section>
{% } %}
{% if( r.awards ) { %}
{% if( r.awards && r.awards.length ) { %}
<hr>
<section id="awards">
<header>
@ -134,14 +141,14 @@
</header>
<span class="fa fa-lg fa-trophy"></span>
{% r.awards.forEach( function( award, idx, ar) { %}
<h4><em>{{ award.title }}</em>, {{ award.awarder }}</h4>
<h4><span class="res-label">{{ award.title }}</span>, {{ award.awarder }}</h4>
<span class="tenure">{{ award.date }}</span>
{{ award.summary|md }}
{% }); %}
</section>
{% } %}
{% if( r.publications ) { %}
{% if( r.publications && r.publications.length ) { %}
<hr>
<section id="publications">
<header>
@ -151,13 +158,15 @@
{% r.publications.forEach( function( pub, idx, ar) { %}
<h4>
{% if( pub.website ) { %}
<a href="{{ pub.website }}" >{{ pub.name }}</a>,&nbsp;{{ pub.publisher }}
<span class="res-label"><a href="{{ pub.website }}" ></span>{{ pub.name }}</a>,&nbsp;{{ pub.publisher }}
{% } else { %}
{{ pub.name }},&nbsp;{{ pub.publisher }}
<span class="res-label">{{ pub.name }}</span>,&nbsp;{{ pub.publisher }}
{% } %}
</h4>
<span class="tenure">Published on: {{ pub.releaseDate }}</span>
<p>{{ pub.summary }}</p>
{{ pub.summary|md }}
{% }); %}
</section>
{% } %}
@ -171,9 +180,9 @@
<span class="fa fa-lg fa-child"></span>
{% r.volunteer.forEach( function( vol, idx, ar) { %}
{% if( vol.website && vol.website.length ) { %}
<h4>{{ vol.position }}, <a href="{{ vol.website|raw }}">{{ vol.organization }}</a></h4>
<h4><span class="res-label">{{ vol.position }}</span>, <a href="{{ vol.website|raw }}">{{ vol.organization }}</a></h4>
{% } else { %}
<h4>{{ vol.position }}, <span class="defunct">{{ vol.organization }}</span></h4>
<h4><span class="res-label">{{ vol.position }}</span>, <span class="defunct">{{ vol.organization }}</span></h4>
{% } %}
<span class="tenure">{{ vol.startDate }}&mdash;{{ vol.endDate }}</span>
{{ vol.summary|md }}

View File

@ -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 }}
{% }); } %}

View File

@ -0,0 +1,203 @@
* {
box-sizing: border-box;
}
main {
display: block;
}
body {
font-family: 'Helvetica Neue', Helvetica, 'Lato', sans-serif;
font-size: 15px;
color: #333;
line-height: 1.42857143;
background-color: #F0F0F0;
margin: 0;
padding: 0;
}
/* Typical page borders are awkward when rendered to PDF. */
body.pdf {
background-color: #FFFFFF;
}
/* Adobe or wkhtmltopdf has issues with the <main> tag, so we use <div> for
the PDF case, <main> for the HTML case, and style both via an ID. */
#main {
background-color: #FFF;
margin: 10px;
padding: 10px;
border: 1px solid #E6E6E6;
}
body.pdf > #main {
border: none;
}
#container > header {
padding-top: 6em;
padding-bottom: 1em;
}
body.pdf #container > header {
padding: 0;
}
#main > #container > section {
margin-left: 5em;
position: relative;
display: block;
}
#main > #container > section > span.fa
{
position: absolute;
top: 4px;
left: -50px;
font-size: 30px;
color: #BFC1C3;
}
hr {
margin-top: 20px;
margin-bottom: 20px;
border: 0;
border-top: 1px solid #EEE;
}
.tenure {
font-size: 75%;
}
h1 {
margin: 0;
font-size: 46px;
}
h3 {
font-size: 24px;
color: #BFC1C3;
text-transform: uppercase;
font-weight: normal;
}
h4 {
margin-bottom: 0;
font-size: 18px;
}
a, a:visited {
color: #428BCA;
text-decoration: none;
font-weight: bold;
}
a:hover {
text-decoration: underline;
}
.defunct {
color: #989898;
font-weight: bold;
}
#summary > p > strong {
font-size: 1.25em;
}
.label-keyword {
display: inline-block;
background: #7eb0db;
color: white;
font-size: 0.9em;
padding: 5px;
border: 1px solid #357ebd;
border-radius: 5px;
margin-top: 2px;
}
.card-skills {
position: relative;
}
.card-nested {
min-height: 0;
margin-bottom: 10px;
border-width: 1px 0 0 0;
}
.card {
background: #FFF;
border-radius: 3px;
padding: 10px;
}
.skill-level {
border-radius: 3px;
position: absolute;
top: 10px;
bottom: 10px;
left: 0;
width: 10px;
box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.5);
}
.skill-level .skill-progress {
position: absolute;
border-radius: 3px;
bottom: 0;
width: 100%;
-webkit-transition: height 1s ease;
}
.skill-level .skill-progress.beginner {
height: 50%;
background: #e74c3c;
}
.skill-level .skill-progress.intermediate {
height: 70%;
background: #f1c40f;
}
.skill-level .skill-progress.advanced {
height: 80%;
background: #428bca;
}
.skill-level .skill-progress.master {
height: 95%;
background: #5cb85c;
}
.skill-info {
margin-left: 10px;
}
@media (max-width: 480px) {
.skill-info {
margin-left: 20px;
}
}
.list-unstyled {
padding-left: 0;
list-style: none;
}
.card-skills {
position: relative;
}
.space-top {
margin-top: 10px;
}
#container {
max-width: 800px;
margin: 0 auto;
}
#elevator-pitch {
text-align: center;
font-size: 24px;
color: #BFC1C3;
text-transform: uppercase;
font-weight: normal;
}
.res-label {
font-style: italic;
}

View File

@ -1,17 +1,24 @@
<!DOCTYPE html>
{# An HTML 5 PDF resume template for FluentCV's "informatic" theme. #}
<!-- [[[
title: Modern (PDF)
description: An HTML-driven PDF resume template for FluentCV's "modern" theme.
engine: Underscore
]]] -->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ r.basics.name }}</title>
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lato:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
{{ headFragment }}
<style>
{{ cssInfo.data }}
</style>
</head>
<body class="pdf">
<div id="main">
<body>
<main id="main">
<div id="container">
<header>
<h1>{{ r.basics.name }}</h1>
@ -53,9 +60,11 @@
<strong>{{ skill.name }}</strong>
<div class="space-top labels">
{% if( skill.keywords && skill.keywords.length ) { %}
{% skill.keywords.forEach(function(kw) { %}
<span class="label label-keyword">{{ kw }}</span>
{% }); %}
{% } %}
</div>
</div>
</li>
@ -77,9 +86,9 @@
<span class="fa fa-lg fa-building"></span>
{% r.work.forEach( function( proj, idx, ar) { %}
{% if( proj.website && proj.website.length ) { %}
<h4>{{ proj.position }}, <a href="{{ proj.website|raw }}">{{ proj.company }}</a></h4>
<h4><span class="res-label">{{ proj.position }}</span>, <a href="{{ proj.website|raw }}">{{ proj.company }}</a></h4>
{% } else { %}
<h4>{{ proj.position }}, <span class="defunct">{{ proj.company }}</span></h4>
<h4><span class="res-label">{{ proj.position }}</span>, <span class="defunct">{{ proj.company }}</span></h4>
{% } %}
<span class="tenure">{{ proj.startDate }}&mdash;{{ proj.endDate }}</span>
{{ proj.summary|md }}
@ -120,7 +129,7 @@
</section>
{% } %}
{% if( r.awards ) { %}
{% if( r.awards && r.awards.length ) { %}
<hr>
<section id="awards">
<header>
@ -128,14 +137,14 @@
</header>
<span class="fa fa-lg fa-trophy"></span>
{% r.awards.forEach( function( award, idx, ar) { %}
<h4><em>{{ award.title }}</em>, {{ award.awarder }}</h4>
<h4><span class="res-label">{{ award.title }}</span>, {{ award.awarder }}</h4>
<span class="tenure">{{ award.date }}</span>
{{ award.summary|md }}
{% }); %}
</section>
{% } %}
{% if( r.publications ) { %}
{% if( r.publications && r.publications.length ) { %}
<hr>
<section id="publications">
<header>
@ -145,20 +154,19 @@
{% r.publications.forEach( function( pub, idx, ar) { %}
<h4>
{% if( pub.website ) { %}
<a href="{{ pub.website }}" >{{ pub.name }}</a>
<span class="res-label"><a href="{{ pub.website }}" ></span>{{ pub.name }}</a>,&nbsp;{{ pub.publisher }}
{% } else { %}
{{ pub.name }}
<span class="res-label">{{ pub.name }}</span>,&nbsp;{{ pub.publisher }}
{% } %}
,&nbsp;
{{ pub.publisher }}
</h4>
<span class="tenure">Published on: {{ pub.releaseDate }}</span>
<p>{{ pub.summary }}</p>
{{ pub.summary|md }}
{% }); %}
</section>
{% } %}
{% if ( r.volunteer && r.volunteer.length ) { %}
<hr>
<section id="volunteer">
@ -168,9 +176,9 @@
<span class="fa fa-lg fa-child"></span>
{% r.volunteer.forEach( function( vol, idx, ar) { %}
{% if( vol.website && vol.website.length ) { %}
<h4>{{ vol.position }}, <a href="{{ vol.website|raw }}">{{ vol.organization }}</a></h4>
<h4><span class="res-label">{{ vol.position }}</span>, <a href="{{ vol.website|raw }}">{{ vol.organization }}</a></h4>
{% } else { %}
<h4>{{ vol.position }}, <span class="defunct">{{ vol.organization }}</span></h4>
<h4><span class="res-label">{{ vol.position }}</span>, <span class="defunct">{{ vol.organization }}</span></h4>
{% } %}
<span class="tenure">{{ vol.startDate }}&mdash;{{ vol.endDate }}</span>
{{ vol.summary|md }}
@ -186,7 +194,6 @@
</section>
{% } %}
{% if( r.elevatorPitch ) { %}
<hr>
<section id='elevator-pitch'>
@ -195,6 +202,6 @@
{% } %}
</div>
</div>
</main>
</body>
</html>

View File

@ -0,0 +1,36 @@
{#
modern/txt.txt
A plain text 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.company }} ({{ proj.startDate }} — {{ proj.endDate }})
{{ 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.startDate }} — {{ edu.endDate }})
{{ edu.area }}
{% if( edu.courses ) { %}{% edu.courses.forEach( function( course, idx, ar) { %}
- {{ course }}
{% }); } }); } %}