+
{
posts.map((post) => (
-
-
-
-
+
diff --git a/src/pages/blog/post/[slug].astro b/src/pages/blog/post/[slug].astro
deleted file mode 100644
index 0730216..0000000
--- a/src/pages/blog/post/[slug].astro
+++ /dev/null
@@ -1,283 +0,0 @@
----
-import BlogLayout from "../../../layouts/BlogLayout.astro";
-import Socials from "../../../components/Socials.astro";
-import Sidebar from "../../../components/Blog/Sidebar.astro";
-import createExcerpt from "../../../utils/createExcerpt";
-import Tags from "../../../components/Blog/Tags.astro";
-
-import { fDate } from "developer-toolkit-utils";
-
-export var getStaticPaths = async () => {
- var posts = (await Astro.glob("../posts/*.{md,mdx}")).sort(
- (a, b) =>
- new Date(b.frontmatter.pubDate).valueOf() -
- new Date(a.frontmatter.pubDate).valueOf()
- );
- return posts.map((post) => {
- return {
- params: { slug: post.frontmatter.slug },
- props: { slug: post.frontmatter.slug },
- };
- });
-};
-
-var { slug } = Astro.params;
-
-var post = (await Astro.glob("../posts/*.{md,mdx}")).find(
- (post) => post.frontmatter.slug === slug
-);
-
-if (!post) {
- return Astro.redirect("/blog");
-}
-
-var content = post.compiledContent();
----
-
-
-
-
-
-
-
-
-
-
-
-
-
-

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/pages/credentials.astro b/src/pages/credentials.astro
new file mode 100644
index 0000000..dfa30bc
--- /dev/null
+++ b/src/pages/credentials.astro
@@ -0,0 +1,189 @@
+---
+import Layout from "../layouts/Layout.astro";
+import { getCollection } from "astro:content";
+import { createIndexHtml } from "../utils/Socials";
+
+const about = await getCollection("misc").then((res) => {
+ return res.find((item) => item.slug === "about");
+});
+
+if (!about) {
+ return {
+ status: 404,
+ };
+}
+
+const AboutContent = await about.render();
+
+
+---
+
+
+
+
+
diff --git a/src/pages/discord.astro b/src/pages/discord.astro
new file mode 100644
index 0000000..36af3ac
--- /dev/null
+++ b/src/pages/discord.astro
@@ -0,0 +1,4 @@
+---
+---
+
+
COMING SOON!
\ No newline at end of file
diff --git a/src/pages/index.astro b/src/pages/index.astro
index 259862e..a0d6e05 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -1,112 +1,265 @@
---
import Layout from "../layouts/Layout.astro";
-import Socials from "../components/Socials.astro";
-import Projects from "../components/Sections/Projects.astro";
-import Testimonials from "../components/Sections/Testimonials.astro";
-import Skills from "../components/Sections/Skills.astro";
+import { getCollection } from "astro:content";
+import { createIndexHtml } from "../utils/Socials";
+
---
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+

+
+

+
+
+
VTUBER // PROGRAMMER
+
Stella.
+
I am a Vtuber and Software Developer
+
+
+
+
+
-
Hire Me
+
-
-
-
-

-
-
-
Stella • WitherVt
-
-
- I'm a passionate developer and a dedicated VTuber hailing from the
- United States. My journey in the world of software development
- commenced at the tender age of 12, and I've been crafting innovative
- solutions ever since.
-
+
+
+
+
+
+
+

+

+
+
+
Blog
+ GFonts
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
specialization
+ Services Offering
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
Stay with me
+ Profiles
+
+
+
+
+
+
+
+
+
-
-
-
View Resume
+
+
+
+
+

+
+
+
[null]
+
Years
Experience
+
+
+
+
+125
+
CLIENTS
WORLDWIDE
+
+
+
+
[null]
+
Total
Projects
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/src/pages/note.astro b/src/pages/note.astro
deleted file mode 100644
index fea7656..0000000
--- a/src/pages/note.astro
+++ /dev/null
@@ -1,36 +0,0 @@
----
----
-
-
CW: Explicit Content, Harassment, Doxxing, Animal Abuse / Death
-
-
-
For the last six months, I have been subjected to online and real-life harassment.
-
-
During that time, I served as a staff member on a now-deleted Discord server named "The Sakura Wall."
-
-
Unfortunately, the server's owner, whom I'll refer to as "K," engaged in highly inappropriate behavior.
-
-
K was
-caught sharing explicit 18+ content, including gore, rape material, incest, and loli content, with three underage members of the server.
-
-
Upon discovering this, I confronted K, only to face a barrage of slurs and threats, including threats to involve law enforcement.
-
-
Fearing the consequences, I backed off, apologized, and chose not to revisit the matter.
-
-
However, the situation escalated when K and some staff members delved into my personal life, eventually doxing me.
-
-
This led to threats, intimidation, and, disturbingly, even a photo of my dorm room door.
-
-
The reason I am addressing this now is due to a recent incident.
-
-
Two days ago, I received a call from campus security, asking me to meet with them.
-
-
Upon arriving, I found an opened package resembling an Amazon delivery.
-
-
To my shock, inside the box was a gruesome sight—a dead cat with its head severed.
-
-
I shared the entire sequence of events with school security.
-
-
I'm exhausted and distressed by these experiences.
-
-
My only wish is to be left alone and to ensure my safety.
diff --git a/src/pages/projects.astro b/src/pages/projects.astro
deleted file mode 100644
index 41a87c1..0000000
--- a/src/pages/projects.astro
+++ /dev/null
@@ -1,155 +0,0 @@
----
-import Layout from "../layouts/Layout.astro";
-import Socials from "../components/Socials.astro";
-import CTA from "../components/CTA.astro";
----
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Hire Me
-
-
-
-
-
-
-

-
-
-
My Projects
-
-
- I am a developer specializing in creating Discord bots and
- open-source tools.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/pages/resume.astro b/src/pages/resume.astro
deleted file mode 100644
index 3ae8121..0000000
--- a/src/pages/resume.astro
+++ /dev/null
@@ -1,260 +0,0 @@
----
-import Layout from "../layouts/Layout.astro";
-import Socials from "../components/Socials.astro";
-import CTA from "../components/CTA.astro";
----
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Hire Me
-
-
-
-
-
-
-
-
-
-
-
- About Me
-
- Hello, I’m Stella, a developer specializing in creating Discord bots and open-source tools. Additionally, I identify as a TransFemale, using She/Her pronouns.
-
-
-
-
-
-
- Work Experience
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Languages
-
- -
-
English
-
-
- -
-
Polish
-
-
-
- -
-
Japanese
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/pages/vent/@/[slug].astro b/src/pages/vent/@/[slug].astro
deleted file mode 100644
index 3f1628f..0000000
--- a/src/pages/vent/@/[slug].astro
+++ /dev/null
@@ -1,132 +0,0 @@
----
-import VentLayout from "../../../layouts/VentLayout.astro";
-import { fDate, fTime } from "developer-toolkit-utils";
-
-export var getStaticPaths = async () => {
- try {
- var posts = (await Astro.glob("../posts/*.{md,mdx}")).sort(
- (a, b) =>
- new Date(b.frontmatter.date).valueOf() -
- new Date(a.frontmatter.date).valueOf()
- );
- return posts.map((post) => {
- return {
- params: { slug: post.frontmatter.slug },
- props: { slug: post.frontmatter.slug },
- };
- });
- } catch (e) {
- console.log(e);
- return [];
- }
-};
-
-var { slug } = Astro.params;
-
-
-var post = (await Astro.glob("../posts/*.{md,mdx}")).find(
- (post) => post.frontmatter.slug === slug
-);
-
-if (!post) {
- return Astro.redirect("/vent");
-}
-
-var content = post.compiledContent();
-
-let $SETTINGS = '';
-
-if (post.frontmatter.override_settings) {
- const overrideSettings = post.frontmatter.override_settings;
-
- for (const key in overrideSettings) {
- if (overrideSettings.hasOwnProperty(key)) {
- $SETTINGS += `${key}: ${overrideSettings[key]}; `;
- }
- }
-}
----
-
-
-
- Venting | {post.frontmatter.title}
-
-
-
-
-
diff --git a/src/pages/vent/index.astro b/src/pages/vent/index.astro
deleted file mode 100644
index c680cdf..0000000
--- a/src/pages/vent/index.astro
+++ /dev/null
@@ -1,55 +0,0 @@
----
-import VentLayout from "../../layouts/VentLayout.astro";
-import { fDate, fTime } from "developer-toolkit-utils";
-
-async function getSortedPosts() {
-
- try {
- const posts = await Astro.glob("./posts/*.{md,mdx}");
- return posts.sort((a, b) =>
- new Date(b.frontmatter.date).valueOf() - new Date(a.frontmatter.date).valueOf()
- );
- } catch (error) {
- console.log(error);
- return [];
- }
-}
-
-const posts = await getSortedPosts();
-
-
----
-
-
-
- Venting
-
-
-
- {posts.length == 0 || !posts[0].frontmatter.slug ?
No posts found.
: posts.map((post) => (
-
-
-
-
{post.frontmatter.title}
-
-
-
- {fDate(new Date(post.frontmatter.date))} at {fTime(new Date(post.frontmatter.date))}
-
-
-
-
-
- ))}
-
-
-
-
diff --git a/src/pages/vent/posts/.template b/src/pages/vent/posts/.template
deleted file mode 100644
index f5be23b..0000000
--- a/src/pages/vent/posts/.template
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: This is a test
-date: 2023-10-11T15:27:02.854Z
-slug: test
-override_settings:
- color: red
----
-
-Labore consequat dolor officia eiusmod aliquip minim minim veniam aute adipisicing nisi. Veniam laboris aute consectetur eu ad minim pariatur aliqua id occaecat. Aute tempor consectetur ad tempor pariatur aute laborum sint minim et occaecat. Ut amet nisi pariatur proident. Adipisicing aliqua tempor aliqua esse ullamco incididunt consectetur velit eiusmod.
-
-Amet laborum reprehenderit non non aliqua cupidatat deserunt esse mollit veniam aute. Qui cillum ex sunt ut ea aliquip adipisicing quis cillum velit do est incididunt. Pariatur reprehenderit voluptate quis ea dolore. Ullamco eu officia aliquip ullamco eu ullamco nostrud pariatur consequat laborum laboris sint id. Magna est dolore irure consectetur elit enim Lorem anim magna anim culpa.
-
-Amet esse officia laborum tempor consequat anim nisi velit velit esse anim ipsum dolore. Eiusmod amet sint nulla officia. Eu laboris enim est eiusmod fugiat adipisicing duis nisi enim occaecat nisi. Adipisicing proident et Lorem eiusmod aliqua nostrud adipisicing deserunt aliquip labore. Ea excepteur consectetur exercitation aliqua est aliqua esse Lorem ullamco esse et cillum. Non velit magna mollit mollit amet pariatur magna magna velit cupidatat cillum. Id eu commodo magna laboris deserunt aute officia proident.
-
-Amet reprehenderit nisi laboris non. Anim officia sint cillum dolor consequat esse officia in qui aliquip sunt qui. Officia mollit tempor occaecat sint et cillum eu laboris do eu qui sint est id. Reprehenderit id ea cupidatat mollit. Reprehenderit nostrud aute quis ex in esse ea enim laborum in reprehenderit. Ea nisi ea exercitation consectetur magna amet consectetur pariatur nostrud.
-
-Aute fugiat consequat laboris enim do laboris proident Lorem. In duis pariatur labore ut proident magna ea esse enim. Excepteur consectetur exercitation officia amet nostrud nisi fugiat eu excepteur veniam. Voluptate velit duis do duis sunt et elit incididunt consectetur. Excepteur laboris non deserunt proident exercitation ullamco enim ullamco ea in duis veniam do. Sunt nisi dolore consectetur reprehenderit sit qui irure.
-
-Pariatur esse adipisicing est ut elit in ea reprehenderit laboris cillum ad do. Quis duis voluptate minim cupidatat non esse est occaecat. Labore veniam labore occaecat veniam incididunt magna do fugiat irure exercitation culpa et duis.
-
-Laborum sit officia excepteur deserunt incididunt anim laboris ut proident enim culpa et eiusmod. Deserunt sunt aute consectetur laboris. Est velit esse nisi eu enim velit reprehenderit minim tempor labore irure enim. Id aliqua cupidatat enim qui et veniam excepteur ex laboris eiusmod aliquip amet.
-
-Aliqua enim occaecat veniam quis ut officia aliqua. Aliqua sint incididunt eiusmod aliqua et. Voluptate labore exercitation eu exercitation. Nulla nulla in aliqua in magna ex exercitation elit irure ea eiusmod nostrud aute. Do do cupidatat cillum elit et ipsum excepteur quis. Aliqua sit nisi sit ad mollit ea velit cupidatat exercitation. Lorem consequat irure laborum dolor fugiat veniam cillum sit.
-
-Ea qui fugiat ullamco excepteur id cupidatat cupidatat. Sit ut magna non ex sint nostrud adipisicing ullamco culpa do nostrud aliquip ex amet. Sit duis excepteur ad laborum duis nisi consectetur ex labore sunt eu culpa dolore amet.
-
-Nulla dolore fugiat ullamco occaecat. Esse minim mollit dolor exercitation. Eu tempor cillum irure officia consectetur est velit elit occaecat duis. Aute esse veniam ipsum tempor sint consectetur sit ullamco esse est. Reprehenderit dolore duis amet Lorem velit aute anim sunt ullamco. Deserunt ullamco sunt consectetur est consequat est eu commodo veniam.
\ No newline at end of file
diff --git a/src/pages/vent/posts/1.md b/src/pages/vent/posts/1.md
deleted file mode 100644
index 2efd6a3..0000000
--- a/src/pages/vent/posts/1.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: I'm dumb.
-date: 2023-10-13T04:08:49.833Z
-slug: im-dumb
----
-
-I'm really struggling, and it feels like a never-ending cycle of failure.
-
-I keep diving into new projects, hoping to make something work, but it always ends up in disappointment.
-
-- I started a Linktree-like application. It failed.
-- I created an AI. It failed.
-- I made an anime/Vtuber card game Discord bot. It failed.
-- I even attempted to establish a Vtuber agency. It failed too.
-
-It's incredibly frustrating, and I wish I could find a way to break free from this cycle.
-
-But it's not just about my projects failing; it's also about self-doubt. I don't think I'll ever be a good creator or Vtuber. I'm lost and have no idea what to post or say.
-
-It's like, "What the fuck am I doing with my life?"
-
-I'm stuffing and I don't know what to say.
-
-I'm wondering if this is all worth it. It may not be worth it, but I don't know.
\ No newline at end of file
diff --git a/src/pages/vent/posts/2.md b/src/pages/vent/posts/2.md
deleted file mode 100644
index 9963850..0000000
--- a/src/pages/vent/posts/2.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: My Journey has ended...
-date: 2023-10-13T04:08:49.833Z
-slug: my-journey-has-ended
----
-
-
-# Depression and Suicidal Thoughts
-
-Over the past months, I've been battling depression, a silent but incredibly challenging foe. This battle has been a long and exhausting one, and it's taken a significant toll on my emotional and mental well-being. Unfortunately, it's also led to suicidal thoughts, which have been both frightening and overwhelming.
-
-It's crucial to understand that mental health is a serious issue, and seeking help and support is crucial. I've made the choice to prioritize my mental health and take the necessary steps to recover and heal. If you or someone you know is struggling with similar feelings, please reach out to a mental health professional or a trusted person in your life.
-
-# Growth as a VTuber and Creator
-
-Beyond my mental health struggles, I've also come to realize that VTubing might not be the path where I can truly grow as a content creator. The VTubing community is vibrant and full of talented individuals, but it's also highly competitive and challenging. Creating engaging and entertaining content can be incredibly demanding, and it often requires a level of consistency and energy that I'm unable to maintain due to my mental health issues.
-
-I've learned a lot during my time as a VTuber, and I'm grateful for the support and encouragement I've received from my viewers and the community. However, I believe that stepping away from VTubing is the best decision for my overall well-being and future.
-
-# Moving Forward
-
-I don't want this announcement to be seen as the end, but rather as a new beginning. I'm going to focus on my mental health, seeking professional help, and working towards a healthier and happier future. It's a challenging journey, but I'm determined to come out of it stronger and more resilient.
-
-I want to express my heartfelt gratitude to everyone who has supported me on this VTubing journey. Your encouragement, comments, and interactions have meant the world to me. I hope to remain connected with you in some capacity in the future, and who knows, maybe one day I'll be in a better place to return to content creation.
-
-Remember, it's essential to prioritize your mental health and well-being, and there's no shame in seeking help when needed. Thank you for understanding, and I hope you'll continue to support and care for me as I take this important step towards healing and recovery.
-
-Take care, and stay well. 🌟
\ No newline at end of file
diff --git a/src/pages/vent/posts/3.md b/src/pages/vent/posts/3.md
deleted file mode 100644
index 9d10cd2..0000000
--- a/src/pages/vent/posts/3.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: My Journey might be starting over...
-date: 2023-10-20T13:45:39.585Z
-slug: my-journey-might-be-starting-over
----
-
-It looks like I'm returning to the world of VTubing, but this time, it's a whole new beginning. New accounts, a fresh name, exciting content, and brand-new ideas.
-
-Over the past few months, life has thrown its fair share of curveballs my way, and it's high time for a fresh start, embracing new challenges with open arms.
-
-If you're as passionate about VTubing as I am, be sure to check out the [Vtuber Wiki](https://wiki.hylia.dev). It's a goldmine of information on VTubing and the vibrant community of VTubers.
-
-On this new journey, I'm making a commitment to myself. Prioritizing mental health, seeking professional help, and taking steps toward a brighter, happier future.
-
-I can't express enough gratitude to the incredible people who have been by my side throughout this journey. Shoutout to [@whooith](https://twitter.com/whooith), [@SplattBacky](https://twitter.com/SplattBacky), [@ShardVT](https://twitter.com/ShardVT), [@EdgyVT](https://twitter.com/EdgyVT), and all of you who've been the best of friends. Your support and friendship mean the world, and I'm counting on your continued encouragement as I embark on this crucial journey of healing and recovery.
-
-Let's do this, and let's do it together!
\ No newline at end of file
diff --git a/src/pages/vent/posts/4.md b/src/pages/vent/posts/4.md
deleted file mode 100644
index a8a37f9..0000000
--- a/src/pages/vent/posts/4.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: Switching to a new account
-date: 2023-11-07T00:59:47.904Z
-slug: switching-to-a-new-account
----
-I find myself at a significant crossroads in my journey as a brand, and it is with a mixture of emotions and thoughtful consideration that I have decided to make a profound change. I am in the process of transitioning to a new account for my brand, and this decision is not one that I have taken lightly.
-
-Firstly, my existing account, [@char32vt](https://twitter.com/char32vt), has reached a point where it is no longer as active and engaging as I would like it to be. It's been a part of my brand's journey, but I believe that change is essential for growth. I cherish the memories and connections I've made on this account, but sometimes, change is necessary to breathe new life into our ambitions.
-
-Secondly, this choice to switch to [@withervt](https://twitter.com/withervt) is deeply personal and significant to me. It represents a new beginning, a fresh canvas on which I can paint the vision and values of my brand. I've spent countless hours reflecting on the path ahead, and I truly believe that this transition is the right choice. It's a step towards aligning my brand's identity with my evolving vision and aspirations.
-
-This decision is not just about changing usernames or profile pictures; it's about evolving, adapting, and staying true to the essence of what my brand stands for. While it is bittersweet to say goodbye to [@char32vt](https://twitter.com/char32vt), I am excited about the possibilities and opportunities that lie ahead with [@withervt](https://twitter.com/withervt).
-
-I am deeply grateful for the support and connections I've made thus far, and I hope that you will join me on this new journey. Your continued support means the world to me as I embark on this exciting chapter for my brand. Thank you for being a part of this transformative moment, and I look forward to sharing new experiences and accomplishments with you on [@withervt](https://twitter.com/withervt).
diff --git a/src/utils/Socials.ts b/src/utils/Socials.ts
new file mode 100644
index 0000000..c755dde
--- /dev/null
+++ b/src/utils/Socials.ts
@@ -0,0 +1,122 @@
+interface Social {
+ title: string;
+ href: string;
+ icon: string;
+ color: string;
+}
+
+
+
+const socials: Social[] = [
+ {
+ title: "Twitter",
+ href: "https://x.com/withervt/",
+ icon: "bi bi-twitter",
+ color: "#1da1f2",
+ },
+ {
+ title: "Github",
+ href: "https://github.com/withervt",
+ icon: "bi bi-github",
+ color: "#181717"
+ },
+ {
+ title: "Twitch",
+ href: "https://twitch.com/0xhylia",
+ icon: "bi bi-twitch",
+ color: "#9146ff",
+ },
+ {
+ title: "Steam",
+ href: "https://steamcommunity.com/id/hyliavt/",
+ icon: "bi bi-steam",
+ color: "#000000",
+ },
+ // {
+ // title: "Discord",
+ // href: "https://chat.hylia.dev",
+ // icon: "bi bi-discord",
+ // color: "#5865f2",
+ // },
+];
+
+function getAll(): Social[] {
+ return socials;
+}
+
+function getRandom(len: number): Social[] | Social {
+ if (len > 0) {
+ let result: Social[] = [];
+ let tempSocials = [...socials]; // Create a copy of the socials array
+
+ for (let i = 0; i < len && tempSocials.length > 0; i++) {
+ const index = Math.floor(Math.random() * tempSocials.length);
+ result.push(tempSocials[index]);
+ tempSocials.splice(index, 1); // Remove the selected item
+ }
+
+ return result;
+ } else {
+ return socials[Math.floor(Math.random() * socials.length)];
+ }
+}
+
+interface Options {
+ random?: {
+ enabled: boolean;
+ amount: number;
+ },
+ size?: {
+ width: number;
+ height: number;
+ },
+ css?: string;
+ li?: boolean; // Changed from string to boolean to indicate presence of
tags
+}
+
+function createIndexHtml(options?: Options): string {
+ let html = "";
+
+ // Function to generate the HTML for a single social item
+ const generateSocialHtml = (social: any) => {
+ const width = options?.size?.width ? `width: ${options.size.width}px;` : "";
+ const height = options?.size?.height ? `height: ${options.size.height}px;` : "";
+ const css = options?.css ? options.css : "";
+
+ const iconHtml = `
+
+
+
+ `;
+
+ // Wrap with tags if li option is true
+ return options?.li ? `${iconHtml}` : iconHtml;
+ };
+
+ if (options?.random?.enabled) {
+ let socials = getRandom(options.random.amount);
+
+ if (Array.isArray(socials)) {
+ socials.forEach((social) => {
+ html += generateSocialHtml(social);
+ });
+ } else {
+ html += generateSocialHtml(socials);
+ }
+ } else {
+ socials.forEach((social) => {
+ html += generateSocialHtml(social);
+ });
+ }
+
+ return html;
+}
+
+
+
+
+export {
+ getAll,
+ getRandom,
+ createIndexHtml
+};
\ No newline at end of file