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 SCard from "./server-card"; | ||||||
| import Link from "next/link"; | import Link from "next/link"; | ||||||
| 
 | 
 | ||||||
| export default function ServerBlock({}) { | export default function ServerBlock({ servers }) { | ||||||
|   return ( |   return ( | ||||||
|     <div className="p-4 w-full inline-flow align-middle justify-center space-y-4"> |     <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"> |       <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 |         All the stuff I run uses the following server machines with reverse SSH | ||||||
|         SSH connections to a{" "} |         connections to a{" "} | ||||||
|         <Link href="https://www.linode.com/?r=61251dc51397edcfacadd7f3744b258b63ad4248"> |         <Link href="https://www.linode.com/?r=61251dc51397edcfacadd7f3744b258b63ad4248"> | ||||||
|           <a |           <a | ||||||
|             target="_blank" |             target="_blank" | ||||||
|  | @ -18,14 +17,14 @@ export default function ServerBlock({}) { | ||||||
|         </Link> |         </Link> | ||||||
|         {"."} |         {"."} | ||||||
|       </p> |       </p> | ||||||
|       {Object.keys(SERVERS).map((server) => ( |       {Object.keys(servers).map((server) => ( | ||||||
|         <SCard |         <SCard | ||||||
|           server={server} |           server={server} | ||||||
|           model={SERVERS[server].model} |           model={servers[server].model} | ||||||
|           cpu={SERVERS[server].cpu} |           cpu={servers[server].cpu} | ||||||
|           gpu={SERVERS[server].gpu} |           gpu={servers[server].gpu} | ||||||
|           ram={SERVERS[server].ram} |           ram={servers[server].ram} | ||||||
|           os={SERVERS[server].os} |           os={servers[server].os} | ||||||
|         /> |         /> | ||||||
|       ))} |       ))} | ||||||
|     </div> |     </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 BasicPage from "../../components/basic-page"; | ||||||
| import PBlock from "../../components/project-block"; | 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 ( |   return ( | ||||||
|     <BasicPage page_title="Personal Projects" card_title="Some stuff I do!"> |     <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"> |       <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 BasicPage from "../../../components/basic-page"; | ||||||
| import PBlock from "../../../components/project-block"; | 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 ( |   return ( | ||||||
|     <BasicPage page_title="Misc Projects" card_title="Some other things I do!"> |     <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"> |       <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 BasicPage from "../../../components/basic-page"; | ||||||
| import PBlock from "../../../components/project-block"; | 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 ( |   return ( | ||||||
|     <BasicPage page_title="Private Services" card_title="Some stuff I host for myself!"> |     <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"> |       <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 BasicPage from "../../../components/basic-page"; | ||||||
| import PBlock from "../../../components/project-block"; | 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 ( |   return ( | ||||||
|     <BasicPage page_title="Werefox Services" card_title="Services I Host!"> |     <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"> |       <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 BasicPage from "../../../components/basic-page"; | ||||||
| import PBlock from "../../../components/project-block"; | 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 ( |   return ( | ||||||
|     <BasicPage page_title="Streaming Links" card_title="Come watch my streams!"> |     <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"> |       <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 WCard from "../../components/werefox-card"; | ||||||
| import SBlock from "../../components/server-block"; | 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 ( |   return ( | ||||||
|     <BasicPage page_title="Servers" card_title="Here are my server specs!"> |     <BasicPage page_title="Servers" card_title="Here are my server specs!"> | ||||||
|       <WCard innerText="Servers"> |       <WCard innerText="Servers"> | ||||||
|           <SBlock /> |         <SBlock servers={SERVERS} /> | ||||||
|       </WCard> |       </WCard> | ||||||
|     </BasicPage> |     </BasicPage> | ||||||
|   ); |   ); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Alexis Werefox
						Alexis Werefox