Browse Source

huge changes to project pages

main
James Fenn 4 months ago
parent
commit
dce7da858a
30 changed files with 681 additions and 103 deletions
  1. +1
    -0
      .gitignore
  2. +7
    -4
      _data/git.js
  3. +28
    -17
      _data/meta.json
  4. +0
    -21
      _includes/header.liquid
  5. +0
    -1
      _includes/layouts/base.liquid
  6. +1
    -1
      _includes/layouts/blog.liquid
  7. +88
    -0
      _includes/layouts/project.liquid
  8. +0
    -0
      assets/images/ic/fediverse.svg
  9. BIN
      assets/images/ic/markdown-mark.png
  10. +1
    -1
      package.json
  11. +1
    -1
      pages/community.md
  12. +8
    -19
      pages/contact.md
  13. +5
    -14
      pages/index.html
  14. +279
    -0
      pages/licenses.md
  15. +23
    -0
      pages/links.njk
  16. +2
    -2
      pages/projects/index.html
  17. +1
    -1
      pages/projects/project.html
  18. +27
    -21
      pages/projects/wiki.html
  19. +8
    -0
      projects/alarmio.html
  20. +60
    -0
      projects/attribouter.html
  21. +6
    -0
      projects/colorpickerdialog.html
  22. +6
    -0
      projects/crasher.html
  23. +8
    -0
      projects/declarativ.html
  24. +8
    -0
      projects/dot.css.html
  25. +8
    -0
      projects/exceptionaltraveler.html
  26. +42
    -0
      projects/git-rest-wrapper.html
  27. +43
    -0
      projects/ktordocs.html
  28. +8
    -0
      projects/metronome.html
  29. +6
    -0
      projects/scrurl.html
  30. +6
    -0
      projects/status.html

+ 1
- 0
.gitignore View File

@@ -1,4 +1,5 @@
.vscode/
.node-persist/
node_modules/
_site/
assets/css/styles.css


+ 7
- 4
_data/git.js View File

@@ -5,11 +5,14 @@ const _fetch = require('node-fetch');
const _jsyaml = require('js-yaml');
const { Client } = require('git-rest-wrapper');

const _gitrest = new Client(/*{
const _gitrest = new Client({
cache: {
type: "disk"
},
tokens: {
'github.com': process.env.GITHUB_TOKEN
"api.github.com": process.env.GITHUB_TOKEN
}
}*/);
});
const _site = require("./meta.json");

