remove files, add node files, add submodule

This commit is contained in:
brooke 2024-06-15 22:38:51 -04:00
parent 4d565dbfd4
commit 620cb2f074
37 changed files with 80 additions and 929 deletions

View file

@ -9,15 +9,11 @@ jobs:
build:
runs-on: hugo-latest
steps:
- name: Grab packages
run: apt install -y rsync openssh-client
- uses: actions/checkout@v4
with:
submodules: 'true'
submodules: "true"
- name: Run build task
run: hugo --minify
- name: Test static page
run: bash ${{ gitea.workspace }}/bin/test_static_page.sh
- name: Deploy to Server
uses: https://git.myco.systems/mirrors/ssh-deploy@main
env:
@ -27,10 +23,3 @@ jobs:
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
TARGET: ${{ secrets.REMOTE_TARGET }}
- name: Running Page Speed Insights
uses: https://github.com/JakePartusch/psi-action@v1.3
id: drafting
with:
url: "https://web.myco.systems"
threshold: 70
strategy: desktop

3
.gitignore vendored
View file

@ -11,3 +11,6 @@ hugo.linux
# Temporary lock file while building
/.hugo_build.lock
# node modules
node_modules

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "themes/hugo-maintenance"]
path = themes/hugo-maintenance
url = https://git.myco.systems/mycosystems/hugo-maintenance.git

View file

