Migrated all of the current data to seperate YAML files to be read from at build time.
This commit is contained in:
parent
042679198a
commit
57d03f2542
@ -1,13 +1,12 @@
|
||||
import { SERVERS } from "../js/variables";
|
||||
import SCard from "./server-card";
|
||||
import Link from "next/link";
|
||||
|
||||
export default function ServerBlock({}) {
|
||||
export default function ServerBlock({ servers }) {
|
||||
return (
|
||||
<div className="p-4 w-full inline-flow align-middle justify-center space-y-4">
|
||||
<p className="w-full text-lg text-center text-werefox-blue-dark dark:text-werefox-blue">
|
||||
All the stuff I run uses the following server machines with reverse
|
||||
SSH connections to a{" "}
|
||||
All the stuff I run uses the following server machines with reverse SSH
|
||||
connections to a{" "}
|
||||
<Link href="https://www.linode.com/?r=61251dc51397edcfacadd7f3744b258b63ad4248">
|
||||
<a
|
||||
target="_blank"
|
||||
@ -18,14 +17,14 @@ export default function ServerBlock({}) {
|
||||
</Link>
|
||||
{"."}
|
||||
</p>
|
||||
{Object.keys(SERVERS).map((server) => (
|
||||
{Object.keys(servers).map((server) => (
|
||||
<SCard
|
||||
server={server}
|
||||
model={SERVERS[server].model}
|
||||
cpu={SERVERS[server].cpu}
|
||||
gpu={SERVERS[server].gpu}
|
||||
ram={SERVERS[server].ram}
|
||||
os={SERVERS[server].os}
|
||||
model={servers[server].model}
|
||||
cpu={servers[server].cpu}
|
||||
gpu={servers[server].gpu}
|
||||
ram={servers[server].ram}
|
||||
os={servers[server].os}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
|
19
src/info/data/other.yml
Normal file
19
src/info/data/other.yml
Normal file
@ -0,0 +1,19 @@
|
||||
--- # Other YAML
|
||||
|
||||
"Valentine's Day Letter":
|
||||
url: "https://letter.werefox.dev"
|
||||
new_tab: true
|
||||
src: "/emoji/red_heart.svg"
|
||||
alt: "Red heart emoji"
|
||||
description: >
|
||||
Here's a little treat I put together for Valentine's Day one year, and I decided
|
||||
to just keep it up all year. Feel free to take a look if you ever need a little pick-me-up. 💙
|
||||
|
||||
Music:
|
||||
url: "https://soundcloud.com/alexis-werefox"
|
||||
new_tab: true
|
||||
src: "/emoji/studio_microphone.svg"
|
||||
alt: "Microphone emoji"
|
||||
description: >
|
||||
*Nervous sweating* Heh! Sometimes I write some music!? You're free to take a
|
||||
listen if you want! Let me know what you think! It's usually based on my poetry.
|
60
src/info/data/private.yml
Normal file
60
src/info/data/private.yml
Normal file
@ -0,0 +1,60 @@
|
||||
--- # Private YAML
|
||||
|
||||
"Pi-hole":
|
||||
url: "https://pi-hole.net/"
|
||||
new_tab: true
|
||||
src: "/emoji/pi_hole_logo.svg"
|
||||
alt: "The Pi-hole logo"
|
||||
description: >
|
||||
Pi-hole is a Linux network-level advertisement and Internet tracker blocking
|
||||
application which acts as a DNS sinkhole and optionally a DHCP server, intended for use on
|
||||
a private network. It is designed for use on embedded devices with network capability, such
|
||||
as the Raspberry Pi, but it can be used on other machines running Linux, including cloud
|
||||
implementations.
|
||||
|
||||
Wireguard:
|
||||
url: "https://www.wireguard.com/"
|
||||
new_tab: true
|
||||
src: "/emoji/wireguard_logo.png"
|
||||
alt: "The Wiregaurd logo"
|
||||
description: >
|
||||
WireGuard is a communication protocol and free and open-source software that
|
||||
implements encrypted virtual private networks, and was designed with the goals of ease of
|
||||
use, high speed performance, and low attack surface. It aims for better performance and
|
||||
more power-saving than the IPsec and OpenVPN tunneling protocols. I use this for access
|
||||
to my home network outside of being at home, and for access to #thetubes.
|
||||
|
||||
Nextcloud:
|
||||
url: "https://nextcloud.com/"
|
||||
new_tab: true
|
||||
src: "/emoji/nextcloud_logo.png"
|
||||
alt: "The Nextcloud logo"
|
||||
description: >
|
||||
Nextcloud is a suite of client-server software for creating and using file
|
||||
hosting services. It is enterprise-ready with comprehensive support options. Free and
|
||||
open-source means that anyone is allowed to install and operate it on their own private
|
||||
server devices.
|
||||
|
||||
Wikijs:
|
||||
url: "https://js.wiki/"
|
||||
new_tab: true
|
||||
src: "/emoji/wikijs_logo.svg"
|
||||
alt: "The Wiki.js logo"
|
||||
description: >
|
||||
A modern and powerful wiki app built on Node.js
|
||||
|
||||
Navidrome:
|
||||
url: "https://github.com/navidrome/navidrome"
|
||||
new_tab: true
|
||||
src: "/emoji/navidrome_logo.png"
|
||||
alt: "The Navidrome logo"
|
||||
description: >
|
||||
🎧☁️ Navidrome is a Modern Music Server and Streamer compatible with Subsonic/Airsonic
|
||||
|
||||
Kanboard:
|
||||
url: "https://kanboard.org/"
|
||||
new_tab: true
|
||||
src: "/emoji/kanboard_logo.svg"
|
||||
alt: "The Kanboard logo"
|
||||
description: >
|
||||
Kanboard is project management software that focuses on the Kanban methodology.
|
63
src/info/data/projects.yml
Normal file
63
src/info/data/projects.yml
Normal file
@ -0,0 +1,63 @@
|
||||
--- # Projects YAML
|
||||
|
||||
Services:
|
||||
url: "/projects/services"
|
||||
src: "/emoji/crt_blue_screen.svg"
|
||||
alt: "A CRT blue screen emoji"
|
||||
description: >
|
||||
Here is a list of some of the services I host.
|
||||
Some of them, because a few I keep to just myself.
|
||||
|
||||
Streaming:
|
||||
url: "/projects/streaming"
|
||||
src: "/emoji/twitch-logo.png"
|
||||
alt: "Twitch logo"
|
||||
description: >
|
||||
I stream regularly now! Mostly Beat Saber workouts.
|
||||
If you're interested in that, here are some associated links!
|
||||
|
||||
Poetry:
|
||||
url: "https://write.as/a-letter-to-the-void"
|
||||
new_tab: true
|
||||
src: "/emoji/pen.svg"
|
||||
alt: "Pen emoji"
|
||||
description: >
|
||||
Sometimes, I write poetry. It's not always the
|
||||
happiest, but I am proud of it. It would mean a lot to me if
|
||||
you took a look!
|
||||
|
||||
Blog:
|
||||
url: "https://werefox.dev"
|
||||
new_tab: true
|
||||
src: "/emoji/page_with_pencil.svg"
|
||||
alt: "Paper with a pencil emoji"
|
||||
description: >
|
||||
I don't update it too often, but I do also maintain
|
||||
a blog! You can follow it to keep up with what I'm doing as well!
|
||||
|
||||
Programming:
|
||||
url: "https://gitea.werefox.dev/shadow8t4"
|
||||
new_tab: true
|
||||
src: "/emoji/laptop.svg"
|
||||
alt: "Laptop emoji"
|
||||
description: >
|
||||
Much like this site, sometimes I program things!
|
||||
Gotta at least try and put that Comp. Sci. degree to good use!
|
||||
|
||||
"Non-public Stuff":
|
||||
url: "/projects/private"
|
||||
src: "/emoji/no_entry.svg"
|
||||
alt: "No entry emoji"
|
||||
description: >
|
||||
Here are some other things that I host for myself,
|
||||
some of these can be accessed on the internet, but I only give
|
||||
myself login access, and I have no plans on giving access to the
|
||||
public.
|
||||
|
||||
"Other Stuff":
|
||||
url: "/projects/other"
|
||||
src: "/emoji/asterisk.svg"
|
||||
alt: "Asterisk emoji"
|
||||
description: >
|
||||
Here are just some other little things I've done
|
||||
that don't really fit in any specific category.
|
22
src/info/data/servers.yml
Normal file
22
src/info/data/servers.yml
Normal file
@ -0,0 +1,22 @@
|
||||
--- # Servers YAML
|
||||
|
||||
"Intel NUC":
|
||||
model: "8i5BEH"
|
||||
cpu: "Intel i5 8529U eight-core @2.3-3.8Ghz"
|
||||
gpu: "Intel Iris Plus Graphics 655"
|
||||
ram: "16 Gb @2400Mhz"
|
||||
os: "Ubuntu Server 20.04"
|
||||
|
||||
"Raspberry Pi 4 (x2)":
|
||||
model: "B Rev 1.4"
|
||||
cpu: "BCM2835 four-core @1.5Ghz"
|
||||
gpu: "N/A"
|
||||
ram: "8 Gb"
|
||||
os: "Ubuntu Server 20.04"
|
||||
|
||||
"ASUS MINIPC":
|
||||
model: "PB50 0601"
|
||||
cpu: "AMD Ryzen 5 3550H eight-core @2.1-3.7GHz"
|
||||
gpu: "AMD Radeon Vega 8 Graphics"
|
||||
ram: "32 Gb"
|
||||
os: "Ubuntu Server 20.10"
|
66
src/info/data/services.yml
Normal file
66
src/info/data/services.yml
Normal file
@ -0,0 +1,66 @@
|
||||
--- # Services YAML
|
||||
|
||||
Mastodon:
|
||||
url: "https://masto.werefox.dev/about/"
|
||||
new_tab: true
|
||||
src: "/emoji/mastodon-logo.png"
|
||||
alt: "The Mastodon logo"
|
||||
description: >
|
||||
Mastodon is an online, self-hosted social media, and social networking service.
|
||||
It allows anyone to host their own server node in the network, and its various separately
|
||||
operated user bases are federated across many different servers.
|
||||
|
||||
Pinafore:
|
||||
url: "https://pina.werefox.dev/"
|
||||
new_tab: true
|
||||
src: "/emoji/pinafore_logo.svg"
|
||||
alt: "The Pinafore logo"
|
||||
description: >
|
||||
An alternative web client for Mastodon, focused on speed and simplicity.
|
||||
|
||||
Halcyon:
|
||||
url: "https://halcyon.werefox.dev/"
|
||||
new_tab: true
|
||||
src: "/emoji/halcyon_logo.png"
|
||||
alt: "The Halcyon logo"
|
||||
description: >
|
||||
Halcyon is standard Twitter like client of Mastodon, And you can use it just
|
||||
by login to your instance. Let's Toot like a tweet.
|
||||
|
||||
Brutaldon:
|
||||
url: "https://brutal.werefox.dev/"
|
||||
new_tab: true
|
||||
src: "/emoji/brutaldon_logo.png"
|
||||
alt: "The Brutaldon logo"
|
||||
description: >
|
||||
Brutaldon is a brutalist, Web 1.0 web interface for Mastodon and Pleroma.
|
||||
|
||||
PeerTube:
|
||||
url: "https://vid.werefox.dev/"
|
||||
new_tab: true
|
||||
src: "/emoji/peertube_logo.svg"
|
||||
alt: "The PeerTube logo"
|
||||
description: >
|
||||
PeerTube is a free and open-source, decentralized, federated video platform
|
||||
powered by ActivityPub and WebTorrent, that uses peer-to-peer technology to reduce load on
|
||||
individual servers when viewing videos.
|
||||
|
||||
Element:
|
||||
url: "https://elem.werefox.dev/"
|
||||
new_tab: true
|
||||
src: "/emoji/element_logo.svg"
|
||||
alt: "The Element logo"
|
||||
description: >
|
||||
Element (previously Riot) is an all-in-one secure chat app for teams,
|
||||
friends and organisations. Keeps conversations in your control, safe from data-mining
|
||||
and ads. Talk to everyone through the open global Matrix network, protected by proper
|
||||
end-to-end encryption. (additionally, I host a Matrix server at matrix.werefox.dev)
|
||||
|
||||
Gitea:
|
||||
url: "https://gitea.werefox.dev/"
|
||||
new_tab: true
|
||||
src: "/emoji/gitea_logo.svg"
|
||||
alt: "The Gitea logo"
|
||||
description: >
|
||||
A painless self-hosted Git service. Gitea is a community managed
|
||||
lightweight code hosting solution written in Go. It is published under the MIT license.
|
21
src/info/data/streaming.yml
Normal file
21
src/info/data/streaming.yml
Normal file
@ -0,0 +1,21 @@
|
||||
--- # Streaming YAML
|
||||
|
||||
Twitch:
|
||||
url: "https://twitch.tv/alexis_werefox"
|
||||
new_tab: true
|
||||
src: "/emoji/twitch-logo.png"
|
||||
alt: "The Twtich logo"
|
||||
description: >
|
||||
Here's a link to my Twitch channel! That's where I do my
|
||||
streams currently. I've been idly contemplating Owncast at some point, but at the
|
||||
moment with my current setup, it isn't really feasible, unfortunately.
|
||||
|
||||
PeerTube:
|
||||
url: "https://vid.werefox.dev/videos/watch/playlist/6a6f95c2-30c7-4163-a3ee-ad5dc5abefcf"
|
||||
new_tab: true
|
||||
src: "/emoji/peertube_logo.svg"
|
||||
alt: "The PeerTube logo"
|
||||
description: >
|
||||
My personal PeerTube instance is where I upload all my recordings (VODs).
|
||||
If you ever miss a stream and wanna see what ya missed, they're always uploaded here!
|
||||
This link will take you to a playlist where I put all of the recordings in order.
|
@ -1,366 +0,0 @@
|
||||
// This is where you put the testimonial users' info
|
||||
|
||||
export const TESTIMONIALS = {
|
||||
colabunny: {
|
||||
json: "https://yiff.life/@colabunny.json",
|
||||
url: "https://yiff.life/@colabunny",
|
||||
content: '"please stay your jokes are funny and smart"',
|
||||
},
|
||||
ElfLord: {
|
||||
url: "https://freedom.horse/@ElfLord",
|
||||
json: "https://freedom.horse/@ElfLord.json",
|
||||
content: `"Someday I'm gonna visit you in Texas, and when I get there, I'm going to realize you don't live in Texas at all, and I'm in the wrong state"`,
|
||||
},
|
||||
Decimal: {
|
||||
url: "https://plush.city/@Decimal",
|
||||
json: "https://plush.city/@Decimal.json",
|
||||
content: `"I will appreciate the heck out of you any day"`,
|
||||
},
|
||||
Drako_Fenris: {
|
||||
url: "https://yiff.life/@Drako_Fenris",
|
||||
json: "https://yiff.life/@Drako_Fenris.json",
|
||||
content: `"[Alexis' future wife] lives in the ether yet to be revealed. she awaits the day her big tiddie goth gf rides in on her unicorn and rescues her."`,
|
||||
},
|
||||
"00dani": {
|
||||
url: "https://vulpine.club/@00dani",
|
||||
json: "https://vulpine.club/@00dani.json",
|
||||
content: `"*falls in love with you* haha whoopsies 😳"`,
|
||||
},
|
||||
Gumby: {
|
||||
url: "https://puppy.cafe/@Gumby",
|
||||
json: "https://puppy.cafe/@Gumby.json",
|
||||
content: `"im love alexis a lot 💚 🐀"`,
|
||||
},
|
||||
AshBunny: {
|
||||
url: "https://vulpine.club/@AshBunny",
|
||||
json: "https://vulpine.club/@AshBunny.json",
|
||||
content: `"heck. I don't think I can take all of this support."`,
|
||||
},
|
||||
heatherhorns: {
|
||||
url: "https://plush.city/@heatherhorns",
|
||||
json: "https://plush.city/@heatherhorns.json",
|
||||
content: `";~;
|
||||
|
||||
gpsd gosh"`,
|
||||
},
|
||||
MutoShack: {
|
||||
url: "https://functional.cafe/@MutoShack",
|
||||
json: "https://functional.cafe/@MutoShack.json",
|
||||
content: `"yess w'all say nice things! usually "alexis is the good" and "alexis is the gay"
|
||||
|
||||
because it is the truth"`,
|
||||
},
|
||||
immychan: {
|
||||
url: "https://antabaka.me/@immychan",
|
||||
json: "https://antabaka.me/@immychan.json",
|
||||
content: `"Oh damn you're cute 😳"`,
|
||||
},
|
||||
nautilee: {
|
||||
url: "https://dragon.style/@nautilee",
|
||||
json: "https://dragon.style/@nautilee.json",
|
||||
content: `"...how are you so goshdarn cute"`,
|
||||
},
|
||||
holly: {
|
||||
url: "https://lotor.tech/users/holly",
|
||||
json: "https://lotor.tech/users/holly.json",
|
||||
content: `"wait there's still an opportunity to be in [the Testimonials page]?"`,
|
||||
},
|
||||
thufie: {
|
||||
url: "https://social.pixie.town/@thufie",
|
||||
json: "https://social.pixie.town/@thufie.json",
|
||||
content: `"banger beach bod"`,
|
||||
},
|
||||
lindsays: {
|
||||
url: "https://hackers.town/@lindsays",
|
||||
json: "https://hackers.town/@lindsays.json",
|
||||
content: `"Regarding @shadow8t4 : She's an amazing, sweet, beautiful dork, and a spectacular best friend. also, a butt."`,
|
||||
},
|
||||
};
|
||||
|
||||
// This is where I put the questions and answers for the FAQ
|
||||
|
||||
export const FAQS = {
|
||||
q1: {
|
||||
question: `"So is Werefox like a species or...?"`,
|
||||
answer: `That's a good question! No, my fursona's full name is Alexis Werefox,
|
||||
so Werefox is just a last name. I am just a fox!`,
|
||||
src: "/images/alexis_heart.png",
|
||||
alt: "Alexis giving a heart emoji",
|
||||
},
|
||||
q2: {
|
||||
question: `"How can you be Pansexual and a Lesbian?"`,
|
||||
answer: `I believe I've been told the proper term is "sapphic",
|
||||
it just means I *am* Pansexual, but I prefer those who identify more femme.`,
|
||||
src: "/images/alexis_wink.png",
|
||||
alt: "Alexis winking and giving a peace sign",
|
||||
},
|
||||
q3: {
|
||||
question: `"How do I get those Xenia stickers?"`,
|
||||
answer: `Yeah, about that. So, I've made a few posts about this, but when
|
||||
I first started giving those out, I was in a good financial position, among
|
||||
other things. Now I'm not! I will get to it when I do.`,
|
||||
src: "/images/alexis_annoyed.png",
|
||||
alt: "Alexis looking annoyed and crossing her arms",
|
||||
},
|
||||
q4: {
|
||||
question: `"What do you do?"`,
|
||||
answer: `Lots of things! Lately, though, I've been focusing on myself and my
|
||||
transition. I could use some financial support (since I'm currently
|
||||
unemployed) if you're feeling up to it and can afford it! If you want to
|
||||
know more about what I do, you can check out "Stuff I do!" from the main
|
||||
page, and "Support Me?" if you wanna toss me some funds!`,
|
||||
src: "/images/alexis_shrug.png",
|
||||
alt: "Alexis shrugging",
|
||||
},
|
||||
};
|
||||
|
||||
// This is where I put my server specifications
|
||||
|
||||
export const SERVERS = {
|
||||
"Intel NUC": {
|
||||
model: "8i5BEH",
|
||||
cpu: "Intel i5 8529U eight-core @2.3-3.8Ghz",
|
||||
gpu: "Intel Iris Plus Graphics 655",
|
||||
ram: "16 Gb @2400Mhz",
|
||||
os: "Ubuntu Server 20.04",
|
||||
},
|
||||
"Raspberry Pi 4 (x2)": {
|
||||
model: "B Rev 1.4",
|
||||
cpu: "BCM2835 four-core @1.5Ghz",
|
||||
gpu: "N/A",
|
||||
ram: "8 Gb",
|
||||
os: "Ubuntu Server 20.04",
|
||||
},
|
||||
"ASUS MINIPC": {
|
||||
model: "PB50 0601",
|
||||
cpu: "AMD Ryzen 5 3550H eight-core @2.1-3.7GHz",
|
||||
gpu: "AMD Radeon Vega 8 Graphics",
|
||||
ram: "32 Gb",
|
||||
os: "Ubuntu Server 20.10",
|
||||
},
|
||||
};
|
||||
|
||||
// An object listing the different stuff I do
|
||||
|
||||
export const PROJECTS = {
|
||||
Services: {
|
||||
url: "/projects/services",
|
||||
src: "/emoji/crt_blue_screen.svg",
|
||||
alt: "A CRT blue screen emoji",
|
||||
description: `Here is a list of some of the services I host.
|
||||
Some of them, because a few I keep to just myself.`,
|
||||
},
|
||||
Streaming: {
|
||||
url: "/projects/streaming",
|
||||
src: "/emoji/twitch-logo.png",
|
||||
alt: "Twitch logo",
|
||||
description: `I stream regularly now! Mostly Beat Saber workouts.
|
||||
If you're interested in that, here are some associated links!`,
|
||||
},
|
||||
Poetry: {
|
||||
url: "https://write.as/a-letter-to-the-void",
|
||||
new_tab: true,
|
||||
src: "/emoji/pen.svg",
|
||||
alt: "Pen emoji",
|
||||
description: `Sometimes, I write poetry. It's not always the
|
||||
happiest, but I am proud of it. It would mean a lot to me if
|
||||
you took a look!`,
|
||||
},
|
||||
Blog: {
|
||||
url: "https://werefox.dev",
|
||||
new_tab: true,
|
||||
src: "/emoji/page_with_pencil.svg",
|
||||
alt: "Paper with a pencil emoji",
|
||||
description: `I don't update it too often, but I do also maintain
|
||||
a blog! You can follow it to keep up with what I'm doing as well!`,
|
||||
},
|
||||
Programming: {
|
||||
url: "https://gitea.werefox.dev/shadow8t4",
|
||||
new_tab: true,
|
||||
src: "/emoji/laptop.svg",
|
||||
alt: "Laptop emoji",
|
||||
description: `Much like this site, sometimes I program things!
|
||||
Gotta at least try and put that Comp. Sci. degree to good use!`,
|
||||
},
|
||||
"Non-public Stuff": {
|
||||
url: "/projects/private",
|
||||
src: "/emoji/no_entry.svg",
|
||||
alt: "No entry emoji",
|
||||
description: `Here are some other things that I host for myself,
|
||||
some of these can be accessed on the internet, but I only give
|
||||
myself login access, and I have no plans on giving access to the
|
||||
public.`,
|
||||
},
|
||||
"Other Stuff": {
|
||||
url: "/projects/other",
|
||||
src: "/emoji/asterisk.svg",
|
||||
alt: "Asterisk emoji",
|
||||
description: `Here are just some other little things I've done
|
||||
that don't really fit in any specific category.`,
|
||||
},
|
||||
};
|
||||
|
||||
// An object listing the services I host
|
||||
|
||||
export const SERVICES = {
|
||||
Mastodon: {
|
||||
url: "https://masto.werefox.dev/about/",
|
||||
new_tab: true,
|
||||
src: "/emoji/mastodon-logo.png",
|
||||
alt: "The Mastodon logo",
|
||||
description: `Mastodon is an online, self-hosted social media, and social networking service.
|
||||
It allows anyone to host their own server node in the network, and its various separately
|
||||
operated user bases are federated across many different servers.`,
|
||||
},
|
||||
Pinafore: {
|
||||
url: "https://pina.werefox.dev/",
|
||||
new_tab: true,
|
||||
src: "/emoji/pinafore_logo.svg",
|
||||
alt: "The Pinafore logo",
|
||||
description: `An alternative web client for Mastodon, focused on speed and simplicity.`,
|
||||
},
|
||||
Halcyon: {
|
||||
url: "https://halcyon.werefox.dev/",
|
||||
new_tab: true,
|
||||
src: "/emoji/halcyon_logo.png",
|
||||
alt: "The Halcyon logo",
|
||||
description: `Halcyon is standard Twitter like client of Mastodon, And you can use it just
|
||||
by login to your instance. Let's Toot like a tweet.`,
|
||||
},
|
||||
Brutaldon: {
|
||||
url: "https://brutal.werefox.dev/",
|
||||
new_tab: true,
|
||||
src: "/emoji/brutaldon_logo.png",
|
||||
alt: "The Brutaldon logo",
|
||||
description: `Brutaldon is a brutalist, Web 1.0 web interface for Mastodon and Pleroma.`,
|
||||
},
|
||||
PeerTube: {
|
||||
url: "https://vid.werefox.dev/",
|
||||
new_tab: true,
|
||||
src: "/emoji/peertube_logo.svg",
|
||||
alt: "The PeerTube logo",
|
||||
description: `PeerTube is a free and open-source, decentralized, federated video platform
|
||||
powered by ActivityPub and WebTorrent, that uses peer-to-peer technology to reduce load on
|
||||
individual servers when viewing videos.`,
|
||||
},
|
||||
Element: {
|
||||
url: "https://elem.werefox.dev/",
|
||||
new_tab: true,
|
||||
src: "/emoji/element_logo.svg",
|
||||
alt: "The Element logo",
|
||||
description: `Element (previously Riot) is an all-in-one secure chat app for teams,
|
||||
friends and organisations. Keeps conversations in your control, safe from data-mining
|
||||
and ads. Talk to everyone through the open global Matrix network, protected by proper
|
||||
end-to-end encryption. (additionally, I host a Matrix server at matrix.werefox.dev)`,
|
||||
},
|
||||
Gitea: {
|
||||
url: "https://gitea.werefox.dev/",
|
||||
new_tab: true,
|
||||
src: "/emoji/gitea_logo.svg",
|
||||
alt: "The Gitea logo",
|
||||
description: `A painless self-hosted Git service. Gitea is a community managed
|
||||
lightweight code hosting solution written in Go. It is published under the MIT license.`,
|
||||
},
|
||||
};
|
||||
|
||||
// An object listing some links related to my streaming
|
||||
|
||||
export const STREAMING = {
|
||||
Twitch: {
|
||||
url: "https://twitch.tv/alexis_werefox",
|
||||
new_tab: true,
|
||||
src: "/emoji/twitch-logo.png",
|
||||
alt: "The Twtich logo",
|
||||
description: `Here's a link to my Twitch channel! That's where I do my
|
||||
streams currently. I've been idly contemplating Owncast at some point, but at the
|
||||
moment with my current setup, it isn't really feasible, unfortunately.`,
|
||||
},
|
||||
PeerTube: {
|
||||
url: "https://vid.werefox.dev/videos/watch/playlist/6a6f95c2-30c7-4163-a3ee-ad5dc5abefcf",
|
||||
new_tab: true,
|
||||
src: "/emoji/peertube_logo.svg",
|
||||
alt: "The PeerTube logo",
|
||||
description: `My personal PeerTube instance is where I upload all my recordings (VODs).
|
||||
If you ever miss a stream and wanna see what ya missed, they're always uploaded here!
|
||||
This link will take you to a playlist where I put all of the recordings in order.`,
|
||||
},
|
||||
};
|
||||
|
||||
// An object listing the services I host for myself
|
||||
|
||||
export const PRIVATE = {
|
||||
"Pi-hole": {
|
||||
url: "https://pi-hole.net/",
|
||||
new_tab: true,
|
||||
src: "/emoji/pi_hole_logo.svg",
|
||||
alt: "The Pi-hole logo",
|
||||
description: `Pi-hole is a Linux network-level advertisement and Internet tracker blocking
|
||||
application which acts as a DNS sinkhole and optionally a DHCP server, intended for use on
|
||||
a private network. It is designed for use on embedded devices with network capability, such
|
||||
as the Raspberry Pi, but it can be used on other machines running Linux, including cloud
|
||||
implementations.`,
|
||||
},
|
||||
Wireguard: {
|
||||
url: "https://www.wireguard.com/",
|
||||
new_tab: true,
|
||||
src: "/emoji/wireguard_logo.png",
|
||||
alt: "The Wiregaurd logo",
|
||||
description: `WireGuard is a communication protocol and free and open-source software that
|
||||
implements encrypted virtual private networks, and was designed with the goals of ease of
|
||||
use, high speed performance, and low attack surface. It aims for better performance and
|
||||
more power-saving than the IPsec and OpenVPN tunneling protocols. I use this for access
|
||||
to my home network outside of being at home, and for access to #thetubes.`,
|
||||
},
|
||||
Nextcloud: {
|
||||
url: "https://nextcloud.com/",
|
||||
new_tab: true,
|
||||
src: "/emoji/nextcloud_logo.png",
|
||||
alt: "The Nextcloud logo",
|
||||
description: `Nextcloud is a suite of client-server software for creating and using file
|
||||
hosting services. It is enterprise-ready with comprehensive support options. Free and
|
||||
open-source means that anyone is allowed to install and operate it on their own private
|
||||
server devices.`,
|
||||
},
|
||||
Wikijs: {
|
||||
url: "https://js.wiki/",
|
||||
new_tab: true,
|
||||
src: "/emoji/wikijs_logo.svg",
|
||||
alt: "The Wiki.js logo",
|
||||
description: `A modern and powerful wiki app built on Node.js`,
|
||||
},
|
||||
Navidrome: {
|
||||
url: "https://github.com/navidrome/navidrome",
|
||||
new_tab: true,
|
||||
src: "/emoji/navidrome_logo.png",
|
||||
alt: "The Navidrome logo",
|
||||
description: `🎧☁️ Navidrome is a Modern Music Server and Streamer compatible with Subsonic/Airsonic`,
|
||||
},
|
||||
Kanboard: {
|
||||
url: "https://kanboard.org/",
|
||||
new_tab: true,
|
||||
src: "/emoji/kanboard_logo.svg",
|
||||
alt: "The Kanboard logo",
|
||||
description: `Kanboard is project management software that focuses on the Kanban methodology.`,
|
||||
},
|
||||
};
|
||||
|
||||
// An object listing some other stuff I do that doesn't really fit neatly anywhere else
|
||||
|
||||
export const OTHER = {
|
||||
"Valentine's Day Letter": {
|
||||
url: "https://letter.werefox.dev",
|
||||
new_tab: true,
|
||||
src: "/emoji/red_heart.svg",
|
||||
alt: "Red heart emoji",
|
||||
description: `Here's a little treat I put together for Valentine's Day one year, and I decided
|
||||
to just keep it up all year. Feel free to take a look if you ever need a little pick-me-up. 💙`,
|
||||
},
|
||||
Music: {
|
||||
url: "https://soundcloud.com/alexis-werefox",
|
||||
new_tab: true,
|
||||
src: "/emoji/studio_microphone.svg",
|
||||
alt: "Microphone emoji",
|
||||
description: `*Nervous sweating* Heh! Sometimes I write some music!? You're free to take a
|
||||
listen if you want! Let me know what you think! It's usually based on my poetry.`,
|
||||
},
|
||||
};
|
@ -1,8 +1,26 @@
|
||||
import BasicPage from "../../components/basic-page";
|
||||
import PBlock from "../../components/project-block";
|
||||
import { PROJECTS } from "../../js/variables";
|
||||
|
||||
export default function Services() {
|
||||
// An object listing pages folks can visit
|
||||
export async function getStaticProps() {
|
||||
const fs = require("fs");
|
||||
const yaml = require("js-yaml");
|
||||
let PROJECTS = {};
|
||||
|
||||
try {
|
||||
let fileContent = fs.readFileSync("./data/projects.yml", "utf8");
|
||||
PROJECTS = yaml.load(fileContent);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
return {
|
||||
props: {
|
||||
PROJECTS,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export default function Services({ PROJECTS }) {
|
||||
return (
|
||||
<BasicPage page_title="Personal Projects" card_title="Some stuff I do!">
|
||||
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
|
||||
|
@ -1,8 +1,26 @@
|
||||
import BasicPage from "../../../components/basic-page";
|
||||
import PBlock from "../../../components/project-block";
|
||||
import { OTHER } from "../../../js/variables";
|
||||
|
||||
export default function Services() {
|
||||
// An object listing pages folks can visit
|
||||
export async function getStaticProps() {
|
||||
const fs = require("fs");
|
||||
const yaml = require("js-yaml");
|
||||
let OTHER = {};
|
||||
|
||||
try {
|
||||
let fileContent = fs.readFileSync("./data/other.yml", "utf8");
|
||||
OTHER = yaml.load(fileContent);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
return {
|
||||
props: {
|
||||
OTHER,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export default function Services({ OTHER }) {
|
||||
return (
|
||||
<BasicPage page_title="Misc Projects" card_title="Some other things I do!">
|
||||
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
|
||||
|
@ -1,8 +1,26 @@
|
||||
import BasicPage from "../../../components/basic-page";
|
||||
import PBlock from "../../../components/project-block";
|
||||
import { PRIVATE } from "../../../js/variables";
|
||||
|
||||
export default function Services() {
|
||||
// An object listing pages folks can visit
|
||||
export async function getStaticProps() {
|
||||
const fs = require("fs");
|
||||
const yaml = require("js-yaml");
|
||||
let PRIVATE = {};
|
||||
|
||||
try {
|
||||
let fileContent = fs.readFileSync("./data/private.yml", "utf8");
|
||||
PRIVATE = yaml.load(fileContent);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
return {
|
||||
props: {
|
||||
PRIVATE,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export default function Services({ PRIVATE }) {
|
||||
return (
|
||||
<BasicPage page_title="Private Services" card_title="Some stuff I host for myself!">
|
||||
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
|
||||
|
@ -1,8 +1,26 @@
|
||||
import BasicPage from "../../../components/basic-page";
|
||||
import PBlock from "../../../components/project-block";
|
||||
import { SERVICES } from "../../../js/variables";
|
||||
|
||||
export default function Services() {
|
||||
// An object listing pages folks can visit
|
||||
export async function getStaticProps() {
|
||||
const fs = require("fs");
|
||||
const yaml = require("js-yaml");
|
||||
let SERVICES = {};
|
||||
|
||||
try {
|
||||
let fileContent = fs.readFileSync("./data/services.yml", "utf8");
|
||||
SERVICES = yaml.load(fileContent);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
return {
|
||||
props: {
|
||||
SERVICES,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export default function Services({ SERVICES }) {
|
||||
return (
|
||||
<BasicPage page_title="Werefox Services" card_title="Services I Host!">
|
||||
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
|
||||
|
@ -1,8 +1,26 @@
|
||||
import BasicPage from "../../../components/basic-page";
|
||||
import PBlock from "../../../components/project-block";
|
||||
import { STREAMING } from "../../../js/variables";
|
||||
|
||||
export default function Services() {
|
||||
// An object listing pages folks can visit
|
||||
export async function getStaticProps() {
|
||||
const fs = require("fs");
|
||||
const yaml = require("js-yaml");
|
||||
let STREAMING = {};
|
||||
|
||||
try {
|
||||
let fileContent = fs.readFileSync("./data/streaming.yml", "utf8");
|
||||
STREAMING = yaml.load(fileContent);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
return {
|
||||
props: {
|
||||
STREAMING,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export default function Services({ STREAMING }) {
|
||||
return (
|
||||
<BasicPage page_title="Streaming Links" card_title="Come watch my streams!">
|
||||
<div className="rounded-lg ring-2 ring-werefox-grey dark:ring-werefox-grey-darker bg-werefox-grey-light dark:bg-werefox-grey">
|
||||
|
@ -2,11 +2,29 @@ import BasicPage from "../../components/basic-page";
|
||||
import WCard from "../../components/werefox-card";
|
||||
import SBlock from "../../components/server-block";
|
||||
|
||||
export default function Servers() {
|
||||
// An object listing pages folks can visit
|
||||
export async function getStaticProps() {
|
||||
const fs = require("fs");
|
||||
const yaml = require("js-yaml");
|
||||
let SERVERS = {};
|
||||
|
||||
try {
|
||||
let fileContent = fs.readFileSync("./data/servers.yml", "utf8");
|
||||
SERVERS = yaml.load(fileContent);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
return {
|
||||
props: {
|
||||
SERVERS,
|
||||
},
|
||||
};
|
||||
}
|
||||
export default function Servers({ SERVERS }) {
|
||||
return (
|
||||
<BasicPage page_title="Servers" card_title="Here are my server specs!">
|
||||
<WCard innerText="Servers">
|
||||
<SBlock />
|
||||
<SBlock servers={SERVERS} />
|
||||
</WCard>
|
||||
</BasicPage>
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user