const _projects = [];
@@ -34,7 +37,7 @@ async function getRepoProject(repo) {
// extract title from readme (if possible)
let titleRegex = (/^[\w-., ]+/g).exec(readme);
let title = id;
if (titleRegex) {
if (titleRegex && readme.includes("=====")) {
title = titleRegex[0].trim();
}



+ 28
- 17
_data/meta.json View File

@@ -6,37 +6,48 @@
"links": {
"twitter": "https://twitter.com/fennifith",
"fediverse": "https://is.a.horrific.dev/@james",
"instagram": "https://www.instagram.com/fennifith",
"twitch": "https://twitch.tv/fennifith",
"keybase": "https://keybase.io/jafenn",
"googleplay": "https://play.google.com/store/apps/dev?id=5937321955284727208",
"telegram": "https://t.me/fennifith",
"linkedin": "https://www.linkedin.com/in/james-fenn-3390b8167/"
"linkedin": "https://www.linkedin.com/in/james-fenn-3390b8167/",
"github": "https://github.com/fennifith",
"git": "https://code.horrific.dev/james",
"bintray": "https://bintray.com/18jafenn90",
"liberapay": "https://liberapay.com/fennifith/",
"paypal": "https://paypal.me/fennifith"
},
"categories": [{
"id": "project-app",
"title": "Apps & Websites",
"desc": "Published tools or products for a wide audience.",
"repos": [
"metronome"
]
"desc": "Published tools and products for a wide audience."
},{
"id": "project-tool",
"title": "Tools & Libraries",
"desc": "Smaller projects used in other work, intended for myself and other developers.",
"repos": [
"attribouter",
"dot.css",
"git-rest-wrapper"
]
"desc": "Smaller projects used in other work, intended for myself and other developers."
},{
"id": "project-fun",
"title": "Just for Fun",
"desc": "Weird tools or programs that have no real purpose.",
"repos": []
"desc": "Weird tools or programs that have no real purpose."
},{
"id": "project-deprecated",
"title": "Deprecated",
"desc": "Things I've stopped working on or no longer maintain.",
"repos": []
"desc": "Things I've stopped working on or no longer maintain."
}],
"repos": [
"gitea@code.horrific.dev:james/metronome",
"github@github.com:fennifith/Attribouter",
"gitea@code.horrific.dev:james/dot.css",
"gitea@code.horrific.dev:james/git-rest-wrapper"
"gitea@code.horrific.dev:james/git-rest-wrapper",
"gitea@code.horrific.dev:james/ktordocs",
"github@github.com:fennifith/Attribouter",
"github@github.com:fennifith/Alarmio",
"github@github.com:fennifith/declarativ",
"github@github.com:fennifith/mdjavadoc",
"github@github.com:fennifith/ExceptionalTraveler",
"github@github.com:fennifith/Status",
"github@github.com:fennifith/Scrurl",
"github@github.com:fennifith/ColorPickerDialog",
"github@github.com:fennifith/Crasher"
]
}

+ 0
- 21
_includes/header.liquid View File

@@ -1,21 +0,0 @@
<!--<header class="header">
<div class="container">
<div class="header-left">
<a class="header-brand" href="/">James Fenn</a>
</div>
<div class="header-right">
<a class="link" href="/now">
<i class="link-img material-icons">today</i>
<span class="link-title">Now</span>
</a>
<a class="link" href="https://is.a.horrific.dev/@james">
<i class="link-img material-icons">person_add</i>
<span class="link-title">Social</span>
</a>
<a class="link" href="/links">
<i class="link-img material-icons">email</i>
<span class="link-title">Contact</span>
</a>
</div>
</div>
</header>-->

+ 0
- 1
_includes/layouts/base.liquid View File

@@ -2,7 +2,6 @@
layout: default
---

{% include header.liquid %}
{% include nav.liquid %}

{{ content | safe }}


+ 1
- 1
_includes/layouts/blog.liquid View File

@@ -1,7 +1,7 @@
---
layout: base
---
<div class="bg-dark py-4">
<div class="bg-light border-bottom py-4">
<div class="container">
<h1 class="mb-0">{{ title }}</h1>
<p class="text-meta text-tertiary-3 mb-3">


+ 88
- 0
_includes/layouts/project.liquid View File

@@ -0,0 +1,88 @@
---
layout: base
---

{% assign project = git.projects | where: 'id', page.fileSlug | first %}

<div class="bg-secondary py-5">
<div class="container text-center">
<h1 class="text-light" style="text-shadow: 0 0 20px #82a7ce;">{{ project.title }}</h1>
<p class="mt-0 text-light-2">{{ project.repo.description }}</p>
</div>

<div class="mt-2 text-center">
<a class="link link-chip" href="{{ project.repo.url }}">
<img class="link-img" src="https://jfenn.me/images/ic/git.png"/>
<span class="link-title">Git Repo</span>
</a>
<a class="link link-chip" href="{{ project.repo.url }}/issues">
<img class="link-img" src="https://jfenn.me/images/ic/bug.svg"/>
<span class="link-title">Bug Tracker</span>
</a>
{% if project.repo.websiteUrl %}
<a class="link link-chip" href="{{ project.repo.websiteUrl }}">
{% if project.repo.websiteUrl contains "play.google.com" %}
<img class="link-img" src="https://jfenn.me/images/ic/play-store.svg"/>
<span class="link-title">Google Play</span>
{% else %}
<i class="link-img material-icons">link</i>
<span class="link-title">Website</span>
{% endif %}
</a>
{% endif %}
</div>
</div>
<div class="bg-accent-5 py-3">
<div class="container">
<div class="row pt-3">
<div class="col col-12 col-md-6 mb-3">
<div class="card card-accent h-100" onclick="location.href = '/community/';">
<a class="card-title" href="/community/">
<i class="material-icons">people</i>
Contributing
</a>
<div class="card-body">
<span>Interested in working with this project or volunteering to help? Get started here!</span>
</div>
</div>
</div>
<div class="col col-12 col-md-6 mb-3">
<div class="card card-accent h-100" onclick="location.href = '/contact/';">
<a class="card-title" href="/contact/">
<i class="material-icons">email</i>
Contact Me
</a>
<div class="card-body">
<span>Have any questions or concerns? Don't hesitate to reach out!</span>
</div>
</div>
</div>
</div>
</div>
</div>

{% if project.hasWiki %}
<div class="bg-lighter py-5">
<div class="container pb-2">
<div class="row">
<div class="col-12 col-md-auto align-self-center text-center">
<i class="material-icons" style="font-size: 100px;">book</i>
</div>
<div class="col-12 col-md-8 align-self-center text-center text-md-left">
<h5 class="mb-2">Looking for documentation?</h5>
<p class="mt-0 mb-4">Find helpful information about this project - tutorials, guides, and more!</p>
<a class="btn btn-primary" href="./wiki/">Read the Wiki <i class="material-icons" style="padding-bottom: 0.1rem;">chevron_right</i></a>
</div>
</div>
</div>
</div>
{% endif %}

{% assign sections = content | split: '<hr>' %}
{% for section in sections %}
<div class="bg-{% cycle 'neutral', 'lighter' %} py-4">
<div class="container">
{{ section | safe }}
</div>
</div>
{% endfor %}

assets/images/ic/mastodon.svg → assets/images/ic/fediverse.svg View File


BIN
assets/images/ic/markdown-mark.png View File

Before After
Width: 1664  |  Height: 1024  |  Size: 9.5 KiB

+ 1
- 1
package.json View File

@@ -25,7 +25,7 @@
"bootstrap": "^4.3.1",
"fs": "0.0.1-security",
"git-clone": "^0.1.0",
"git-rest-wrapper": "0.0.7",
"git-rest-wrapper": "0.0.8",
"js-yaml": "^3.14.0",
"markdown-it": "^10.0.0",
"markdown-it-anchor": "^5.2.5",


+ 1
- 1
pages/community.md View File

@@ -15,7 +15,7 @@ For the most part, everyone working on these projects is motivated entirely by t

I try to maintain my projects to meet the needs of all their users - as a result, most contributions will be accepted so long as they represent some kind of functional improvement. I'd much prefer to work together and resolve an issue than turn any genuine effort away. To that end, *if you need help with this process, have any questions or confusion, or want to get feedback before a contribution, please don't hesitate to [get in touch](/contact/)!*

For specific contributing instructions, please see the README and/or CONTRIBUTING.md file in the repository.
For more specific contributing instructions, please see the README and/or CONTRIBUTING.md file in the repository.

## Community



+ 8
- 19
pages/contact.md View File

@@ -7,28 +7,17 @@ permalink: /contact/

# Contact Me

I have a [Discord server](https://discord.jfenn.me/) for general discussion about my projects. If you want to message me privately, you can contact me through any of the services below or send [an email](mailto:me@jfenn.me) to me@jfenn.me. To suggest improvements / report bugs in any of my projects, I would prefer that you create an issue in the project's repository (as it will save me time and allow others to enter the discussion), but feel free to contact me for any reason.
I have a [Discord server](https://discord.jfenn.me/) for general discussion about my projects. If you want to message me privately, you can contact me through any of the services below or send an email to [me@jfenn.me]((mailto:me@jfenn.me)). To suggest improvements / report bugs in any of my projects, I would prefer that you create an issue in the project's repository (as it will save me time and allow others to enter the discussion), but feel free to contact me for any reason.

### Links

<a class="link link-chip" href="{{ meta.links.twitter }}">
<img class="link-img" src="/images/ic/twitter.svg">
<span class="link-title">Twitter</span>
</a>

<a class="link link-chip" href="{{ meta.links.fediverse }}">
<img class="link-img" src="/images/ic/mastodon.svg">
<span class="link-title">Fediverse</span>
</a>

<a class="link link-chip" href="{{ meta.links.linkedin }}">
<img class="link-img" src="/images/ic/linkedin.svg">
<span class="link-title">LinkedIn</span>
</a>

<a class="link link-chip" href="{{ meta.links.telegram }}">
<img class="link-img" src="/images/ic/telegram.svg">
<span class="link-title">Telegram</span>
{% assign links = "Twitter Fediverse LinkedIn Telegram" | split: " " %}
{% for linkName in links %}
{% assign link = linkName | downcase %}
<a class="link link-chip" href="{{ meta.links[link] }}">
<img class="link-img" src="/images/ic/{{ link }}.svg">
<span class="link-title">{{ linkName }}</span>
</a>
{% endfor %}

</div>

+ 5
- 14
pages/index.html View File

@@ -20,21 +20,12 @@ permalink: /
<a href="/files/resume.pdf">my resume</a> here, along with a few ways to <a href="/contact/">contact me</a>.
</p>

<a class="link" href="{{ meta.links.twitter }}">
<img class="link-img" src="/images/ic/twitter.svg">
</a>

<a class="link" href="{{ meta.links.fediverse }}">
<img class="link-img" src="/images/ic/mastodon.svg">
</a>

<a class="link" href="{{ meta.links.github }}">
<img class="link-img" src="/images/ic/github.svg">
</a>

<a class="link" href="{{ meta.links.linkedin }}">
<img class="link-img" src="/images/ic/linkedin.svg">
{% assign links = "twitter fediverse github linkedin" | split: " " %}
{% for link in links %}
<a class="link" href="{{ meta.links[link] }}">
<img class="link-img" src="/images/ic/{{ link }}.svg">
</a>
{% endfor %}
</div>
</div>



+ 279
- 0
pages/licenses.md View File

@@ -0,0 +1,279 @@
---
layout: page
permalink: /licenses/
---

<div class="text">

# Open Source Licenses

This page lists all (I hope) of the open source projects that are used to create, update, and maintain my personal site.

## [11ty](https://11ty.dev/)

```
MIT License

Copyright (c) 2020 Zach Leatherman @zachleat

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.
```

## [NodeJS](https://nodejs.org/)

```
Copyright Node.js contributors. All rights reserved.

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.
```

## [then-request](https://github.com/then/then-request)

A request library that returns promises.

```
Copyright (c) 2014 Forbes Lindesay

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.
```

## [cheerio](https://github.com/cheeriojs/cheerio)

A fast, flexible, and lean implementation of core jQuery designed specifically for the server.

```
MIT License

Copyright (c) 2016 Matt Mueller

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.
```

## [instant.page](https://github.com/instantpage/instant.page)

A small library that preloads linked pages before a user clicks on them.

```
MIT License

Copyright (C) 2019 Alexandre Dieulot

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.
```

## [lozad.js](https://github.com/ApoorvSaxena/lozad.js)

Highly performant, light and configurable lazy loader in pure JS with no dependencies for images, iframes and more, using the IntersectionObserver API.

```

The MIT License (MIT)

Copyright (c) 2017 Apoorv Saxena

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.
```

## [git-clone](https://github.com/jaz303/git-clone)

A NodeJS interface to clone a git repository via shell commands.

```
Copyright 2014 Jason Frame

Permission to use, copy, modify, and/or distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright notice
and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
```

## [mdjavadoc](https://github.com/TheAndroidMaster/mdjavadoc)

A script that generates markdown javadocs primarily for use in Jekyll and GitHub Pages.

```
MIT License

Copyright (c) 2018 James Fenn

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.
```

## [js-yaml](https://github.com/nodeca/js-yaml)

An implementation of [YAML](http://yaml.org/), a human-friendly data serialization language, for JavaScript.

```
(The MIT License)

Copyright (C) 2011-2015 by Vitaly Puzrin

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.
```

## [Highlight.js](https://highlightjs.org/)

Highlight.js is a syntax highlighter written in JavaScript. It works in the browser as well as on the server. It works with pretty much any markup, doesn’t depend on any framework, and has automatic language detection.

```
Copyright (c) 2006, Ivan Sagalaev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of highlight.js nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
```

</div>

+ 23
- 0
pages/links.njk View File

@@ -0,0 +1,23 @@
---
pagination:
data: meta.links
size: 1
permalink: "links/{{ pagination.items[0] }}.html"
---

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Redirecting&hellip;</title>

{% set link = meta.links[pagination.items[0]] %}
<link rel="canonical" href="{{ link }}" />
<script>location="{{ link }}";</script>
<meta http-equiv="refresh" content="0; URL='{{ link }}'" />
<meta name="robots" content="noindex" />
</head>
<body>
Redirecting to <a href="{{ link }}">{{ link }}</a>.
</body>
</html>

+ 2
- 2
pages/projects/index.html View File

@@ -24,9 +24,9 @@ permalink: /projects/
<h3>{{ category.title }}</h3>
<p class="mt-0">{{ category.desc }}</p>
<div class="row">
{% for repo in category.repos %}
{% for pg in collections[category.id] %}
<div class="col col-12 col-md-6 pb-3">
{% assign project = git.projects | where: 'id', repo | first %}
{% assign project = git.projects | where: 'id', pg.fileSlug | first %}
{% include item/project.liquid, project: project %}
</div>
{% endfor %}


+ 1
- 1
pages/projects/project.html View File

@@ -3,7 +3,7 @@ layout: base
pagination:
data: git.projects
size: 1
permalink: "projects/{{ pagination.items[0].id }}/index.html"
permalink: "projects2/{{ pagination.items[0].id }}/index.html"
---

{% for project in pagination.items %}


+ 27
- 21
pages/projects/wiki.html View File

@@ -1,31 +1,37 @@
---
layout: page
layout: base
pagination:
data: git.wikis
size: 1
permalink: "projects/{{ pagination.items[0].id }}/wiki/{{ pagination.items[0].page }}.html"
---

{% for wiki in pagination.items %}
<a class="link mr-0" href="/projects/">
<i class="link-img material-icons">home</i>
</a>
<a class="link mr-0" href="/projects/{{ wiki.id }}/">
<i class="link-img material-icons">chevron_right</i>
<span class="link-title">{{ wiki.project.title }}</span>
</a>
<a class="link" href="/projects/{{ wiki.id }}/wiki/">
<i class="link-img material-icons">chevron_right</i>
<span class="link-title">Wiki</span>
</a>
<div class="bg-dark">
<div class="container my-3">
{% for wiki in pagination.items %}
<a class="link mr-0" href="/projects/">
<span class="link-title">Projects</span>
</a>
<a class="link mr-0" href="/projects/{{ wiki.id }}/">
<i class="link-img material-icons">chevron_right</i>
<span class="link-title">{{ wiki.project.title }}</span>
</a>
<a class="link" href="/projects/{{ wiki.id }}/wiki/">
<i class="link-img material-icons">chevron_right</i>
<span class="link-title">Wiki</span>
</a>
</div>
</div>

{% if wiki.page == "index" %}
<h1>{{ wiki.project.title }} Wiki</h1>
{% else %}
<h1>{{ wiki.title }}</h1>
{% endif %}
<div class="container mt-3 mb-5">
{% if wiki.page == "index" %}
<h1>{{ wiki.project.title }} Wiki</h1>
{% else %}
<h1>{{ wiki.title }}</h1>
{% endif %}

<div class="text">
{{ wiki.content | markdownify }}
<div class="text">
{{ wiki.content | markdownify }}
</div>
{% endfor %}
</div>
{% endfor %}

+ 8
- 0
projects/alarmio.html View File

@@ -0,0 +1,8 @@
---
layout: layouts/project
tags: project-app
---

Hello



+ 60
- 0
projects/attribouter.html View File

@@ -0,0 +1,60 @@
---
layout: layouts/project
tags: project-tool
---

<div class="row">
<div class="col-6 col-lg-3 order-lg-2 text text-right">
<img class="mt-3 my-lg-3" style="width: 200px;" src="https://github.com/fennifith/Attribouter/raw/main/.github/images/attribouter-contributors.png?raw=true">
</div>
<div class="col-6 col-lg-3 order-lg-3 text text-left">
<img class="mt-3 my-lg-3" style="width: 200px;" src="https://github.com/fennifith/Attribouter/raw/main/.github/images/attribouter-contributor.png?raw=true">
</div>
<div class="col-12 col-lg-6 py-3 align-self-center text-center text-lg-left">
<h3>Contributor Profiles</h3>
<p>Automatically fetches profile information to provide the most recent content - powered by <a href="/projects/git-rest-wrapper/">git-rest-wrapper</a>.</p>
</div>
</div>

<hr>

<div class="row">
<div class="col-6 col-lg-3 text text-right">
<img class="mt-3 my-lg-3" style="width: 200px;" src="https://github.com/fennifith/Attribouter/raw/main/.github/images/attribouter-licenses.png?raw=true">
</div>
<div class="col-6 col-lg-3 text text-left">
<img class="mt-3 my-lg-3" style="width: 200px;" src="https://github.com/fennifith/Attribouter/raw/main/.github/images/attribouter-license.png?raw=true">
</div>
<div class="col-12 col-lg-6 py-3 align-self-center text-center text-lg-left">
<h3>License Information</h3>
<p>Uses the <a href="https://docs.github.com/en/free-pro-team@latest/rest/reference/licenses">GitHub Licenses API</a> to provide complete license information about the application's dependencies.</p>
</div>
</div>

<hr>

<div class="row">
<div class="col-6 col-lg-3 order-lg-2 text text-right">
<img class="mt-3 my-lg-3" style="width: 200px;" src="https://github.com/fennifith/Attribouter/raw/main/.github/images/attribouter-night.png?raw=true">
</div>
<div class="col-6 col-lg-3 order-lg-3 text text-left">
<img class="mt-3 my-lg-3" style="width: 200px;" src="https://github.com/fennifith/Attribouter/raw/main/.github/images/attribouter-contributors.png?raw=true">
</div>
<div class="col-12 col-lg-6 py-3 align-self-center text-center text-lg-left">
<h3>Night Theme</h3>
<p>Adapts to the user's <a href="https://developer.android.com/guide/topics/ui/look-and-feel/darktheme">Dark Mode settings</a> to present a consistent experience across the device.</p>
</div>
</div>

<hr>

<div class="row">
<div class="col-12 col-lg-3 text-center">
<img class="mt-3 my-lg-3" style="width: 150px;" src="https://raw.githubusercontent.com/fennifith/Attribouter/main/.github/images/icon.png">
</div>
<div class="col-12 col-lg-9 py-3 align-self-center text-center text-lg-left">
<p>Special thanks to <a href="https://twitter.com/kevttob">Kevin Aguilar</a> and <a href="https://221pxls.com/">221 Pixels</a> for helping improve the libary's design/interface and creating the awesome logo!</p>
</div>
</div>



+ 6
- 0
projects/colorpickerdialog.html View File

@@ -0,0 +1,6 @@
---
layout: layouts/project
tags: project-tool
---

Hello

+ 6
- 0
projects/crasher.html View File

@@ -0,0 +1,6 @@
---
layout: layouts/project
tags: project-tool
---

Hello

+ 8
- 0
projects/declarativ.html View File

@@ -0,0 +1,8 @@
---
layout: layouts/project
tags: project-fun
---

Hello



+ 8
- 0
projects/dot.css.html View File

@@ -0,0 +1,8 @@
---
layout: layouts/project
tags: project-tool
---

Hello



+ 8
- 0
projects/exceptionaltraveler.html View File

@@ -0,0 +1,8 @@
---
layout: layouts/project
tags: project-fun
---

Hello



+ 42
- 0
projects/git-rest-wrapper.html View File

@@ -0,0 +1,42 @@
---
layout: layouts/project
tags: project-tool
---

<div class="text text-center">
<i class="material-icons" style="font-size: 100px;">devices</i>
<h3 class="mb-0">Multi-platform support</h3>
<p class="mt-0">Written in Kotlin, the library has seamless compatibility with JavaScript, NodeJS, JVM, and Android platforms. </p>
</div>

<hr>

<div class="row">
<div class="col-12 col-lg-8 order-lg-2">
<pre><code>{
"id": "user",
"name": "User Human",
"url": "https://code.horrific.dev/user",
"avatarUrl": "https://example.com/photo.png",
"websiteUrl": "https://example.com"
}</code></pre>
</div>
<div class="col-12 col-lg-4 py-3 align-self-center text-center text-lg-left">
<h3>Consistent data representation</h3>
<p>Information from multiple git hosting providers is standardized as a single, consistent data model.</p>
</div>
</div>

<hr>

<div class="row">
<div class="col-12 col-lg-4 order-lg-2 text-center">
<i class="material-icons" style="font-size: 100px;">offline_bolt</i>
</div>
<div class="col-12 col-lg-8 py-3 text-center text-lg-left">
<h3>Built-in caching &amp; fallback behavior</h3>
<p>Provides extensible in-memory and "disk" / localStorage-based caching implementations.</p>
</div>
</div>



+ 43
- 0
projects/ktordocs.html View File

@@ -0,0 +1,43 @@
---
layout: layouts/project
tags: project-tool
---

<div class="text text-center">
<img class="mt-3" style="width: 700px;" src="https://cdn.code.horrific.dev/james/ktordocs/branch/main/.meta/images/exampleEndpoint.png">
<h3 class="mb-0">Automated Documentation</h3>
<p class="mt-0">Provide comprehensive API documentation with minimal effort!</p>
</div>

<hr>

<div class="row">
<div class="col-12 col-lg-8 order-lg-2">
<pre><code>get("/api/v1/example") {
docs {
title = "Hello World"
desc = "Says hello to the world."
}

call.respondText("Hello world!")
}</code></pre>
</div>
<div class="col-12 col-lg-4 py-3 align-self-center text-center text-lg-left">
<h3>Minimal API</h3>
<p>Inline documentation helps to explain your code and ensure consistency with the implementation.</p>
</div>
</div>

<hr>

<div class="row">
<div class="col-12 col-lg-4 order-lg-2 align-self-center text-center">
<img class="mt-3 m-lg-3" style="width: 150px;" src="/images/ic/markdown-mark.png">
</div>
<div class="col-12 col-lg-8 py-3 align-self-center text-center text-lg-left">
<h3>Markdown Support</h3>
<p>Uses the <a href="https://github.com/commonmark/commonmark-java">commonmark-java</a> implementation to render any markdown syntax.</p>
</div>
</div>



+ 8
- 0
projects/metronome.html View File

@@ -0,0 +1,8 @@
---
layout: layouts/project
tags: project-app
---

Hello



+ 6
- 0
projects/scrurl.html View File

@@ -0,0 +1,6 @@
---
layout: layouts/project
tags: project-fun
---

Hello

+ 6
- 0
projects/status.html View File

@@ -0,0 +1,6 @@
---
layout: layouts/project
tags: project-deprecated
---

Hello

Loading…
Cancel
Save