@ -1,14 +1,15 @@
# web.myco.systems
mycosystems client site
mycosystems client site, maintenance page
```
git clone https://git.myco.systems/mycosystems/web.myco.systems.git
```
```
git submodule update --init --recursive
```
**When committing changes add "web-myco/public" to gitignore and generate hugo files on the vps.**
# License:
Body text and articles are under https://creativecommons.org/licenses/by/4.0/
Everything else is MIT for the extensive use of Blowfish
Body text and articles are under [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)
Theme files are under MIT [as licensed by MycoSystems](https://git.myco.systems/mycosystems/hugo-maintenance)

View file

@ -1,6 +0,0 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

View file

@ -1,76 +0,0 @@
var layouts = [
"background",
"hero",
"profile",
"page",
"card"
]
var currentLayout = 0
function switchHomeLayout() {
var old = currentLayout
currentLayout = currentLayout == layouts.length - 1 ? 0 : currentLayout + 1
var oldDiv = document.getElementById(layouts[old])
var currentDiv = document.getElementById(layouts[currentLayout])
const layoutCode = document.querySelectorAll("code[id=layout]");
currentDiv.style.display = "block";
oldDiv.style.display = "none";
layoutCode.forEach(function (el) {
el.innerText = layouts[currentLayout];
});
}
window.addEventListener("DOMContentLoaded", (event) => {
document.querySelectorAll("#switch-layout-button").forEach((button) =>
button.addEventListener("click", function (e) {
e.preventDefault();
switchHomeLayout();
})
);
});
var list_config = [
"CardViewProse",
"CardViewScreenWidth",
"NormalView"
]
var titles = {
"CardViewProse" : "card view with constrained width",
"CardViewScreenWidth" : "card view with full width",
"NormalView" : "standard list view"
}
var currentConfig = 0
function switchList() {
var old = currentConfig
currentConfig = currentConfig == list_config.length - 1 ? 0 : currentConfig + 1
var oldDiv = document.getElementById(list_config[old])
var currentDiv = document.getElementById(list_config[currentConfig])
const configCode = document.querySelectorAll("code[id=config]");
currentDiv.style.display = "block";
oldDiv.style.display = "none";
configCode.forEach(function (el) {
el.innerText = titles[list_config[currentConfig]];
});
}
window.addEventListener("DOMContentLoaded", (event) => {
document.querySelectorAll("#switch-config-button").forEach((button) =>
button.addEventListener("click", function (e) {
e.preventDefault();
switchList();
})
);
});

View file

@ -1,26 +0,0 @@
#!/bin/bash
PORT=21300
python3 -m http.server $PORT --directory public/ &
SERVER_PID=$!
# Give it a moment to start
sleep 2
# Check if the server is running
if [ ! -d "/proc/$SERVER_PID" ]; then
echo "HTTP server failed to start."
exit 1
fi
# Check HTTP status
status_code=$(curl -o /dev/null -s -w "%{http_code}" http://localhost:$PORT)
# Kill the http server
kill $SERVER_PID
# Check if status code is 200
if [ "$status_code" -ne 200 ]; then
echo "Website returned a non-200 status code: $status_code"
exit 1
fi

3
config.yaml Normal file
View file

@ -0,0 +1,3 @@
theme: hugo-maintenance
baseURL: https://web.myco.systems/
defaultContentLanguage: en

View file

@ -1,57 +0,0 @@
theme = "blowfish"
baseURL = "https://web.myco.systems/"
defaultContentLanguage = "en"
enableRobotsTXT = true
paginate = 100
summaryLength = 30
buildDrafts = false
buildFuture = false
[imaging]
anchor = 'Center'
[taxonomies]
tag = "tags"
category = "categories"
author = "authors"
series = "series"
[sitemap]
changefreq = 'always'
filename = 'sitemap.xml'
priority = 0.5
[outputs]
home = ["HTML", "RSS", "JSON"]
[related]
threshold = 0
toLower = false
[[related.indices]]
name = "tags"
weight = 100
[[related.indices]]
name = "categories"
weight = 100
[[related.indices]]
name = "series"
weight = 50
[[related.indices]]
name = "authors"
weight = 20
[[related.indices]]
name = "date"
weight = 10
[[related.indices]]
applyFilter = false
name = 'fragmentrefs'
type = 'fragments'
weight = 10

View file

@ -1,25 +0,0 @@
languageCode = "en"
languageName = "English"
weight = 1
title = "web.myco.systems"
[params]
displayName = "EN"
isoCode = "en"
rtl = false
dateFormat = "2 January 2006"
logo = "img/android-chrome-512x512.png"
description = "Hi, welcome to MycoSystems Web!"
copyright = "Body text and articles are under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) Everything else is MIT for the extensive use of Blowfish"
[author]
name = "Myco.Systems"
image = "img/android-chrome-512x512.png"
headline = "Hi, welcome to MycoSystems Web!"
bio = "Hi, welcome to MycoSystems Web!"
links = [
{ mastodon = "https://mastodon.social/@brookeee" },
{ github = "https://git.myco.systems/explore" },
]

View file

@ -1,13 +0,0 @@
# -- Markup --
# These settings are required for the theme to function.
[goldmark]
[goldmark.renderer]
unsafe = true
[highlight]
noClasses = false
[tableOfContents]
startLevel = 2
endLevel = 4

View file

@ -1,51 +0,0 @@
[[main]]
name = "Services"
pageRef = "services"
weight = 10
[[main]]
name = "Showcase"
pageRef = "showcase"
weight = 20
[[main]]
name = "Stacks"
pageRef = "stacks"
weight = 30
#[[main]]
# name = "Merch"
# url = "http://tee.pub/lic/qwSlWVBL5zc"
# weight = 100
#[[main]]
# name = "Test"
# pageRef = "pagTest"
# weight = 1000
[[main]]
identifier = "mastodon"
pre = "mastodon"
url = "https://mastodon.social/@brookeee"
weight = 300
[[main]]
identifier = "github"
pre = "github"
url = "https://git.myco.systems/explore"
weight = 400
# -- Footer Menu --
# The footer menu is displayed at the bottom of the page, just before
# the copyright notice. Configure as per the main menu above.
[[footer]]
name = "Services"
pageRef = "services"
weight = 10
[[footer]]
name = "Showcase"
pageRef = "showcase"
weight = 30

View file

@ -1,120 +0,0 @@
# -- Theme Options --
# These options control how the theme functions and allow you to
# customise the display of your website.
#
# Refer to the theme docs for more details about each of these parameters.
# https://blowfish.page/docs/configuration/#theme-parameters
colorScheme = "forest"
defaultAppearance = "dark" # valid options: light or dark
autoSwitchAppearance = false
enableCodeCopy = true
mainSections = ["services"]
# robots = ""
disableImageOptimization = false
defaultBackgroundImage = "img/mushroom-1.png"
defaultFeaturedImage = "img/mushroom-2.png"
highlightCurrentMenuArea = true
smartTOC = true
smartTOCHideUnfocusedChildren = false
[header]
layout = "fixed" # valid options: basic, fixed, fixed-fill, fixed-fill-blur
[footer]
showMenu = true
showCopyright = true
showThemeAttribution = true
showAppearanceSwitcher = true
showScrollToTop = true
[homepage]
layout = "background" # valid options: page, profile, hero, card, background, custom
# homepageImage = "/img/iceland.jpg" # used in: hero, and card
showRecent = true
showRecentItems = 6
showMoreLink = false
showMoreLinkDest = "services"
cardView = true
cardViewScreenWidth = false
layoutBackgroundBlur = true # only used when layout equals background
[article]
showDate = false
showViews = false
showLikes = false
showDateUpdated = false
showAuthor = false
showHero = true
heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
layoutBackgroundBlur = true # only used when heroStyle equals background
showBreadcrumbs = true
showDraftLabel = true
showEdit = false
editAppendPath = false
seriesOpened = false
showHeadingAnchors = true
showPagination = true
invertPagination = false
showReadingTime = true
showTableOfContents = true
showRelatedContent = true
relatedContentLimit = 6
showTaxonomies = true
showAuthorsBadges = true
showWordCount = false
showSummary = true
sharingLinks = [ "linkedin", "twitter", "reddit", "whatsapp", "telegram", "pinterest", "facebook", "email"]
[list]
showHero = true
heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
layoutBackgroundBlur = true # only used when heroStyle equals background
layoutBackgroundHeaderSpace = false
showBreadcrumbs = false
showSummary = false
showViews = true
showLikes = true
showTableOfContents = true
showCards = true
groupByYear = false
cardView = true
cardViewScreenWidth = false
constrainItemsWidth = true
[sitemap]
excludedKinds = ["taxonomy","term"]
[taxonomy]
showTermCount = true
showHero = true
heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
showBreadcrumbs = false
showViews = true
showLikes = true
showTableOfContents = true
cardView = false
[term]
showHero = true
heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
showBreadcrumbs = false
showViews = true
showLikes = true
showTableOfContents = true
groupByYear = false
cardView = true
cardViewScreenWidth = false
[firebase]
[fathomAnalytics]
[buymeacoffee]
[verification]

View file

@ -1,5 +1,5 @@
---
title: " Myco.Systems"
title: "Myco.Systems"
description: "Hi, welcome to MycoSystems Web!"
---

View file

@ -1,17 +0,0 @@
---
title: "Services"
description: "Learn what we can do for your company."
cascade:
showDate: false
showAuthor: false
invertPagination: true
showLikes: false
showViews: false
---
{{< lead >}}
Simple, yet powerful. Learn how to use complex open-source tools.
{{< /lead >}}
Never worry about renewing a license, open-source projects can be incredibly useful for small and medium sized companies/orginizations. Don't just settle for "good enough" we help you get a secure and powerful suite of software running on your own server or managed through our secure cloud.

View file

@ -1,47 +0,0 @@
---
title: "Cloud Deployment"
draft: false
description: "Develop and deploy a personal cloud for home or business."
---
It's time to take control of your data, services, and even your company's online presence with a personal cloud hosted on your own hardware. Whether you're managing servers in your office or at a data center, our company is here to guide you through the process of turning your on-site and collocated hardware into a versatile personal cloud and gateway to your organization's digital ecosystem.
## Bring Your Own Server or Take A Recommendation
#### Bring your own server:
We provide service "stack" recommendations and support for any hardware you would like to bring into your personal cloud, this could be a collocated server or an old desktop. We will tailor a group of applications for you and/or your employees based on stated need.
#### Take a recommendation:
We have experience building routers, streaming servers/CDNs, compute dedicated machines, and home servers that use less than 20 watts under load. We will help you find exactly what you need for any service without obfuscating any of the important details.
### We want to help you:
- Run a server in your home or office to secure you or your client's data.
- Efficiently scale your development process without paying monthly to a cloud provider or wait for provisioning.
- Decentralize your cloud and make it accessible anywhere [by using a "mesh" VPN.](#decentralized-systems--security)
## Decentralized Systems & Security
> Leverage a "mesh" VPN to connect all of your on-site and off-site hardware.
A self-hosted virtual private network enables you to connect hardware, say in an office/home or collocation building, securely. With a mesh network tool like [Netmaker](https://github.com/gravitl/netmaker), you can allow all of your servers to think they are on the same subnet, using true P2P connections, without opening any ports.
Mesh VPNs allow you to completely close off a host's firewall, but still provide a way for internal or external users to access that content. Proxy the content through another server that is protected with [DDoS mitigation](https://github.com/crowdsecurity/crowdsec) or only allow access to users with WireGuard client keys.
#### Cost-Efficient Scalability:
> An e-commerce SMB can use decentralized cloud computing to easily scale its website during peak shopping seasons, ensuring optimal performance without overcommitting to expensive infrastructure.
#### Improved Resilience:
> A small manufacturing business can use decentralized backup and disaster recovery solutions to protect critical data and systems from unexpected outages or disasters.
#### Remote Work Support:
> Decentralized computing enables employees to work remotely, accessing company data and applications securely from anywhere with an internet connection.
#### Global Reach:
> An online education platform can utilize decentralized content delivery networks (CDNs) to ensure fast and reliable access to course materials for students worldwide.
### Wrapping up
These examples and more are enabled by decentralizing resources, improving redundancy, which can be achieved quickly and securely by using tools like [Netmaker](https://github.com/gravitl/netmaker), one of the top trusted open source tools used by Myco.Systems. Right now we use [Netmaker](https://github.com/gravitl/netmaker) to create a secure wireguard-based connection from anywhere, even on the road, back to our servers.

View file

@ -1,44 +0,0 @@
---
title: "Device Anonymization"
draft: false
description: "Learn how to build Blowfish manually."
---
# Lorem Ipsum
Lorem Ipsum is a **dummy text** often used in the **printing** and **typesetting** industry. It has been the industry's standard **dummy text** since the 1500s when an unknown printer took a galley of type and scrambled it to make a **type specimen book**. It has survived not only five centuries but also the leap into electronic typesetting, remaining essentially unchanged.
## Why Lorem Ipsum?
- Lorem Ipsum provides a **placeholder** for text content when designing documents, websites, or graphic layouts.
- It allows designers and developers to focus on the **visual aspects** of their work without being distracted by the actual content.
- It ensures that the layout and formatting are the primary focus during the initial design phase.
## Lorem Ipsum Variations
There are many variations of Lorem Ipsum available, but the most common version consists of a passage from Cicero's *De Finibus Bonorum et Malorum* (The Extremes of Good and Evil).
### Sample Lorem Ipsum Text
```markdown
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
```
## Lorem Ipsum Tables
You can also use Lorem Ipsum in tables:
| Header 1 | Header 2 |
| ---------------| ------------ |
| Lorem ipsum | dolor sit |
| amet, | consectetur |
| adipiscing | elit. |
## Conclusion
In summary, Lorem Ipsum is a valuable tool for designers and developers to create aesthetically pleasing layouts without getting bogged down by content creation. It offers flexibility in terms of variations and can be easily integrated into various design projects using Markdown formatting or other markup languages.
```javascript
// Here's a JavaScript snippet
console.log("Hello, world!");
```

View file

@ -1,44 +0,0 @@
---
title: "Server Hardware Deployment"
draft: false
description: "Learn how to build Blowfish manually."
---
# Lorem Ipsum
Lorem Ipsum is a **dummy text** often used in the **printing** and **typesetting** industry. It has been the industry's standard **dummy text** since the 1500s when an unknown printer took a galley of type and scrambled it to make a **type specimen book**. It has survived not only five centuries but also the leap into electronic typesetting, remaining essentially unchanged.
## Why Lorem Ipsum?
- Lorem Ipsum provides a **placeholder** for text content when designing documents, websites, or graphic layouts.
- It allows designers and developers to focus on the **visual aspects** of their work without being distracted by the actual content.
- It ensures that the layout and formatting are the primary focus during the initial design phase.
## Lorem Ipsum Variations
There are many variations of Lorem Ipsum available, but the most common version consists of a passage from Cicero's *De Finibus Bonorum et Malorum* (The Extremes of Good and Evil).
### Sample Lorem Ipsum Text
```markdown
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
```
## Lorem Ipsum Tables
You can also use Lorem Ipsum in tables:
| Header 1 | Header 2 |
| ---------------| ------------ |
| Lorem ipsum | dolor sit |
| amet, | consectetur |
| adipiscing | elit. |
## Conclusion
In summary, Lorem Ipsum is a valuable tool for designers and developers to create aesthetically pleasing layouts without getting bogged down by content creation. It offers flexibility in terms of variations and can be easily integrated into various design projects using Markdown formatting or other markup languages.
```javascript
// Here's a JavaScript snippet
console.log("Hello, world!");
```

View file

@ -1,44 +0,0 @@
---
title: "Online Privacy Consulting"
draft: false
description: "Learn how to build Blowfish manually."
---
# Lorem Ipsum
Lorem Ipsum is a **dummy text** often used in the **printing** and **typesetting** industry. It has been the industry's standard **dummy text** since the 1500s when an unknown printer took a galley of type and scrambled it to make a **type specimen book**. It has survived not only five centuries but also the leap into electronic typesetting, remaining essentially unchanged.
## Why Lorem Ipsum?
- Lorem Ipsum provides a **placeholder** for text content when designing documents, websites, or graphic layouts.
- It allows designers and developers to focus on the **visual aspects** of their work without being distracted by the actual content.
- It ensures that the layout and formatting are the primary focus during the initial design phase.
## Lorem Ipsum Variations
There are many variations of Lorem Ipsum available, but the most common version consists of a passage from Cicero's *De Finibus Bonorum et Malorum* (The Extremes of Good and Evil).
### Sample Lorem Ipsum Text
```markdown
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
```
## Lorem Ipsum Tables
You can also use Lorem Ipsum in tables:
| Header 1 | Header 2 |
| ---------------| ------------ |
| Lorem ipsum | dolor sit |
| amet, | consectetur |
| adipiscing | elit. |
## Conclusion
In summary, Lorem Ipsum is a valuable tool for designers and developers to create aesthetically pleasing layouts without getting bogged down by content creation. It offers flexibility in terms of variations and can be easily integrated into various design projects using Markdown formatting or other markup languages.
```javascript
// Here's a JavaScript snippet
console.log("Hello, world!");
```

View file

@ -1,23 +0,0 @@
---
title: "Web Development & Design"
draft: false
description: "Learn how we can help you build fast and beautiful websites."
---
We present a simple solution for scalable websites that rely on a content management system (CMS), with the use of a static site CMS (i.e. [Decap CMS](https://github.com/decaporg/decap-cms), or it's fork [Static CMS](https://github.com/StaticJsCMS/static-cms)), an optional analytics platform like [Plausible](https://github.com/plausible/analytics), and a static site generator (i.e. [Hugo](https://github.com/gohugoio/hugo) or [Jekyll](https://github.com/jekyll/jekyll)) you can quickly and efficiently deploy new pages to a website with a pipeline that works for you.
### Why Static Sites? And, why this stack?
- **Full In-House Control:** Your data, your rules. You don't have to give any monthly fees for Google Analytics or a managed hosting provider. Nothing is obfuscated, and all important details are at your fingertips. No data is collected of you or your users, Plausible is not just GDPR complaint but collects truly generalized data that still allows you to get the information you need without sacrificing user privacy.
- **Version Control:** All your code resides in a Git repository alongside your content and a static site CMS is built to run CI/CD for your git repository. This means you can easily track all changes made to your website and quickly deploy it to a new server during an outage or upgrade.
- **Customization:** Hugo brings a world of customization to your fingertips. Choose from a wide array of prebuilt themes or engage our team to draft a theme from scratch, perfectly tailored to you. We want to make it easy for your organization to have a snappy and reliable web presence. [Take a look at the theme we used for this website](https://blowfish.page/).
- **Usability:** Don't sacrifice the usability afforded by tools like WordPress, most static site content management platforms we use and recommend provide a helpful UI to walk you through the process of managing your website. [Static CMS demo](https://demo.staticcms.org/).
### Cost Savings
All of these services can be entirely self-hosted on a VPS that costs less than [5 dollars a month](https://www.hetzner.com/cloud). Less than 15 dollars if your organization requires dedicated resources on your VPS.
Don't want your Git repository to be running on an off-site server? Separate your pipeline into physically disparate servers by purchasing a machine to function as a local Git repository that is accessible from a public IP using a [decentrialized system](/services/cloud-deploy/#decentralized-systems--security). Better yet, repurpose an old computer to function as your own mini home datacenter.

View file

@ -1,44 +0,0 @@
---
title: "Web Hosting"
draft: false
description: "Learn how to build Blowfish manually."
---
# Lorem Ipsum
Lorem Ipsum is a **dummy text** often used in the **printing** and **typesetting** industry. It has been the industry's standard **dummy text** since the 1500s when an unknown printer took a galley of type and scrambled it to make a **type specimen book**. It has survived not only five centuries but also the leap into electronic typesetting, remaining essentially unchanged.
## Why Lorem Ipsum?
- Lorem Ipsum provides a **placeholder** for text content when designing documents, websites, or graphic layouts.
- It allows designers and developers to focus on the **visual aspects** of their work without being distracted by the actual content.
- It ensures that the layout and formatting are the primary focus during the initial design phase.
## Lorem Ipsum Variations
There are many variations of Lorem Ipsum available, but the most common version consists of a passage from Cicero's *De Finibus Bonorum et Malorum* (The Extremes of Good and Evil).
### Sample Lorem Ipsum Text
```markdown
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
```
## Lorem Ipsum Tables
You can also use Lorem Ipsum in tables:
| Header 1 | Header 2 |
| ---------------| ------------ |
| Lorem ipsum | dolor sit |
| amet, | consectetur |
| adipiscing | elit. |
## Conclusion
In summary, Lorem Ipsum is a valuable tool for designers and developers to create aesthetically pleasing layouts without getting bogged down by content creation. It offers flexibility in terms of variations and can be easily integrated into various design projects using Markdown formatting or other markup languages.
```javascript
// Here's a JavaScript snippet
console.log("Hello, world!");
```

View file

@ -1,25 +0,0 @@
---
title: "Showcase"
description: "Learn what we can do for your company."
cascade:
showDate: false
showAuthor: false
invertPagination: true
showLikes: false
showViews: false
showTableOfContents: false
showBreadcrumbs: true
---
{{< lead >}}
Simple, yet powerful. Learn how to use complex open-source tools.
{{< /lead >}}
{{< timeline >}}
{{< timelineItem icon="link" header="Functional and Accessible Websites" subheader="Click image to expand" >}}
<img style="border-radius:5px;margin:0px !important;" src="https://cdn.myco.systems/images/desktop-showcase-2.png"/>
{{< /timelineItem >}}
{{< /timeline >}}

View file

@ -1,17 +0,0 @@
---
title: "Stacks"
description: "Learn what we can do for your company."
cascade:
showDate: false
showAuthor: false
invertPagination: true
showLikes: false
showViews: false
---
{{< lead >}}
Simple, yet powerful. Learn how to use complex open-source tools.
{{< /lead >}}
Never worry about renewing a license, open-source projects can be incredibly useful for small and medium sized companies/orginizations. Don't just settle for "good enough" we help you get a secure and powerful suite of software running on your own server or managed through our secure cloud.

View file

@ -1,108 +0,0 @@
<head>
<meta charset="utf-8">
<meta http-equiv="content-language" content="en">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="generator" content="Hugo 0.111.3">
<title>web.myco.systems</title>
<meta name="title" content="web.myco.systems">
<meta name="description" content="Hi, welcome to MycoSystems Web!">
{{ with .Params.Tags | default .Site.Params.keywords -}}
<meta name="keywords" content="{{ range . }}{{ . }}, {{ end -}}" />
{{- end }}
{{ with .Site.Params.robots }}
<meta name="robots" content="{{ . }}" />
{{ end }}
{{ with .Params.robots }}
<meta name="robots" content="{{ . }}" />
{{ end }}
<link rel="canonical" href="{{ .Permalink }}" />
{{ range .AlternativeOutputFormats -}}
{{ printf `
<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .RelPermalink ($.Site.Title | emojify) |
safeHTML }}
{{ end -}}
{{/* Asset bundles */}}
{{ $assets := newScratch }}
{{ $cssScheme := resources.Get (printf "css/schemes/%s.css" (.Site.Params.colorScheme | default "blowfish")) }}
{{ if not $cssScheme }}
{{ $cssScheme = resources.Get "css/schemes/blowfish.css" }}
{{ end }}
{{ $assets.Add "css" (slice $cssScheme) }}
{{ $cssMain := resources.Get "css/compiled/main.css" }}
{{ $assets.Add "css" (slice $cssMain) }}
{{ $cssCustom := resources.Get "css/custom.css" }}
{{ if $cssCustom }}
{{ $assets.Add "css" (slice $cssCustom) }}
{{ end }}
{{ $bundleCSS := $assets.Get "css" | resources.Concat "css/main.bundle.css" | resources.Minify | resources.Fingerprint
"sha512" }}
<link type="text/css" rel="stylesheet" href="{{ $bundleCSS.RelPermalink }}"
integrity="{{ $bundleCSS.Data.Integrity }}" />
{{ $jsAppearance := resources.Get "js/appearance.js" }}
{{ $jsAppearance = $jsAppearance | resources.ExecuteAsTemplate "js/appearance.js" . | resources.Minify | resources.Fingerprint "sha512" }}
<script type="text/javascript" src="{{ $jsAppearance.RelPermalink }}"
integrity="{{ $jsAppearance.Data.Integrity }}"></script>
{{ if .Site.Params.enableSearch | default false }}
{{ $jsFuse := resources.Get "lib/fuse/fuse.min.js" }}
{{ $jsSearch := resources.Get "js/search.js" }}
{{ $assets.Add "js" (slice $jsFuse $jsSearch) }}
{{ end }}
{{ if .Site.Params.enableCodeCopy | default false }}
{{ $jsCode := resources.Get "js/code.js" }}
{{ $assets.Add "js" (slice $jsCode) }}
{{ end }}
{{ if .Site.Params.rtl | default false }}
{{ $jsRTL := resources.Get "js/rtl.js" }}
{{ $assets.Add "js" (slice $jsRTL) }}
{{ end }}
{{ if $assets.Get "js" }}
{{ $bundleJS := $assets.Get "js" | resources.Concat "js/main.bundle.js" | resources.Minify | resources.Fingerprint
"sha512" }}
<script defer type="text/javascript" id="script-bundle" src="{{ $bundleJS.RelPermalink }}"
integrity="{{ $bundleJS.Data.Integrity }}" data-copy="{{ i18n " code.copy" }}" data-copied="{{ i18n " code.copied"
}}"></script>
{{ end }}
<script src="{{ "js/zoom.min.js" | relURL }}"></script>
{{/* Icons */}}
{{ if templates.Exists "partials/favicons.html" }}
{{ partialCached "favicons.html" .Site }}
{{ else }}
<link rel="apple-touch-icon" sizes="180x180" href="{{ "apple-touch-icon.png" | relURL }}" />
<link rel="icon" type="image/png" sizes="32x32" href="{{ "favicon-32x32.png" | relURL }}" />
<link rel="icon" type="image/png" sizes="16x16" href="{{ "favicon-16x16.png" | relURL }}" />
<link rel="manifest" href="{{ "site.webmanifest" | relURL }}" />
{{ end }}
{{/* Social */}}
<meta property="og:title" content="Myco.Systems co-op contracting">
<meta property="og:description" content="Hi, welcome to MycoSystems Web!">
<meta property="og:type" content="website">
<meta property="og:url" content="https://web.myco.systems/">
<meta property="og:site_name" content="web.myco.systems">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Myco.Systems co-op contracting">
<meta name="twitter:description" content="Hi, welcome to MycoSystems Web!">
{{/* Schema */}}
{{ partial "schema.html" . }}
{{/* Me */}}
{{ with .Site.Author.name }}
<meta name="author" content="{{ . }}" />{{ end }}
{{ with .Site.Author.links }}
{{ range $links := . }}
{{ range $name, $url := $links }}
<link href="{{ $url }}" rel="me" />{{ end }}
{{ end }}
{{ end }}
{{/* Vendor */}}
{{ partial "vendor.html" . }}
{{/* Analytics */}}
{{ partial "analytics/main.html" .Site }}
{{/* Extend head - eg. for custom analytics scripts, etc. */}}
{{ if templates.Exists "partials/extend-head.html" }}
{{ partialCached "extend-head.html" .Site }}
{{ end }}
<meta name="theme-color"/>
</head>

View file

@ -1,71 +0,0 @@
{{ $disableImageOptimization := .Site.Params.disableImageOptimization | default false }}
<article class="max-w-full prose dark:prose-invert">
<div class="relative">
<div class="absolute inset-x-0 bottom-0 h-1/2 bg-gray-100"></div>
<div class="mx-auto max-w-7xl p-0">
<div class="relative sm:overflow-hidden">
<div class="fixed inset-x-0 top-0" style="z-index:-10">
{{ $homepageImage := "" }}
{{ with .Site.Params.defaultBackgroundImage }}{{ $homepageImage = resources.Get . }}{{ end }}
{{ with .Site.Params.homepage.homepageImage }}{{ $homepageImage = resources.Get . }}{{ end }}
{{ if not (eq $homepageImage "") }}
<img class="w-full h-[1000px] object-cover m-0 nozoom" src="{{ $homepageImage.RelPermalink }}" role="presentation">
<div
class="absolute inset-0 h-[1000px] bg-gradient-to-t from-neutral dark:from-neutral-800 to-transparent mix-blend-normal">
</div>
<div
class="opacity-60 absolute inset-0 h-[1000px] bg-gradient-to-t from-neutral dark:from-neutral-800 to-neutral-100 dark:to-neutral-800 mix-blend-normal">
</div>
{{ end }}
</div>
<div class="relative px-8 py-16 flex flex-col items-center justify-center text-center">
{{ with .Site.Author.image }}
{{ $authorImage := resources.Get . }}
{{ if $authorImage }}
{{ if not $disableImageOptimization }}
{{ $authorImage = $authorImage.Fill "288x288" }}
{{ end }}
<img class="mb-2 rounded-full h-36 w-36" width="144" height="144"
alt="{{ $.Site.Author.name | default " Author" }}" src="{{ $authorImage.RelPermalink }}" />
{{ end }}
{{ end }}
<h1 class="mb-2 text-4xl font-extrabold text-neutral-800 dark:text-neutral-200">
{{ .Site.Author.name | default .Site.Title }}
</h1>
{{ with .Site.Author.headline }}
<h2 class="mt-0 mb-0 text-xl text-neutral-800 dark:text-neutral-300">
{{ . | markdownify | emojify }}
</h2>
{{ end }}
<div class="mt-3 mb-10 text-2xl">
{{ with .Site.Author.links }}
<div class="flex flex-wrap">
{{ range $links := . }}
{{ range $name, $url := $links }}
<a class="px-2 hover:text-primary-400 text-primary-800 dark:text-primary-200" href="{{ $url }}" target="_blank"
aria-label="{{ $name | title }}" rel="me noopener noreferrer">{{ partial
"icon.html" $name }}</a>
{{ end }}
{{ end }}
</div>
{{ end }}
</div>
<section class="prose dark:prose-invert">{{ .Content | emojify }}</section>
</div>
</div>
</div>
</div>
</article>
<section>
{{ partial "recent-articles/main.html" . }}
</section>
{{ if .Site.Params.homepage.layoutBackgroundBlur | default false }}
<div id="background-blur" class="fixed opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl"></div>
<script>
window.addEventListener('scroll', function (e) {
var scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
var background_blur = document.getElementById('background-blur');
background_blur.style.opacity = (scroll / 300)
});
</script>
{{ end }}

View file

@ -1,20 +0,0 @@
{{ $jsHome := resources.Get "js/home.js" | resources.Minify | resources.Fingerprint "sha512" }}
<div id="background">
{{ partial "partials/home/background.html" . }}
</div>
<div id="hero" style="display:none">
{{ partial "partials/home/hero.html" . }}
</div>
<div id="profile" style="display:none">
{{ partial "partials/home/profile.html" . }}
</div>
<div id="card" style="display:none">
{{ partial "partials/home/card.html" . }}
</div>
<div id="page" style="display:none">
{{ partial "partials/home/page.html" . }}
</div>
<section>
{{ partial "recent-articles-demo.html" . }}
</section>
<script defer type="text/javascript" src="{{ $jsHome.RelPermalink }}" integrity="{{ $jsHome.Data.Integrity }}"></script>

View file

@ -1,32 +0,0 @@
{{ $recentArticles := 5 }}
{{ $showMoreLinkDest := "/posts" }}
{{ if .Site.Params.homepage.showRecent | default false }}
{{ if index .Site.Params.homepage "showRecentItems" }}
{{ $recentArticles = .Site.Params.homepage.showRecentItems }}
{{ end }}
<a href="/services">
<h2 class="mt-8 text-2xl font-extrabold mb-10">Services</h2>
</a>
{{ if and .Site.Params.homepage.cardView (not .Site.Params.homepage.cardViewScreenWidth) | default false }}
{{ partial "recent-articles/cardview.html" . }}
{{ else if and .Site.Params.homepage.cardView .Site.Params.homepage.cardViewScreenWidth | default false }}
{{ partial "recent-articles/cardview-fullwidth.html" . }}
{{ else }}
{{ partial "recent-articles/list.html" . }}
{{ end }}
{{ if .Site.Params.homepage.showMoreLink | default false }}
{{ if index .Site.Params.homepage "showRecentItems" }}
{{ $showMoreLinkDest = .Site.Params.homepage.showMoreLinkDest }}
{{ end }}
<div class="mt-10 flex justify-center">
<a href="{{ $showMoreLinkDest }}">
<button
class="bg-transparent hover:text-primary-500 prose dark:prose-invert font-semibold hover:text-white py-2 px-4 border border-primary-500 hover:border-transparent rounded">
{{ i18n "recent.show_more" | markdownify | emojify }}
</button>
</a>
</div>
{{ end }}
{{ end }}

55
package-lock.json generated Normal file
View file

@ -0,0 +1,55 @@
{
"name": "web.myco.systems",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"devDependencies": {
"prettier": "^3.3.2",
"prettier-plugin-go-template": "^0.0.15"
}
},
"node_modules/prettier": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz",
"integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==",
"dev": true,
"license": "MIT",
"bin": {
"prettier": "bin/prettier.cjs"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
"node_modules/prettier-plugin-go-template": {
"version": "0.0.15",
"resolved": "https://registry.npmjs.org/prettier-plugin-go-template/-/prettier-plugin-go-template-0.0.15.tgz",
"integrity": "sha512-WqU92E1NokWYNZ9mLE6ijoRg6LtIGdLMePt2C7UBDjXeDH9okcRI3zRqtnWR4s5AloiqyvZ66jNBAa9tmRY5EQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"ulid": "^2.3.0"
},
"engines": {
"node": ">=14.0.0"
},
"peerDependencies": {
"prettier": "^3.0.0"
}
},
"node_modules/ulid": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz",
"integrity": "sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==",
"dev": true,
"license": "MIT",
"bin": {
"ulid": "bin/cli.js"
}
}
}
}

6
package.json Normal file
View file

@ -0,0 +1,6 @@
{
"devDependencies": {
"prettier": "^3.3.2",
"prettier-plugin-go-template": "^0.0.15"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

@ -0,0 +1 @@
Subproject commit db0db52ec5a27e2d9d1aea649fc05fe51cefc6a4