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
					
				
					 14 changed files with 380 additions and 388 deletions
				
			
		|  | @ -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 a new issue
	
	 Alexis Werefox
						Alexis Werefox