Initial commit

This commit is contained in:
avitex 2018-08-22 23:30:07 +10:00
commit 8b6cc5933a
Signed by: avitex
GPG Key ID: 38C76CBF3749D62C
31 changed files with 635 additions and 0 deletions

9
.editorconfig Normal file
View File

@ -0,0 +1,9 @@
root = true
[*]
indent_size = 2
indent_style = tab
[*.md]
indent_size = 4
indent_style = space

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
.idea/
public

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2018 James Dyson
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

38
config.toml Normal file
View File

@ -0,0 +1,38 @@
base_url = "https://1bit.pw"
compile_sass = true
title = "1-bit Password"
description = ""
taxonomies = [
{name = "blog/tags", rss = true},
{name = "blog/categories", rss = true}
]
[extra]
author = "avitex"
[[extra.main_menu]]
name = "home"
url = "/"
[[extra.main_menu]]
name = "blog"
url = "/blog"
sub = [
{name = "lastest", url = "/blog"},
{name = "categories", url = "/blog/categories"},
{name = "tags", url = "/blog/tags"}
]
[[extra.main_menu]]
name = "projects"
url = "/projects"
[[extra.main_menu]]
name = "about"
url = "/about"
sub = [
{name = "overview", url = "/about"},
{name = "bio", url = "/about/bio"},
{name = "social", url = "/about/social"}
]

4
content/_index.md Normal file
View File

@ -0,0 +1,4 @@
+++
+++
My [projects](/projects), [thoughts](/blog), and [me](/about)

14
content/about/_index.md Normal file
View File

@ -0,0 +1,14 @@
+++
template = "about.html"
+++
Hi! I'm James. I live in Australia, and the virtual realm is my dojo.
## PGP
You can find my pgp public key [here](/id/pk.txt).
## Contacting me
If you wish to contact me, email is easiest via `theavitex (at) gmail (dot) com`.
See my [social links](./about/social.md) for other methods to get in touch.

4
content/about/bio.md Normal file
View File

@ -0,0 +1,4 @@
+++
+++
Nothing here... yet

31
content/about/social.md Normal file
View File

