diff --git a/app/routes/_index.tsx b/app/routes/_index.tsx index adfccb2..76dbcc5 100644 --- a/app/routes/_index.tsx +++ b/app/routes/_index.tsx @@ -4,591 +4,319 @@ import { json } from "@remix-run/node"; import { useLoaderData, Link } from "@remix-run/react"; export const meta: MetaFunction = () => { - return [ - { title: "Paul W." }, - { name: "description", content: "This is my Profile!" }, - { - name: "keywords", - content: "Paul W, Paul W Portfolio, Paul W Profile, Paul W Remix", - }, - ]; + return [ + { title: "Paul W." }, + { name: "description", content: "This is my Profile!" }, + { + name: "keywords", + content: "Paul W, Paul W Portfolio, Paul W Profile, Paul W Remix", + }, + ]; }; interface BlogPost { - id: string; - title: string; - excerpt: string; - date: string; - access: string; // Where its located in the folder - tags: string[]; - hide_date?: boolean; + id: string; + title: string; + excerpt: string; + date: string; + access: string; // Where its located in the folder + tags: string[]; + hide_date?: boolean; } export async function loader() { - const posts: BlogPost[] = [ - { - id: "1", - title: "My First Post", - excerpt: "Yeah, as it says, this is my first post.", - date: "2024-01-23", - access: "myfirstpost", - tags: ["Hello, World!"], - hide_date: true, - }, - // Add more posts here - ]; + const posts: BlogPost[] = [ + { + id: "1", + title: "My First Post", + excerpt: "Yeah, as it says, this is my first post.", + date: "2024-01-23", + access: "myfirstpost", + tags: ["Hello, World!"], + hide_date: true, + }, + // Add more posts here + ]; - return json({ posts }); + return json({ posts }); } export default function Index() { - const { posts } = useLoaderData(); - const [status, setStatus] = useState(""); - const [border_status, setBorderStatus] = useState("border-gray-700"); + const { posts } = useLoaderData(); + const [status, setStatus] = useState(""); + const [border_status, setBorderStatus] = useState("border-gray-700"); - useEffect(() => { - if (status === "online") { - setBorderStatus("border-green-500"); - } else if (status === "offline") { - setBorderStatus("border-red-500"); - } else if (status === "dnd") { - setBorderStatus("border-red-600"); - } else if (status === "idle") { - setBorderStatus("border-yellow-500"); - } else { - setBorderStatus("border-gray-700"); - } - }, [status]); + useEffect(() => { + if (status === "online") { + setBorderStatus("border-green-500"); + } else if (status === "offline") { + setBorderStatus("border-gray-500"); + } else if (status === "dnd") { + setBorderStatus("border-red-600"); + } else if (status === "idle") { + setBorderStatus("border-yellow-500"); + } else { + setBorderStatus("border-gray-700"); + } + }, [status]); - useEffect(() => { - fetch( - "https://shsf-api.cottonfieldworkers.shop/api/exec/6/c084ec4a-1b20-491e-ab2e-67c5fa8881e6" - ) - .then((res) => res.json()) - .then((data) => { - setStatus(data.status); - }) - .catch((err) => { - console.error(err); - setStatus("offline"); - }); - }, []); + useEffect(() => { + fetch( + "https://shsf-api.reversed.dev/api/exec/6/c084ec4a-1b20-491e-ab2e-67c5fa8881e6" + ) + .then((res) => res.json()) + .then((data) => { + setStatus(data.status); + }) + .catch((err) => { + console.error(err); + setStatus("offline"); + }); + }, []); - return ( -
-
-
-
-
+ return ( +
+
+
+
+
+
+ +
+ {/* Hero */} +
+
+

+ Hey, I'm Paul! +

+

+ also known as{" "} + Space +

+
+
+ Paul W +
+
+

A Self-proclaimed Developer

+
+
+ + {/* About Section */} +
+

+ About Me +

+
+
+

+ Hi! I'm Paul, a + passionate developer from Germany 🇩🇪. + + I specialize in JavaScript/TypeScript development, building fun backend systems, experimenting with frontend, and occasionally breaking TypeScript. + + + I'm a big fan of open-source projects and I hope I can make a small but meaningful impact through my work. + +

+
+
-
- {/* Hero */} -
-
-

- Hey, I'm Paul! -

-

- also known as{" "} - Space -

-
-
- Paul W -
-
-

Self-proclaimed Developer

-
-
- - {/* About Section */} -
-

- About Me -

-
-
-

- Hey! I'm Paul, a - passionate Developer from{" "} - - Germany - {" "} - 🇩🇪. - - I specialize in JavaScript and Node.js development, crafting - digital experiences that make a difference. When I'm not - coding, you'll find me gaming or scrolling through my - Instagram feed. - -

-
-

- About Me -

-
-
- 🤓 - Nerd -
-
- 🎮 - Gamer -
-
- 🛠️ - Developer -
-
- 👥 - Introvert -
-
-
-
-
-
- - {/* My Blog Posts */} -
-

- Blog Posts -

-

- Man i love this posting thing, can't you tell? -

-
-
- {posts.map((post) => ( -
-
- {!post.hide_date && ( - - )} - {post.tags.map((tag) => ( - - {tag} - - ))} -
-

- {post.title} -

-

- {post.excerpt} -

- - Read More - - - - -
- ))} -
-
-
- - {/* My Dawg */} -
-

- Ma Dawg -

-
-
- Charly Image -

- This is Charly🙏 This lil fella is about{" "} - 13 Years old. Very mixed. -

-
-

- Charly -

-
-
- 🗣️ - the guy is a little deaf -
-
- 🚶 - Runs faster than me -
-
- 🐶 - Barks -
-
- 🐕 - Is a Dog (debatable) -
-
-
-
-
-
- - {/* Projects Section */} -
-

- Projects -

-

- Here are some of my projects. Some are open-source, some are not. -

-
- {projects.map((project, index) => ( -
+

+ Projects +

+

+ Here are some of my favorite projects. Some are open-source, some are not. +

+
+ {projects.map((project, index) => ( +
- {project.image && ( -
- {project.name} + {project.name} -
- )} -

- {project.name} -

-

- {project.description} -

-
- + {project.name} + +

+ {project.description} +

+
+ - Visit Project - - - - + > + Visit Project + + + + - {project.open_source && ( - - - - - Source Code - - )} + > + + + + Source Code + + )} +
+
+ ))} +
+
- {project.blog_post && ( - - - - - Read Blog - - )} -
-
- ))} -
- - - {/* Contact */} -
-

