import type { MetaFunction } from "@remix-run/node"; import { useEffect, useState } from "react"; 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", }, ]; }; interface BlogPost { 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 ]; return json({ posts }); } export default function Index() { 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(() => { 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"); }); }, []); return (
{/* 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) => (
{project.image && (
{project.name}
)}

{project.name}

{project.description}

Visit Project {project.open_source && ( Source Code )} {project.blog_post && ( Read Blog )}
))}
{/* 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
); } 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: "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/shsf/SHSF.png", open_source: { link: "https://github.com/Space-Banane/is-live" }, link: "https://is-live.reversed.dev", }, ];