@ -0,0 +1,31 @@
+++
+++
## Code
- [Github](https://github.com/avitex)
- [WhitefoxLabs](https://git.wfx.es/avitex)
- [Gitlab](https://gitlab.com/avitex) (_dormant_)
- [Bitbucket](https://bitbucket.com/avitex) (_dormant_)
## Community
- [Keybase](https://keybase.io/avitex)
- [Lobsters](https://lobste.rs/u/avitex)
- [Twitter](https://twitter.com/theavitex) (_dormant_)
- [Hackernews](https://news.ycombinator.com/user?id=avitex) (_dormant_)
- [StackOverflow](https://stackoverflow.com/users/605191/avitex) (_dormant_)
- [Vue Forum](https://forum.vuejs.org/u/avitex) (_dormant_)
- [Elixir Forums](https://elixirforum.com/u/avitex) (_dormant_)
## Gaming
- [Steam](https://steamcommunity.com/id/avitex)
- [Faceit](https://www.faceit.com/en/players/avitex)
- [ESEA](https://play.esea.net/users/680258) (dormant)
- [Cybergamer](https://www.cybergamer.com/profile/246296/avitex/) (dormant)
## Other
- Discord - `avitex#0438`

4
content/blog/_index.md Normal file
View File

@ -0,0 +1,4 @@
+++
paginate_by = 10
template = "blog.html"
+++

View File

@ -0,0 +1,14 @@
+++
title = "Hello World"
date = 2018-08-22
template = "blog/post.html"
[taxonomies]
"blog/tags" = ["new"]
"blog/categories" = ["meta"]
+++
Thought it would be a good idea to have somewhere to put my ramblings, and so I am here.
Whether or not I use this, time will tell.
<!-- more -->

View File

@ -0,0 +1,5 @@
+++
template = "projects.html"
+++
Nothing here... yet

31
sass/_dark.scss Normal file
View File

@ -0,0 +1,31 @@
.monk.dark {
color: #acc;
background-color: #20262e;
a {
color: #94b4cb;
}
code {
background-color: #161a20;
}
.menu a {
color: #42a542;
text-decoration-color: #205720;
&:hover {
text-decoration-color: #428a42;
}
&.active {
font-weight: 600;
color: #5ce95c;
text-decoration-color: #52a852;
}
}
hr {
border-bottom-color: #283339;
}
}

31
sass/_light.scss Normal file
View File

@ -0,0 +1,31 @@
.monk.light {
color: #444;
background-color: #fff;
a {
color: #556;
}
code {
background-color: #eee;
}
.menu a {
color: #222;
text-decoration-color: #555;
&:hover {
text-decoration-color: #428a42;
}
&.active {
font-weight: 600;
color: #77f;
text-decoration-color: #99f;
}
}
hr {
border-bottom-color: #ddd;
}
}

9
sass/_reset.scss Normal file
View File

@ -0,0 +1,9 @@
html, body {
margin: 0;
height: 100%;
width: 100%;
}
* {
box-sizing: border-box;
}

76
sass/_theme.scss Normal file
View File

@ -0,0 +1,76 @@
.monk {
font-size: 14px;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
.container {
margin: 0 auto;
width: 100%;
max-width: 800px;
}
h1, h2, h3, h4, h5, h6 {
font-weight: 600;
}
.main {
padding-top: 5px;
padding-bottom: 5px;
padding-left: 5px;
padding-right: 5px;
}
.header {
padding-top: 10px;
padding-bottom: 10px;
}
.menu {
font-size: 0;
list-style: none;
margin: 0;
padding: 0;
}
.menu li {
display: inline;
margin-left: 5px;
margin-right: 5px;
}
.menu a {
text-decoration: underline dotted;
}
.main-menu span {
font-size: 16px;
}
.sub-menu {
margin-top: 2px;
opacity: 0.8;
}
.sub-menu span {
font-size: 14px;
}
code {
padding-left: 4px;
padding-right: 4px;
border-radius: 3px;
}
pre {
overflow: auto;
padding: 4px;
}
.muted {
opacity: 0.5;
}
hr {
border: 0;
border-bottom: 1px solid;
}

5
sass/site.scss Normal file
View File

@ -0,0 +1,5 @@
@import "reset";
@import "theme";
@import "dark";
@import "light";

BIN
static/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

107
static/id/pk.txt Normal file
View File

@ -0,0 +1,107 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
3VM=
=wEz/
-----END PGP PUBLIC KEY BLOCK-----

0
static/js/theme.js Normal file
View File

1
templates/about.html Normal file
View File

@ -0,0 +1 @@
{% extends "index.html" %}

19
templates/blog.html Normal file
View File

@ -0,0 +1,19 @@
{% extends "index.html" %}
{% block content %}
<main class="main">
{% for page in paginator.pages %}
{{ post_macros::page_in_list(page=page) }}
{% endfor %}
<nav>
<p>
{% if paginator.previous %}
<a href="{{ paginator.previous }}">&laquo; Previous</a> |
{% endif %}
<span>Page {{ paginator.current_index }} of {{ paginator.pagers | length }}</span>
{% if paginator.next %}
| <a href="{{ paginator.next }}">Next &raquo;</a>
{% endif %}
</p>
</nav>
</main>
{% endblock content %}

View File

@ -0,0 +1,12 @@
{% extends "index.html" %}
{% block content %}
<h1>Categories</h1>
{% if terms %}
<ul>
{% for term in terms %}
<li><a href="{{ term.permalink }}">{{ term.name }}</a> ({{ term.pages | length }})</li>
{% endfor %}
</ul>
{% endif %}
{% endblock content %}

View File

@ -0,0 +1,8 @@
{% extends "index.html" %}
{% block content %}
<h1>Category: <code>{{ term.name }}</code> <small>(<a href="{{ get_taxonomy_url(kind="blog/categories", name=term.name) }}rss.xml">RSS</a>)</small></h1>
{% for page in term.pages %}
{{ post_macros::page_in_list(page=page) }}
{% endfor %}
{% endblock content %}

44
templates/blog/post.html Normal file
View File

@ -0,0 +1,44 @@
{% extends "index.html" %}
{% block content %}
<article itemscope itemtype="http://schema.org/BlogPosting">
<header>
<h1 itemprop="headline">{{ page.title }}</h1>
<span class="muted">{{ post_macros::meta(page=page) }}</span>
</header>
<div itemprop="articleBody">
{{ page.content | safe }}
</div>
{% block page_footer %}
<footer>
<hr>
<p>
{% if config.extra.author %}
Published by {{ config.extra.author }}
{% endif %}
{% if page.taxonomies | get(key="blog/categories") %}
{% set categories = page.taxonomies | get(key="blog/categories") %}
in <a href="{{ get_taxonomy_url(kind="blog/categories", name=categories[0]) }}">{{ categories[0] }}</a>
{% endif %}
{% set tags = page.taxonomies | get(key="blog/tags") %}
{% if tags %}
and tagged
{% for tag in tags %}
<a href="{{ get_taxonomy_url(kind="blog/tags", name=tag) }}">{{ tag }}</a>
{% if tags | length > 1 %}
{% if loop.index != tags | length %}
{% if loop.index == tags | length - 1 %}
and
{% else %}
,
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
</p>
</footer>
{% endblock page_footer %}
</article>
{% endblock content %}

View File

@ -0,0 +1,12 @@
{% extends "index.html" %}
{% block content %}
<h1>Tags</h1>
{% if terms %}
<ul>
{% for term in terms %}
<li><a href="{{ term.permalink }}">{{ term.name }}</a> ({{ term.pages | length }})</li>
{% endfor %}
</ul>
{% endif %}
{% endblock content %}

View File

@ -0,0 +1,8 @@
{% extends "index.html" %}
{% block content %}
<h1>Tag: <code>{{ term.name }}</code> <small>(<a href="{{ get_taxonomy_url(kind="blog/tags", name=term.name) }}rss.xml">RSS</a>)</small></h1>
{% for page in term.pages %}
{{ post_macros::page_in_list(page=page) }}
{% endfor %}
{% endblock content %}

69
templates/index.html Normal file
View File

@ -0,0 +1,69 @@
{% import "macros.html" as macros %}
{% import "post_macros.html" as post_macros %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<link rel="icon" type="image/png" href="{{ get_url(path="/favicon.png", trailing_slash=false) }}">
<title>{% block title %}{{ config.title }}{% endblock title %}</title>
{% if config.generate_rss %}
<link rel="alternate" type="application/rss+xml" title="RSS" href="{{ get_url(path="rss.xml") }}">
{% endif %}
{% block css %}
<link rel="stylesheet" href="{{ get_url(path="/site.css", trailing_slash=false) }}">
{% endblock css %}
{% block extra_head %}
{% endblock extra_head %}
</head>
<body class="monk dark">
<div class="container">
{% block header %}
{% if config.extra.main_menu %}
<header class="header">
<nav itemscope itemtype="http://schema.org/SiteNavigationElement">
<ul class="menu main-menu">
{% for item in config.extra.main_menu %}
<li>
<a itemprop="url"
class="{% if macros::is_active_nav(url=macros::link(url=item.url), curr_url=current_url) == "true" %}active{% endif %}"
href="{{ macros::link(url=item.url) }}">
<span itemprop="name">{{ item.name }}</span>
</a>
</li>
{% endfor %}
</ul>
<ul class="menu sub-menu">
{% for item in config.extra.main_menu %}
{% if item.sub and current_url is starting_with(macros::link(url=item.url)) %}
{% for sub_item in item.sub %}
<li>
<a itemprop="url"
class="{% if macros::link(url=sub_item.url) == current_url %}active{% endif %}"
href="{{ macros::link(url=sub_item.url) }}">
<span itemprop="name">{{ sub_item.name }}</span>
</a>
</li>
{% endfor %}
{% endif %}
{% endfor %}
</ul>
</nav>
</header>
{% endif %}
{% endblock header %}
<hr />
{% block content %}
<main class="main">
{{ section.content | safe }}
</main>
{% endblock content %}
</div>
</body>
</html>

15
templates/macros.html Normal file
View File

@ -0,0 +1,15 @@
{% macro link(url) %}
{%- if url is starting_with("/") or url is starting_with("./") -%}
{{ get_url(path=url) }}
{%- else -%}
{{ url }}
{%- endif -%}
{% endmacro link %}
{% macro is_active_nav(url, curr_url) %}
{%- if url == get_url(path="/") -%}
{{ url == curr_url }}
{%- else -%}
{{ curr_url is starting_with(url) }}
{%- endif -%}
{% endmacro is_active_nav %}

8
templates/page.html Normal file
View File

@ -0,0 +1,8 @@
{% extends "index.html" %}
{% block content %}
<main class="main">
{{ page.content | safe }}
</main>
{% endblock content %}

View File

@ -0,0 +1,33 @@
{% macro meta(page) %}
<svg style="margin-bottom:-3px" class="i-clock" viewBox="0 0 32 32"
width="16" height="16" fill="none" stroke="currentcolor"
stroke-linecap="round" stroke-linejoin="round" stroke-width="6.25%">
<circle cx="16" cy="16" r="14"/>
<path d="M16 8 L16 16 20 20"/>
</svg>
<span>{{ page.reading_time }} minute read</span>
<svg style="margin-bottom: -3px" class="i-edit" viewBox="0 0 32 32"
width="16" height="16" fill="none" stroke="currentcolor"
stroke-linecap="round" stroke-linejoin="round" stroke-width="6.25%">
<path d="M30 7 L25 2 5 22 3 29 10 27 Z M21 6 L26 11 Z M5 22 L10 27 Z"/>
</svg>
Published: {{ page.date | date(format="%F") }}
{% endmacro meta %}
{% macro page_in_list(page) %}
<article itemscope itemtype="http://schema.org/CreativeWork">
<header>
<h2 itemprop="name">
<a href="{{ page.permalink }}">{{ page.title }}</a>
</h2>
<span class="muted">{{ self::meta(page=page) }}</span>
</header>
{% if page.summary %}
<div itemprop="summary">
{{ page.summary | safe }}
<nav class="readmore"><a itemprop="url" href="{{ page.permalink }}">Read More&nbsp;&raquo;</a></nav>
</div>
{% endif %}
</article>
{% endmacro page_in_list %}

1
templates/projects.html Normal file
View File

@ -0,0 +1 @@
{% extends "index.html" %}