- Contact -

-
+

+ Contact +

+
-

- You can contact me via Email or on Discord. I'm always open for a - chat or a coffee tea🫖 -

- -
- - {/* My "Skills" */} -
-

- Skills -

-

- Skills? What dat❗❓ -

-
-
    - {skills.map((skill, index) => ( -
  • - {skill.image && ( - {skill.name} - )} - - {skill.name} - {skill.description} - -
  • - ))} -
-
-
- - {/* What's Next Section */} -
-

- What's Next? -

-
-
    -
  • - • Learning more ways to build Apps -
  • -
  • - • Building more fun little open-source Projects -
  • -
  • - • Working on existing Projects -
  • -
-
-
-
-
- ); + > + Discord + +
+
+ + + + ); } -const skills: { - name: string; - description: string; - image?: string; -}[] = [ - { - name: "JavaScript", - description: - "I'm a JavaScript Developer with a lot of experience in breaking packages. Js is shit and the learning curve is REALLY easy. Love it♥️", - image: "https://cdn.reversed.dev/pictures/languages/js_logo.png", - }, - { - name: "Vue.JS", - description: "Not much experience but its fine", - image: "https://cdn.reversed.dev/pictures/languages/vue.png", - }, - { - name: "Node.js", - description: "Node on the server is NOT that bad❗", - image: "https://cdn.reversed.dev/pictures/languages/nodejs.jpg", - }, - { - name: "TailwindCSS", - description: "Tailwind my beloved. All screens, crazy responsive design♥️", - image: "https://cdn.reversed.dev/pictures/languages/tailwind.png", - }, - { - name: "TypeScript", - description: - "Love it, broke it wayy to many times. 1k Compiler errors incoming", - image: "https://cdn.reversed.dev/pictures/languages/ts.png", - }, - { - name: "Docker", - description: "As i have found out, deploying isn't that hard...", - image: "https://cdn.reversed.dev/pictures/languages/docker.png", - }, - { - name: "HTML", - description: "Yes", - image: - "https://imagedelivery.net/5MYSbk45M80qAwecrlKzdQ/51703b85-ef3f-4d45-fae0-c39d4c733900/preview", - }, -]; - const projects: { - name: string; - description: string; - image?: string; - open_source: { link: string } | false; - link: string; - blog_post?: string; + name: string; + description: string; + image?: string; + open_source: { link: string } | false; + link: string; }[] = [ - { - name: "BetterNews", - description: - "A news aggregator app, custom built. No ads, no tracking, just news.", - image: "https://betternews.app/assets/icon.png", - open_source: false, - link: "https://betternews.app", - }, - { - name: "SHSF", - description: - "SHSF is a very simple self hostable API & UI for selfhosting Cloudfunctions on hard ware you already own.", - link: "https://github.com/Space-Banane/shsf", - open_source: { link: "https://github.com/Space-Banane/shsf" }, - image: "https://cdn.reversed.dev/pictures/shsf/SHSF.png", - }, - { - name: "Lil Cats", - link: "https://cats.reversed.dev", - description: "Funny Cat website. Follow cats around and feed them.", - image: "https://cats.reversed.dev/lil-cats.png", - open_source: { link: "https://github.com/Space-Banane/lil-cats" }, - }, - { - name: "Whatsapp-Chat-Analyzer", - description: - "A simple Chat Analyzer for WhatsApp Chats. All private, all yours.", - image: "https://cdn.reversed.dev/pictures/wca.png", - open_source: { link: "https://github.com/Space-Banane/whatsapp-stats" }, - link: "https://whatstat.reversed.dev", - }, - { - name: "Free QrCode Generator", - description: - "A simple QR Code Generator for free. No tracking, no ads, just QR Codes. Just like we love em.", - image: "https://cdn.reversed.dev/pictures/qrcode.jpeg", - open_source: { link: "https://github.com/reversed-dev/qr-code-gen" }, - link: "https://qr.reversed.dev", - }, - { - // Is Twitch streamer live, "Is-live", https://shsf-api.cottonfieldworkers.shop/api/exec/6/22b5d292-ccf1-473b-8838-4db550d6a1e6 - name: "Is-Live", - description: - "Is a Twitch streamer live? Check it out. Simple API, no tracking, no ads.", - image: "https://cdn.reversed.dev/pictures/islive.png", - open_source: { link: "https://github.com/Space-Banane/is-live" }, - link: "https://is-live.reversed.dev", - }, + { + name: "BetterNews", + description: + "A news feed where you submit the news.", + image: "https://betternews.app/assets/icon.png", + open_source: false, + link: "https://betternews.app", + }, + { + name: "SHSF", + description: + "Self-hostable \"Cloud Functions\" for your own hardware.", + link: "https://github.com/Space-Banane/shsf", + open_source: { link: "https://github.com/Space-Banane/shsf" }, + image: "https://cdn.reversed.dev/pictures/shsf/SHSF.png", + }, + { + name: "Lil Cats", + link: "https://cats.reversed.dev", + description: "Follow cats around and feed them. (Made with GPT-4.1 because I wanted to test it)", + image: "https://cats.reversed.dev/lil-cats.png", + open_source: { link: "https://github.com/Space-Banane/lil-cats" }, + }, + { + name: "Whatsapp-Chat-Analyzer", + description: + "Analyze your Whatsapp chats with ease. Get insights, stats and more.", + image: "https://cdn.reversed.dev/pictures/wca.png", + open_source: { link: "https://github.com/Space-Banane/whatsapp-stats" }, + link: "https://whatstat.reversed.dev", + }, + { + name: "Free QrCode Generator", + description: + "I love QR codes that DO NOT NEED A REGISTER!!!! (or ones that expire)", + image: "https://cdn.reversed.dev/pictures/qrcode.jpeg", + open_source: { link: "https://github.com/reversed-dev/qr-code-gen" }, + link: "https://qr.reversed.dev", + }, + { + // Is Twitch streamer live, "Is-live", https://shsf-api.reversed.dev/api/exec/6/22b5d292-ccf1-473b-8838-4db550d6a1e6 + name: "Is-Live", + description: + "Is a Twitch streamer live? I don't know, find out!", + image: "https://cdn.reversed.dev/pictures/islive.png", + open_source: { link: "https://github.com/Space-Banane/is-live" }, + link: "https://is-live.reversed.dev", + }, ]; diff --git a/app/routes/blog.myfirstpost.tsx b/app/routes/blog.myfirstpost.tsx deleted file mode 100644 index 17deb98..0000000 --- a/app/routes/blog.myfirstpost.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { MetaFunction } from "@remix-run/react"; - -export const meta: MetaFunction = () => { - return [ - { title: "My first Post" }, - { name: "description", content: "This is my first post?" }, - { - name: "keywords", - content: "Paul W, Paul W Portfolio, Paul W Profile, Paul W Remix", - }, - ]; -}; - -export default function myfirstpost() { - return ( -
-
-
-
-
-
- -
- {/* Hero */} -
-
-

- My First (useless) Blog Post -

-
-

- Somehow have to fill the empty space 🤷 -

-
- -
- - {/* Content */} -
-

Sorry, no content to see!

-
-
-
- ); -}