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 online

Paul W
Developer & Gamer

Self-proclaimed Dev

{/* 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.

Fun Facts About Me

๐Ÿšฒ Avid Cyclist
๐ŸŽฎ Gaming Enthusiast
๐Ÿ› ๏ธ Builder at Heart
{/* 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 */}

My Dawg

Charly Image

This is Charly๐Ÿ™ This lil guy is about{" "} 13 Years old. Very mixed.

Charly

๐Ÿ—ฃ๏ธ the guy is a little deaf
๐Ÿšถ Runs faster than me
๐Ÿถ Barks
๐Ÿ• Is a Dog (probably)
{/* Projects Section */}

Projects

{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? Whats that? Never heard of it๐Ÿค”

    {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 JS. I love to build things with JS. Js my belovedโ™ฅ๏ธ", image: "https://cdn.reversed.dev/pictures/languages/js_logo.png", }, { name: "Vue.JS", description: "I have not much experience with Vue.js, but i its fun to play around with.", image: "https://cdn.reversed.dev/pictures/languages/vue.png", }, { name: "Node.js", description: "Node.js is my go-to Framework for Backend Development. I love to build things with Node.js.", image: "https://cdn.reversed.dev/pictures/languages/nodejs.jpg", }, { name: "TailwindCSS", description: "TailwindCSS is my go-to CSS Framework. TailwindCss ๐Ÿ™๐Ÿ™๐Ÿ™", image: "https://cdn.reversed.dev/pictures/languages/tailwind.png", }, { name: "TypeScript", description: "TypeScript is my go-to Language for larger Projects with type-safety. Typescript ๐Ÿ”ฅ", image: "https://cdn.reversed.dev/pictures/languages/ts.png", }, { name: "Docker", description: "Docker is the best Containerization Tool imo. ", image: "https://cdn.reversed.dev/pictures/languages/docker.png", }, { name: "HTML", description: "HTML is the language of the Web. I dont need to say more.", 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: "Reversed.Dev", description: "An upcomming 'Dev Studio' with a lot of cool Projects. Stay tuned!", image: "https://cdn.reversed.dev/pictures/icon.png", open_source: false, link: "https://reversed.dev", }, { name: "Luna", description: "Luna is an All-In-One Discord Bot with a lot of AI features.", image: "https://cdn.reversed.dev/pictures/luna/lunasmol.jpg", open_source: false, link: "https://luna.reversed.dev", }, { 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", }, { name: "Tyler-The-Creator Countdown", description: "A simple Countdown for the next Tyler-The-Creator Album 'Chromokopia'. Just for fun, and because i can.", link: "https://tyler.reversed.dev", open_source: { link: "https://github.com/Space-Banane/tylerthecreatorcounter", }, image: "https://i.scdn.co/image/ab67616d00001e02124e9249fada4ff3c3a0739c", }, { name: "Open Web UI - Memory Importer", description: "A simple Memory Importer for the Open Web UI. Just a fun little project.", link: "https://github.com/Space-Banane/openweb-memory-importer", open_source: { link: "https://github.com/Space-Banane/openweb-memory-importer", }, }, ];