summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rwxr-xr-xschemeato135
-rw-r--r--static/css/extra-style.css31
-rw-r--r--static/css/fonts.css23
-rw-r--r--static/css/normalize.css427
-rw-r--r--static/css/style.css364
-rw-r--r--static/files/publickey.hello@elenq.tech.txt34
-rw-r--r--static/fonts/LatoLatin-Light.eotbin0 -> 67508 bytes
-rw-r--r--static/fonts/LatoLatin-Light.ttfbin0 -> 151856 bytes
-rw-r--r--static/fonts/LatoLatin-Light.woffbin0 -> 72604 bytes
-rw-r--r--static/fonts/LatoLatin-Light.woff2bin0 -> 43468 bytes
-rw-r--r--static/fonts/LatoLatin-Regular.eotbin0 -> 68135 bytes
-rw-r--r--static/fonts/LatoLatin-Regular.ttfbin0 -> 148540 bytes
-rw-r--r--static/fonts/LatoLatin-Regular.woffbin0 -> 72456 bytes
-rw-r--r--static/fonts/LatoLatin-Regular.woff2bin0 -> 43760 bytes
-rw-r--r--static/fonts/OFL.txt94
-rw-r--r--static/img/faces/ekaitz.jpgbin0 -> 11507 bytes
-rw-r--r--templates/_defs.scm79
-rw-r--r--templates/_logo.svg8
-rw-r--r--templates/_structure.scm0
-rw-r--r--templates/en/_ethics.md13
-rw-r--r--templates/en/_products.md29
-rw-r--r--templates/en/_summary.md12
-rw-r--r--templates/en/index.html86
-rw-r--r--templates/es/_ethics.md16
-rw-r--r--templates/es/_products.md31
-rw-r--r--templates/es/_summary.md13
-rw-r--r--templates/es/index.html88
28 files changed, 1485 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1c0f43e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+www
+discarded
diff --git a/schemeato b/schemeato
new file mode 100755
index 0000000..cd940d6
--- /dev/null
+++ b/schemeato
@@ -0,0 +1,135 @@
+#|
+#!/usr/bin/env sh
+exec chibi-scheme -A `dirname $0` $0 $@
+|#
+(import
+ (scheme base)
+ (srfi 1)
+ (srfi 69)
+ (srfi 115)
+ (chibi)
+ (chibi app)
+ (chibi config)
+ (chibi filesystem)
+ (chibi process)
+ (chibi io)
+ (chibi pathname)
+ (chibi string)
+ (chibi sxml))
+
+; - [X] Read all the locales
+; - [ ] Prepare needed variables per file:
+; - [X] List of languages available
+; - [X] Current language
+; - [ ] Current file
+; - [X] Markdown parser
+; - [X] pandoc
+; - [ ] Check how to do it in scheme
+; - [ ] Some more: check schiumato for reference
+; - [X] `load` or `eval` files in the created environment and extract their
+; exports to dump them to target folder
+; - [ ] deal with input arguments or config, that can be cool for language
+; selection and directory config.
+; - [ ] Move globs to default config stuff.
+; - [ ] Make a `new` command that creates the file structure and the default
+; configuration file
+
+(define (string-startswith? str char)
+ (string-cursor=?
+ (string-cursor-start str)
+ (string-find str (lambda (y) (char=? y char)))))
+
+; Move this to input/config parameters
+(define staticdir "static")
+(define templatedir "templates")
+(define outdir "www")
+
+(define (md-to-html md-text)
+ "Markdown to HTML converter using external Pandoc command"
+ (call-with-process-io "pandoc"
+ (lambda (pid in out err)
+ (display md-text in)
+ (close-output-port in)
+ (let ((res (port->string out)))
+ (waitpid pid 0)
+ res))))
+
+(define (load-templates)
+ "Read templates `templatedir`.
+ Returns them as a alist where keys are the filename of the template relative
+ to the `templatedir` and the values are the contents of the file."
+ (directory-fold-tree
+ templatedir
+ #f
+ #f
+ (lambda (file acc)
+ (if (or (string-startswith? (path-strip-directory file) #\.)
+ (string-startswith? (path-strip-directory file) #\_))
+ acc
+ (cons (list (path-relative-to file templatedir)
+ (call-with-input-file
+ file
+ (lambda (p)
+ (let loop ((x (read p)))
+ (if (eof-object? x)
+ '()
+ (cons x (loop (read p))))))))
+ acc)))
+ '()))
+
+(define (render-template tpl env)
+ "Render one template"
+ (let* ((code (let ((codelist (cdr tpl)))
+ (reduce (lambda (x acc)
+ (append x acc))
+ '()
+ codelist)))
+ (fullcode (append env code)))
+ (eval fullcode)))
+
+(define (copy-static)
+ "Copy static directory in output directory"
+ (directory-fold-tree
+ staticdir
+ #f
+ #f
+ (lambda (file acc)
+ (let ((output (make-path outdir file)))
+ (create-directory* (path-directory output))
+ (call-with-output-file output
+ (lambda (x)
+ (send-file file x)))))
+ #\null))
+
+(define (include-template name)
+ ; TODO make template loader
+ #f)
+
+(define (create-output cfg spec . args)
+ "Dumps the templates in the output directory"
+ (let ((templates (load-templates)))
+ (or (create-directory* outdir) (error "Unable to create output directory"))
+ (display "Copying static files...")
+ (newline)
+ (copy-static)
+ (let* ((env `(let ((include-template ,include-template)))))
+ (for-each
+ (lambda (x)
+ (let ((outfile (make-path outdir (car x))))
+ (or (create-directory* (path-directory outfile))
+ (error "Unable to create directory"))
+ (call-with-output-file
+ outfile
+ (lambda (f)
+ (display (render-template x env) f)))))
+ templates))))
+
+
+(run-application
+ `(schemeato
+ "Schemeato: an easy to translate static site generator"
+ (or
+ (create "Create output from current folder" ,create-output)
+ (help "Show this help" (,app-help-command))))
+ (command-line)
+ #;(conf-load "conf.scm"))
diff --git a/static/css/extra-style.css b/static/css/extra-style.css
new file mode 100644
index 0000000..c7a7f06
--- /dev/null
+++ b/static/css/extra-style.css
@@ -0,0 +1,31 @@
+.summary{
+ font-size: 115%;
+ padding-top: 2rem;
+}
+
+#hamburger, #hamburger-label{
+ display: none;
+}
+
+#hamburger-label{
+ font-size: 180%;
+ cursor: pointer;
+}
+
+.active{
+ text-decoration: underline;
+}
+
+.mainheader{position: relative;}
+
+@media (max-width: 800px){
+ #hamburger-label {
+ display: inline-block;
+ }
+ .navbar-contents {
+ display: none;
+ }
+ input#hamburger:checked ~ .navbar-contents {
+ display: block;
+ }
+}
diff --git a/static/css/fonts.css b/static/css/fonts.css
new file mode 100644
index 0000000..ea9b2c9
--- /dev/null
+++ b/static/css/fonts.css
@@ -0,0 +1,23 @@
+/* Webfont: LatoLatin-Regular */@font-face {
+ font-family: 'LatoLatinWeb';
+ src: url('/static/fonts/LatoLatin-Regular.eot'); /* IE9 Compat Modes */
+ src: url('/static/fonts/LatoLatin-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('/static/fonts/LatoLatin-Regular.woff2') format('woff2'), /* Modern Browsers */
+ url('/static/fonts/LatoLatin-Regular.woff') format('woff'), /* Modern Browsers */
+ url('/static/fonts/LatoLatin-Regular.ttf') format('truetype');
+ font-style: normal;
+ font-weight: normal;
+ text-rendering: optimizeLegibility;
+}
+
+/* Webfont: LatoLatin-Light */@font-face {
+ font-family: 'LatoLatinLightWeb';
+ src: url('/static/fonts/LatoLatin-Light.eot'); /* IE9 Compat Modes */
+ src: url('/static/fonts/LatoLatin-Light.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('/static/fonts/LatoLatin-Light.woff2') format('woff2'), /* Modern Browsers */
+ url('/static/fonts/LatoLatin-Light.woff') format('woff'), /* Modern Browsers */
+ url('/static/fonts/LatoLatin-Light.ttf') format('truetype');
+ font-style: normal;
+ font-weight: normal;
+ text-rendering: optimizeLegibility;
+}
diff --git a/static/css/normalize.css b/static/css/normalize.css
new file mode 100644
index 0000000..81c6f31
--- /dev/null
+++ b/static/css/normalize.css
@@ -0,0 +1,427 @@
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ * user zoom.
+ */
+
+html {
+ font-family: sans-serif; /* 1 */
+ -ms-text-size-adjust: 100%; /* 2 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+ margin: 0;
+}
+
+/* HTML5 display definitions
+ ========================================================================== */
+
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block; /* 1 */
+ vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+ display: none;
+}
+
+/* Links
+ ========================================================================== */
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+ font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+ border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+
+pre {
+ overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit; /* 1 */
+ font: inherit; /* 2 */
+ margin: 0; /* 3 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+ overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+ cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+ line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
+ * (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box; /* 2 */
+ box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+ border: 0; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+ font-weight: bold;
+}
+
+/* Tables
+ ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+td,
+th {
+ padding: 0;
+} \ No newline at end of file
diff --git a/static/css/style.css b/static/css/style.css
new file mode 100644
index 0000000..29cede2
--- /dev/null
+++ b/static/css/style.css
@@ -0,0 +1,364 @@
+html{
+ font-size: 80%;
+}
+
+/* Typography*/
+body{
+ font-family: "LatoLatinWeb", Helvetica, Arial, sans-serif;
+ line-height: 1.4;
+ color: #222;
+ background-color: #fff;
+ font-size: 1.5em;
+}
+p {
+ text-align: justify;
+}
+q, blockquote{
+ font-style: italic;
+}
+h1, h2, h3, h4, h5, h6 {
+ text-decoration: none;
+ margin-top: 2ex;
+ margin-bottom: 0;
+ font-weight: 300; }
+h1 {
+ font-size: 5.5rem;
+ line-height: 1.2;
+ text-align: center;
+ margin-bottom: 4rem;
+ margin-top: 0;
+ font-family: "LatoLatinLightWeb", Helvetica, Arial, sans-serif;
+}
+h1,h2,h3 { letter-spacing: -.1rem; }
+h4 { letter-spacing: -.08rem;}
+h5 { letter-spacing: -.05rem;}
+h6 { letter-spacing: 0}
+
+h2 { font-size: 2.8rem; }
+h3 { font-size: 2.3rem; }
+h4 { font-size: 2.1rem; }
+h5 { font-size: 1.8rem; }
+h6 { font-size: 1.5rem; }
+
+@media (min-width: 550px) {
+ h1 { font-size: 8.0rem; }
+ h2 { font-size: 3.2rem; }
+ h3 { font-size: 2.7rem; }
+ h4 { font-size: 2.2rem; }
+ h5 { font-size: 2.0rem; }
+ h6 { font-size: 1.7rem; }
+}
+a{
+ color: #1EAEDB;
+}
+hr{
+ border: 0
+}
+pre > code {
+ overflow: auto;
+ border: none;
+ border-radius: 0;
+}
+
+
+
+/* Utils */
+.text-center{
+ text-align: center;
+}
+.text-right{
+ text-align: right;
+}
+.text-justify{
+ text-align: justify;
+}
+.text-nodeco{
+ text-decoration: none;
+}
+.text-nodeco-black{
+ text-decoration: none;
+ color: #222;
+}
+.only-reader{
+ font-size: 0;
+}
+
+
+/* Sections*/
+section{
+ padding-bottom: 2rem;
+ margin-bottom: 0;
+}
+
+
+/* Images */
+img {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: 3ex;
+ margin-bottom: 3ex;
+}
+img.round{
+ border-radius: 50%;
+}
+
+
+/* Footer */
+.bar-bottom {
+ border-top: 1px solid #eee;
+ position: relative;
+ width: 100%;
+ margin: 0 auto;
+ margin-top: 10ex;
+ padding: 1rem 0;
+ box-sizing: border-box;
+
+ font-size: 70%;
+}
+
+
+/* Container */
+.container {
+ max-width: 900px;
+ margin: auto;
+ width: 80%;
+}
+@media(max-width: 550px){
+ .container{
+ padding-left: 20px;
+ padding-right: 20px;
+ }
+}
+
+
+/* Navbar */
+.mainheader{
+ top: 0;
+ display: block;
+ width: 100%;
+ background: #fff;
+ z-index: 99;
+ border-bottom: 1px solid #eee;
+ margin-bottom: 6.5rem;
+}
+@media(max-width: 550px){
+ .mainheader{
+ margin-bottom: 4rem;
+ }
+}
+.navbar {
+ width: 100%;
+ }
+.navbar-link,
+.navbar-control{
+ text-transform: uppercase;
+ font-size: 0.9rem;
+ font-weight: 600;
+ letter-spacing: .1rem;
+ text-decoration: none;
+ line-height: 6rem;
+ display: inline-block;
+ color: #222;
+ }
+.navbar-right,
+.navbar-left{
+ display: inline;
+}
+.navbar-separator{
+ margin: 0 auto;
+}
+/* Large devices everything inline and the header floating */
+@media (min-width: 801px) {
+ .mainheader{position: sticky;}
+ .link-right {
+ margin-left: 15px;
+ margin-right: 0px;
+ }
+ .link-left{
+ margin-right: 25px;
+ }
+ .nav-right{
+ text-align: right;
+ }
+ .navbar-right{
+ float: right;
+ }
+ .navbar-separator{
+ display: none;
+ }
+
+}
+/* Smaller devices leave the header at the top of the page and make it more
+ * vertical */
+@media (max-width: 800px){
+ /* Main navbar toggle */
+ /* TODO: BURGER? */
+ .navbar-right,
+ .navbar-left{
+ width: 100%;
+ min-width: 100%;
+ display: inline-flex;
+ flex: 1;
+ justify-content: space-around;
+ flex-flow: row;
+ }
+ .navbar-left{
+ flex-flow: row wrap;
+ }
+
+ .navbar-left .navbar-link{
+ margin-left: 3ex;
+ margin-right: 3ex;
+ }
+
+ .navbar-right .navbar-link{
+ margin: auto;
+ line-height: 5rem;
+ }
+}
+
+
+/* Title page */
+.title-image {
+ width: 90%;
+}
+.title-image path{
+ fill: #222;
+}
+@media (min-width: 550px){
+ .title-image { width: 60%; }
+}
+
+
+/* Cards: Image | text */
+.card-picture *{
+ height: auto;
+ width: 100%;
+}
+.card-picture{
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: 2ex;
+ margin-bottom: 2ex;
+ height: auto;
+ width: 150px;
+ min-width: 150px;
+}
+.card-picture-right{
+ order 2;
+}
+.card-data{
+ order: 1;
+}
+@media (min-width: 800px) { /*more than a tablet*/
+ .card{
+ margin-top: 1ex;
+ margin-bottom: 1ex;
+
+ width: 100%;
+ min-width: 100%;
+ display: inline-flex;
+ flex: 1;
+ -webkit-flex: 1; /* Safari 6.1+ */
+ -ms-flex: 1; /* IE 10 */
+ justify-content: space-around;
+ align-items: center;
+ }
+
+ .card-picture{
+ margin: 2ex;
+ margin-right: 4ex;
+ order: 0;
+ }
+ .card-picture-right{
+ margin: 2ex;
+ margin-left: 4ex;
+ order: 2;
+ }
+
+ .card-data{
+ flex-grow: 2;
+ flex-shrink: 2;
+ order: 1;
+ }
+}
+
+/* Anchors */
+a.anchor{
+ visibility: hidden;
+ text-decoration: none;
+ font-size: 0.8em;
+}
+h1:hover > a.anchor,
+h2:hover > a.anchor,
+h3:hover > a.anchor,
+h4:hover > a.anchor,
+h5:hover > a.anchor,
+h6:hover > a.anchor{
+ visibility: visible;
+}
+
+:root{
+ --bg-color: #FFF;
+ --tx-color: #222;
+ --link-color: #1EAEDB;
+ --border-color:#EEE;
+}
+@media (prefers-color-scheme: dark) {
+ :root {
+ --bg-color: #2F2F2F;
+ --tx-color: #FFF;
+ --link-color: #1EAEDB;
+ --border-color:#4A4A4A;
+ }
+}
+
+/* Overwrite colors to vars if supported */
+body{
+ color: var(--tx-color);
+ background-color: var(--bg-color);
+}
+.text-nodeco-black, .navbar-link{
+ color: var(--tx-color);
+}
+.title-image path{
+ fill: var(--tx-color);
+}
+.mainheader {
+ background-color: var(--bg-color);
+ border-color: var(--border-color);
+}
+a {
+ color: var(--link-color);
+}
+.bar-bottom {
+ border-color: var(--border-color);
+}
+
+
+
+.flex-cols{
+ width: 90%;
+}
+.col{
+ max-width: 100%;
+}
+@media (min-width: 550px) { /*more than a phone*/
+ .flex-cols{
+ display: inline-flex;
+ flex: 1;
+ align-items: center;
+ justify-content: space-around;
+ width: 100%;
+ min-width: 100%;
+ }
+ .col{
+ flex-grow: 1;
+ flex-shrink: 1;
+ flex-basis: 100px;
+ margin-left: 5%;
+ margin-right: 5%;
+ }
+
+}
diff --git a/static/files/publickey.hello@elenq.tech.txt b/static/files/publickey.hello@elenq.tech.txt
new file mode 100644
index 0000000..ddb4ca3
--- /dev/null
+++ b/static/files/publickey.hello@elenq.tech.txt
@@ -0,0 +1,34 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: OpenPGP.js v2.3.8
+Comment: http://openpgpjs.org
+
+xsBNBFlKNu4BCADnO0dweMwiVAAWmI51s7SXtCAgxEUdPMlzPADmAsz31lLc
+SIcsXW1lPfA0GDwvn4XvDjxW4RB/HKKpg04IbKFxFrfJ/1Vu0tpGe9H252JM
+nWBexc6oSCSKpuhG7/nLRO140v0xmdU+CZj3XPSLO73rIgYzSPV//j00kXGz
+z1rVLKv+3FlTSMJV411qQpP9P/Rwdad/txekXOURnvFLhDC0xJBIq4KMPolh
+/u0TkkYtPmRmn9U7YFeraiublSEQEGmX5rxuzJ+A6P+kVjWeOQxJuigiKKWR
+4E/gd2rvn8wSxafnbzS0uA1iQRgF0/It5pG1XeRUrJLJTQ2P0kfdQrEjABEB
+AAHNI2hlbGxvQGVsZW5xLnRlY2ggPGhlbGxvQGVsZW5xLnRlY2g+wsB1BBAB
+CAApBQJZSjbuBgsJBwgDAgkQQ7fiWdQmzT4EFQgKAgMWAgECGQECGwMCHgEA
+AGuWCACYylinKBY/sHtqqbqbw57A4QcP/E5LCDjIJyLB5LV5HFEaCqjPqpGP
+2F05S8to9BarFPMPKtvZbWy8u3wR9VHhVLkuLYGO15eNPgboylU/n1DEDAbt
+iTPv1wd4OStulIAU79LZj6RNkYAGYaLGetYMcWTXzJUN2WbER6IhR8uKKlb4
+480qUyjEN4uznO72WVZRnFRXCekk+q0yuURNQy4Z2IMKriALM0Ijj/VAsnyK
+i4KQCukFylcnG33rD7Dq9qPDAmHC0imWRXFDMIy/g7pZP6XtjwMp4MlpZ2oS
+w+JJlYwTgHd0nVVQ8TE6FWPN/mDZa6U4VWhlrOCTcecPP6sEzsBNBFlKNu4B
+CADdCy6ugZzxwQctqGzy0YMl0Uk4WQLrqQ4ZkvW0H5yhxnBzSC1YaZ+WQOLL
+bdParzS/0LRMa0WQikqLsC8uRQxXgWCBzjtPSmphFmOfAW9n8Fc5Ap8PAxjv
+M5Y+znOnx8ecZHcYx2l0BNV+9uWWRDx0t+gtNTeLlvYuCUF40WKG3USGZ1U8
++O3jhjbEII0sBdz45el516nEp0Uzc/usFQ3dJNPZ6ZK6M+YA7o/EfGfwVKVH
+A5L0lP26utDpBmmWoTfLVUFZ1lxrZCNJ9M4JGBJ0/xDmZw1GOCHeacF3ZuWP
+7JLcsSyukGKUzn6Sm9wwy73rAV8lhddd6EdGwgWWIsTbABEBAAHCwF8EGAEI
+ABMFAllKNu4JEEO34lnUJs0+AhsMAAA1lAgAlb0C/6Qev//zdnv1CUi+zotZ
+vNQQOSK7XDAfQlpMhwwuwrA5wR8Y43e1tEVutUaEE3wahW8smj8cb/C7SVBR
+5JvAQyqTESqCbGcrGOgUa8L2505pnEb6wrBmPfZ1STbQwK+Xw/meM3eVAzuq
+m2IgwaRbuLg3bJh8L45XVkDyzYJJDnugqfmnnUTy7jTHXLRNLatAdQdcKwbY
+9fSyzuU6BQn1vSdwZGDvkMC2UZ0ygBvyFDir9WmQbhTKNqDGfsz/XndGhujW
+IdBWSdVYr1/pYJ2/3M/6VS2rCzujpoip6dd96bSjhCQ3R6se/Z8hWxMqZyZD
+LCAjdtBXsrAnapFj7Q==
+=Yvv0
+-----END PGP PUBLIC KEY BLOCK-----
+
diff --git a/static/fonts/LatoLatin-Light.eot b/static/fonts/LatoLatin-Light.eot
new file mode 100644
index 0000000..865537d
--- /dev/null
+++ b/static/fonts/LatoLatin-Light.eot
Binary files differ
diff --git a/static/fonts/LatoLatin-Light.ttf b/static/fonts/LatoLatin-Light.ttf
new file mode 100644
index 0000000..6af1b85
--- /dev/null
+++ b/static/fonts/LatoLatin-Light.ttf
Binary files differ
diff --git a/static/fonts/LatoLatin-Light.woff b/static/fonts/LatoLatin-Light.woff
new file mode 100644
index 0000000..e7d4278
--- /dev/null
+++ b/static/fonts/LatoLatin-Light.woff
Binary files differ
diff --git a/static/fonts/LatoLatin-Light.woff2 b/static/fonts/LatoLatin-Light.woff2
new file mode 100644
index 0000000..b6d0288
--- /dev/null
+++ b/static/fonts/LatoLatin-Light.woff2
Binary files differ
diff --git a/static/fonts/LatoLatin-Regular.eot b/static/fonts/LatoLatin-Regular.eot
new file mode 100644
index 0000000..96a9035
--- /dev/null
+++ b/static/fonts/LatoLatin-Regular.eot
Binary files differ
diff --git a/static/fonts/LatoLatin-Regular.ttf b/static/fonts/LatoLatin-Regular.ttf
new file mode 100644
index 0000000..bcc5778
--- /dev/null
+++ b/static/fonts/LatoLatin-Regular.ttf
Binary files differ
diff --git a/static/fonts/LatoLatin-Regular.woff b/static/fonts/LatoLatin-Regular.woff
new file mode 100644
index 0000000..bf73a6d
--- /dev/null
+++ b/static/fonts/LatoLatin-Regular.woff
Binary files differ
diff --git a/static/fonts/LatoLatin-Regular.woff2 b/static/fonts/LatoLatin-Regular.woff2
new file mode 100644
index 0000000..a4d084b
--- /dev/null
+++ b/static/fonts/LatoLatin-Regular.woff2
Binary files differ
diff --git a/static/fonts/OFL.txt b/static/fonts/OFL.txt
new file mode 100644
index 0000000..6d2c416
--- /dev/null
+++ b/static/fonts/OFL.txt
@@ -0,0 +1,94 @@
+Copyright (c) 2010-2015, Łukasz Dziedzic (dziedzic@typoland.com),
+with Reserved Font Name Lato.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/static/img/faces/ekaitz.jpg b/static/img/faces/ekaitz.jpg
new file mode 100644
index 0000000..b73778f
--- /dev/null
+++ b/static/img/faces/ekaitz.jpg
Binary files differ
diff --git a/templates/_defs.scm b/templates/_defs.scm
new file mode 100644
index 0000000..765dc73
--- /dev/null
+++ b/templates/_defs.scm
@@ -0,0 +1,79 @@
+; Global to the file, use (set! lang "lang") to configure in languages
+(define lang "en")
+
+; UTILS -----------------------------------------------------------------------
+(define (anchored-h level title id)
+ `(,(string->symbol (string-append "h" (number->string level)))
+ (@ (id ,id))
+ ,title
+ (a (@ (href ,(string-append "#" id)) (class "anchor")) " ¶" )))
+
+
+(define (absurl-to-lang url)
+ (string-append "/" lang url))
+
+(define (header-link lr text title link active)
+ `(a (@ (class ,(string-append (if active "active " " ")
+ "navbar-link link-" lr))
+ (href ,link)
+ (title ,title))
+ ,text))
+
+(define (style href)
+ "Make <link> tags to add CSS"
+ `(link (@ (rel "stylesheet")
+ (href ,href))))
+
+(define (md markdown-text)
+ `(@raw ,(md-to-html markdown-text)))
+
+(define (logo-title) `(h1 (@raw ,(file->string "templates/_logo.svg"))))
+
+; BASE ------------------------------------------------------------------------
+(define (base title body)
+ `(html
+ (@ (lang ,lang))
+ (head
+ (meta (@ (charset "utf-8")))
+ (meta (@ (name "viewport")
+ (content "width=device-width, initial-scale=1")))
+ ,(style "/static/css/normalize.css")
+ ,(style "/static/css/style.css")
+ ,(style "/static/css/fonts.css")
+ ,(style "/static/css/extra-style.css")
+ (title ,title))
+ (body ,body)))
+
+
+; HEADER-----------------------------------------------------------------------
+(define (nav-link l)
+ (header-link "left"
+ (cdr (assq 'name l))
+ (cdr (assq 'title l))
+ (cdr (assq 'absurl l))
+ (or (assq 'active l) #f)))
+
+(define (lang-link l)
+ (header-link "right"
+ (cdr (assq 'name l))
+ (cdr (assq 'title l))
+ (cdr (assq 'absurl l))
+ (or (assq 'active l) #f)))
+
+(define (header links langs)
+ `(header
+ (@ (class mainheader))
+ (div (@ (class container))
+ (nav (@ (class navbar))
+ (label (@ (id hamburger-label)
+ (for "hamburger")
+ (class "navbar-link link-left")) (@raw "&#9776;"))
+ (input (@ (id "hamburger") (type checkbox)))
+
+ (div (@ (class navbar-contents))
+ (div (@ (class navbar-left))
+ ,(map nav-link links))
+
+ (div (@ (class "navbar-right"))
+ ,(map lang-link langs)))))))
+
diff --git a/templates/_logo.svg b/templates/_logo.svg
new file mode 100644
index 0000000..c574b25
--- /dev/null
+++ b/templates/_logo.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 177.165 88.583" height="200" width="300" class="title-image">
+ <g style="line-height:125%">
+ <path d="M14.289 54.201h27.525v-2.7h-24.3v-17.25h20.55v-2.7h-20.55v-15.9h24.3v-2.7H14.289v41.25zm32.666 0h3.225v-41.25h-3.225v41.25zm8.414-14.775c0 11.25 8.7 15.6 16.5 15.6 11.85 0 15.3-4.725 16.05-9.225h-3.6c-.75 1.875-2.175 6-12.45 6-5.925 0-12.45-3.6-12.975-11.025h29.025v-3.225c-.75-10.425-6.45-15.75-16.05-15.75-9.6 0-16.5 7.2-16.5 17.625zm3.675-1.875c1.05-7.875 5.175-12.6 13.125-12.6s11.4 5.1 12.15 12.6H59.044zm34.275 16.65h3.225V28.326c1.575-2.025 5.025-3.225 10.2-3.225 3.6 0 8.1 1.35 8.1 7.65v21.45h3.45v-21.45c0-8.25-6.15-10.95-11.55-10.95-5.55 0-9.075 1.35-10.2 4.05v-3.225h-3.225v31.575zm29.944-20.625c0 11.175 9.3 21.45 20.625 21.45 4.8 0 9.15-1.875 12.675-4.8l4.8 3.975h3.75l-6.6-5.775c3.675-3.975 6-9.3 6-14.85 0-11.1-9.225-21.375-20.625-21.375s-20.625 10.2-20.625 21.375zm3.3 0c0-9.15 7.575-18.3 17.325-18.3s17.325 9.15 17.325 18.3-7.575 18.375-17.325 18.375-17.325-9.225-17.325-18.375z"/>
+ </g>
+ <g style="line-height:125%">
+ <path d="M28.71 64.185h4.038v12.184h1.021V64.185h4.061v-.879h-9.12v.879zm10.606 12.184h8.716v-.855h-7.695V70.05h6.508v-.855h-6.508V64.16h7.695v-.855h-8.716V76.37zm10.225-6.532c0 4.275 1.972 6.793 5.63 6.793 2.802 0 5.153-1.496 5.153-3.634h-1.14c0 1.306-1.568 2.613-4.014 2.613-3.159 0-4.512-3.064-4.512-5.772 0-3.11 1.828-5.77 4.607-5.77 2.423 0 3.919 1.258 3.919 2.683h1.14c0-2.351-2.351-3.681-5.154-3.681-3.895 0-5.629 3.467-5.629 6.768zm12.412 6.532h1.02V70.05h6.508v6.318h1.022V63.306H69.48v5.89h-6.507v-5.89h-1.021V76.37zm10.344 0h1.045V65.254l7.196 11.115h1.021V63.306h-1.02V74.54l-7.197-11.234h-1.045V76.37zm10.897-6.532c0 3.54 2.945 6.793 6.532 6.793 3.586 0 6.53-3.254 6.53-6.793 0-3.515-2.92-6.768-6.53-6.768-3.61 0-6.532 3.23-6.532 6.768zm1.045 0c0-2.897 2.4-5.795 5.487-5.795s5.486 2.898 5.486 5.795c0 2.898-2.399 5.82-5.486 5.82-3.088 0-5.487-2.922-5.487-5.82zm13.616 6.532h7.909v-1.022h-6.888v-12.04h-1.021v13.062zm9.368-6.532c0 3.54 2.945 6.793 6.531 6.793s6.531-3.254 6.531-6.793c0-3.515-2.921-6.768-6.531-6.768s-6.531 3.23-6.531 6.768zm1.045 0c0-2.897 2.398-5.795 5.486-5.795 3.087 0 5.486 2.898 5.486 5.795 0 2.898-2.399 5.82-5.486 5.82-3.088 0-5.486-2.922-5.486-5.82zm13.544 0c0 4.275 1.971 6.793 5.629 6.793 1.638 0 3.087-.523 4.013-1.378v1.117h1.022v-6.413h-5.225v1.021h4.203v2.02c0 1.305-1.567 2.612-4.013 2.612-3.16 0-4.513-3.064-4.513-5.772 0-3.11 1.829-5.77 4.608-5.77 2.422 0 3.918 1.258 3.918 2.683h1.022c0-2.351-2.233-3.681-5.035-3.681-3.895 0-5.63 3.467-5.63 6.768zm12.173-6.531l4.75 7.624v5.439h1.02v-5.44l4.775-7.623h-1.14l-4.133 6.65-4.109-6.65h-1.163z" />
+ </g>
+</svg>
diff --git a/templates/_structure.scm b/templates/_structure.scm
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/templates/_structure.scm
diff --git a/templates/en/_ethics.md b/templates/en/_ethics.md
new file mode 100644
index 0000000..1334b82
--- /dev/null
+++ b/templates/en/_ethics.md
@@ -0,0 +1,13 @@
+We support free knowledge and we consider our clients must have access to
+everything we develop for them so that they can audit and edit it without
+restrictions. That’s why only deliver **free software and free
+documentation**.
+
+On the other hand, we believe we all have impact in the society so **we
+carefully select the projects we work on**, avoiding projects that we consider
+that don't have a good impact in the society: that are incompatible with human
+rights, abuse vulnerable collectives, etc.
+
+Also, we have a really strong compromise with the free software movement
+because it helps us make our everyday job. For that reason, we spend some of
+our effort supporting free software in terms of funds or development time.
diff --git a/templates/en/_products.md b/templates/en/_products.md
new file mode 100644
index 0000000..0937455
--- /dev/null
+++ b/templates/en/_products.md
@@ -0,0 +1,29 @@
+### R&D: Research and Development
+
+We primarily focus on Research and Development. Our main goal is to push our
+clients forward technologically speaking.
+
+The service is flexible and can focus on research, making reports about
+the state of the art in a certain area or about possible alternatives to solve
+an issue, or can be focused on development, delivering a proof-of-concept, a
+mockup or a fully-featured solution.
+
+Our commitment is to transfer all the knowledge we adquire during the process,
+so our clients are able audit, edit or continue the research in their own. For
+that reason, and following our ethics framework, we deliver everything under
+a free software license.
+
+### Training
+
+We also offer advanced training in computer science, mostly programming, as a
+supplementary service as part of our technological grow model.
+
+The training is aimed to provide our clients a way to improve the technicall
+skills of their teams, make them learn a new technology or make newcomers learn
+the tools and philosophy of the company, among others. In any case, they ease
+to set up a highly-skilled team that deeply understand their job and the tools
+they need.
+
+We focus on the transmission of the technical basis in order to encourage
+critical and independent thinking that serves as a robust basis to keep
+learning and researching.
diff --git a/templates/en/_summary.md b/templates/en/_summary.md
new file mode 100644
index 0000000..1df4753
--- /dev/null
+++ b/templates/en/_summary.md
@@ -0,0 +1,12 @@
+*ElenQ Technology* is a **Research and Development** company. This means we
+learn for you and give you the knowledge back in a way you can use it freely,
+following our [ethics](#ethics).
+
+We also offer **training and engineering** as secondary services, which means
+we can help you with that project that never gets finished because you must
+focus on more important things like clients and maintenance.
+
+Our experience is based on **Software and Electronics** but we also have a
+background on arts, design and other fields. The fact is that we are engineers
+and our main talent is learning anything so don't hesitate to [contact
+us](#contact) if you think we can help you.
diff --git a/templates/en/index.html b/templates/en/index.html
new file mode 100644
index 0000000..cb09ca4
--- /dev/null
+++ b/templates/en/index.html
@@ -0,0 +1,86 @@
+(define footer
+"
+The content of this website is published under the terms of [Creative Commons
+Attribution Share-Alike 4.0
+International](http://creativecommons.org/licenses/by-sa/4.0/) license unless
+otherwise stated.
+")
+
+(define summary (file->string "templates/en/_summary.md"))
+(define ethics (file->string "templates/en/_ethics.md"))
+(define products (file->string "templates/en/_products.md"))
+
+(load "templates/_defs.scm")
+(set! lang "en")
+
+(sxml->xml
+ (base
+ "ElenQ Technology"
+ `(,(header
+ `(((name . "Technology")
+ (title . "Engineering - ElenQ Technology")
+ (absurl . ,(absurl-to-lang "/index.html"))
+ (active . #t))
+ ((name . "Publishing")
+ (title . "Publishing House - ElenQ Publishing")
+ (absurl . "https://en.goteo.org/project/elenq-publishing")))
+
+ `(((name . "en")
+ (title . "English")
+ (absurl . "/en/")
+ (active . #t))
+ ((name . "es")
+ (title . "Español")
+ (absurl . "/es/"))))
+
+ (div (@ (class "content container"))
+ ,(logo-title)
+
+ (section (@ (class summary))
+ ,(md summary))
+
+ (section
+ ,(anchored-h 2 "Ethics" "ethics")
+ ,(md ethics))
+
+ (section
+ ,(anchored-h 2 "Products" "products")
+ ,(md products))
+
+ (section
+ ,(anchored-h 2 "Who we are" "who")
+ (p "ElenQ Technology wouldn't be possible without all the people
+ around it, who support and help us unconditionally. Despite
+ not being part of ElenQ Technology officially, they deserve
+ to be mentioned at least in these lines, even if they are not
+ listed below.")
+ (div (@ (class card))
+ (div (@ (class card-picture))
+ (img (@ (src "/static/img/faces/ekaitz.jpg")
+ (class round))))
+ (div (@ (class card-data))
+ (h3 "Ekaitz Zarraga")
+ (p "Telecommunication engineer (EEE equivalent) by
+ training, 10 years of experience as a programmer and
+ a lifetime of R&D, Ekaitz is the one man army of
+ ElenQ Technology.")
+ (p "He says his only talent is learning. He founded
+ ElenQ Technology with the idea of inspiring
+ others to make a better world helping them with
+ the difficult task of going out of their comfort
+ zone.")
+ (p "He writes about his work at ElenQ Technology "
+ (a (@ (href "https://ekaitz.elenq.tech"))
+ "in his blog") "."))))
+
+ (section
+ ,(anchored-h 2 "Contact" "contact")
+ (p "Send us an email to: "
+ (a (@ (href "mailto:hello@elenq.tech")) (em "hello@elenq.tech"))
+ " "
+ (a (@ (href "/static/files/publickey.hello@elenq.tech.txt")) "[PGP]"))))
+
+ (footer (@ (class bar-bottom))
+ (div (@ (class "container text-center"))
+ (h6 "© ElenQ Technology")
+ ,(md footer))))))
diff --git a/templates/es/_ethics.md b/templates/es/_ethics.md
new file mode 100644
index 0000000..5a24489
--- /dev/null
+++ b/templates/es/_ethics.md
@@ -0,0 +1,16 @@
+Como defensores del conocimiento libre, consideramos que nuestros clientes
+tienen que tener acceso a todo lo que realizamos para ellos con el fin de poder
+auditarlo y editarlo sin ninguna restricción. Por esa razón, únicamente
+**entregamos software y documentación libre**.
+
+Por otro lado, como consideramos que todos tenemos un impacto en la sociedad,
+**seleccionamos de manera estricta en qué proyectos trabajamos** evitando
+apoyar proyectos que consideramos que van a tener un impacto negativo en la
+sociedad: que no cumplen los derechos humanos, que buscan explotar a un grupo
+de personas vulnerable, etc.
+
+Además, estamos comprometidos con el movimiento del software libre, ya que nos
+permite llevar a cabo nuestro trabajo diario. Por ello, dedicamos parte de
+nuestros esfuerzos a colaborar con los proyectos que utilizamos, ya sea de
+forma económica o dedicando nuestro tiempo de desarrollo con el fin de mantener
+el ecosistema vivo y en buen estado.
diff --git a/templates/es/_products.md b/templates/es/_products.md
new file mode 100644
index 0000000..8e1ad29
--- /dev/null
+++ b/templates/es/_products.md
@@ -0,0 +1,31 @@
+### I+D: Investigación y Desarrollo
+
+Como equipo de Investigación y Desarrollo que somos, nos dedicamos
+principalmente a esa tarea. Ofrecemos nuestros servicios como equipo de I+D
+independiente para impulsar tecnológicamente a nuestros clientes.
+
+El servicio es flexible y puede estar más centrado en la investigación,
+redactando informes de análisis de situación, estado del arte o posibles
+alternativas, o en el desarrollo, creando pruebas de concepto, maquetas o
+soluciones que resuelvan los problemas de nuestros clientes.
+
+Hacemos hincapié en una transferencia de real de conocimiento y, siguiendo
+nuestro compromiso ético, realizamos la entrega de todo lo desarrollado con
+licencias libres, para que el cliente sea libre de auditarlo y editarlo a su
+antojo.
+
+
+### Formación
+
+Ofrecemos formaciones avanzadas en el área de la informática, principalmente
+sobre programación como parte de nuestro modelo de impulso tecnológico.
+
+Estas formaciones tienen como objetivo introducir a un equipo de profesionales
+a una tecnología que aún no conocen, actualizar a profesionales o formar a
+recién llegados a conocer la filosofía de la empresa, entre otros. En cualquier
+caso, facilitan la puesta en marcha de equipos eficientes que controlan al
+detalle su trabajo.
+
+Estas formaciones se centran en los fundamentos técnicos con el fin de fomentar
+el pensamiento crítico e independiente creando así una base de conocimientos
+robusta sobre la que seguir avanzando de forma independiente.
diff --git a/templates/es/_summary.md b/templates/es/_summary.md
new file mode 100644
index 0000000..23222ea
--- /dev/null
+++ b/templates/es/_summary.md
@@ -0,0 +1,13 @@
+*ElenQ Technology* es una empresa de **Investigación y Desarrollo**. Lo que
+significa que aprendemos para ti y te damos el conocimiento de vuelta de modo
+que puedas usarlo de forma libre, siguiendo nuestro [compromiso
+ético](#ethics).
+
+También ofrecemos **formación e ingeniería** como servicios secundarios, para poder
+ayudarte con ese proyecto que nunca acaba porque tienes que concentrarte en
+cosas más importantes como el mantenimiento o tratar con los clientes.
+
+Nuestras especialidades son el **Software y la Electrónica** pero también tenemos
+experiencia en el arte, el diseño y otros campos. La verdad es que somos
+ingenieros cuyo mayor talento es aprender, así que no dudes en
+[contactarnos](#contact) si crees que podemos ayudarte.
diff --git a/templates/es/index.html b/templates/es/index.html
new file mode 100644
index 0000000..463f00d
--- /dev/null
+++ b/templates/es/index.html
@@ -0,0 +1,88 @@
+(define footer
+"
+El contenido de este sitio está publicado bajo los términos de la licencia
+[Cretive Commons Atribución Compartir-Igual 4.0
+Internacional](http://creativecommons.org/licenses/by-sa/4.0/) a no
+ser que se especifique lo contrario.
+")
+
+(define summary (file->string "templates/es/_summary.md"))
+(define ethics (file->string "templates/es/_ethics.md"))
+(define products (file->string "templates/es/_products.md"))
+
+(load "templates/_defs.scm")
+(set! lang "es")
+
+(sxml->xml
+ (base
+ "ElenQ Technology"
+ `(,(header
+ `(((name . "Technology")
+ (title . "Ingeniería - ElenQ Technology")
+ (absurl . ,(absurl-to-lang "/index.html"))
+ (active . #t))
+ ((name . "Publishing")
+ (title . "Editorial - ElenQ Publishing")
+ (absurl . "https://www.goteo.org/project/elenq-publishing")))
+
+ `(((name . "en")
+ (title . "English")
+ (absurl . "/en/"))
+ ((name . "es")
+ (title . "Español")
+ (absurl . "/es/")
+ (active . #t))))
+
+
+ (div (@ (class "content container"))
+
+ ,(logo-title)
+
+ (section (@ (class summary))
+ ,(md summary))
+
+ (section
+ ,(anchored-h 2 "Compromiso ético" "ethics")
+ ,(md ethics))
+
+ (section
+ ,(anchored-h 2 "Qué ofrecemos" "products")
+ ,(md products))
+
+ (section
+ ,(anchored-h 2 "Quiénes somos" "who")
+ (p "ElenQ Technology no sería posible sin nuestros colaboradores,
+ personas de diferentes áreas que nos apoyan y nos ayudan en
+ nuestro trabajo. A pesar de no formar parte oficial de ElenQ
+ Technology, merecen ser mencionados, aunque no se listen a
+ continuación.")
+ (div (@ (class card))
+ (div (@ (class card-picture))
+ (img (@ (src "/static/img/faces/ekaitz.jpg")
+ (class round))))
+ (div (@ (class card-data))
+ (h3 "Ekaitz Zarraga")
+ (p "Ingeniero de Telecomunicaciones de formación, con
+ alrededor de 10 años de experiencia como programador
+ y toda una vida dedicada al I+D, Ekaitz es el hombre
+ orquesta de ElenQ Technology.")
+ (p "Suele decir que su único talento es aprender. Fundó
+ ElenQ Technology con la idea de inspirar a otros a
+ hacer del mundo un lugar mejor, ayudándoles con la
+ difícil tarea de salir a visitar territorio
+ desconocido.")
+ (p "Escribe sobre su trabajo en ElenQ Technology "
+ (a (@ (href "https://ekaitz.elenq.tech"))
+ "en su blog") "."))))
+
+ (section
+ ,(anchored-h 2 "Contacto" "contact")
+ (p "Escríbenos a: "
+ (a (@ (href "mailto:hello@elenq.tech")) (em "hello@elenq.tech"))
+ " "
+ (a (@ (href "/static/files/publickey.hello@elenq.tech.txt")) "[PGP]"))))
+
+ (footer (@ (class bar-bottom))
+ (div (@ (class "container text-center"))
+ (h6 "© ElenQ Technology")
+ ,(md footer))))))