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", }, ]; }; export default function Index() { 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-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.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 (
{/* 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.

{/* Projects Section */}

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.description}

Visit Project {project.open_source && ( Source Code )}
))}
{/* Contact */}

Contact

Feel free to reach out to me via Discord or Email. I usually respond quicker to emails.

); } const projects: { name: string; description: string; image?: string; open_source: { link: string } | false; link: string; }[] = [ { 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: "3D Print Card", description: "Showcase Your 3D Prints Beautifully", link:"card.peakprinting.top", image: "https://card.peakprinting.top/icon.png", open_source: { link: "https://github.com/Space-Banane/imsoprintingit" }, }, { 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", }, ];