Selected work
Projects.
A collection of products, experiments, and systems I've helped bring to life.
Selected work
A collection of products, experiments, and systems I've helped bring to life.
A modern, highly personalized profile and showcase website designed to act as my own soft, welcoming corner of the internet. This project was a perfect opportunity to move away from rigid, third-party link-in-bio services and build a fully custom space that reflects my personality, interests, and real-time presence. ## The Stack * **Framework:** Next.js utilizing the React Compiler for optimal frontend performance. * **Language:** TypeScript, keeping the entire project strictly type-safe. * **Styling:** Tailwind CSS paired with Radix UI for clean, accessible, and consistent components. * **Package Manager:** Bun, for fast dependency resolution and script execution. * **Real-Time:** Lanyard API for live Discord presence. ## Features & Live Presence This isn't just a static page; it's a living snapshot of who I am and what I'm up to. I built out dedicated sections to warmly introduce my world: * A real-time status integration that dynamically displays my current Discord presence and what I'm currently listening. * A beautiful photo gallery to showcase personal albums—like my plush family, cozy outfits, and comfort items, perfectly captured. * An eye-catching hero section and an "about me" space to share my interests, favorite media, and the things I love. * A clean, centralized social grid linking out to all my active platforms, from GitHub and Discord to Twitch and Bluesky. ## Theming & Aesthetics Because this space is deeply personal, the aesthetic had to be exactly right. I implemented a seamless theme toggle managed via Next Themes, ensuring user preferences are saved persistently while maintaining the site's signature soft, pastel-heavy look in both light and dark modes. The entire layout is highly responsive, adapting flawlessly from mobile to desktop without losing its charm. ## The Challenge Building this website meant balancing a comforting, cute aesthetic with robust, modern frontend performance. Working with the Lanyard API to fetch and render real-time presence data without causing layout shifts—and optimizing the gallery images for fast loading—provided a great opportunity to blend creative UI/UX design with strict technical standards.
Instead of relying on a dozen different fragmented plugins to run a Minecraft server, I decided to build my own all-in-one core plugin from scratch. This project handles everything from essential player commands to custom chat formatting and even hosts its own resource packs. ## The Stack * **Language:** Java, utilizing a strict, object-oriented architecture. * **Build Tool:** Maven, managed through a central configuration. * **Data Management:** A custom Database Manager to safely handle player data and server states. * **Web Integration:** A built-in HTTP server designed specifically to distribute custom server resource packs. * **Configuration:** YAML-based config files for easy server-side adjustments. ## Features & Player Mechanics This plugin replaces heavily bloated third-party tools with clean, handwritten implementations of core server mechanics: * **Teleportation System:** A fully interactive TPA system handling `/tpa`, `/tpaccept`, `/tpdeny`, and `/tphere` requests. * **Moderation Tools:** Essential oversight features including `/vanish`, `/fly`, `/invsee`, and more. * **World Navigation:** Comprehensive Home and Warp Managers for setting and managing player locations. * **Quality of Life:** Portable utility commands granting players instant access to `/enderchest`, `/workbench`, and `/trash`. ## Theming, UI & Customization A server should feel like a cohesive experience, not a patchwork of random tools. I built out dedicated managers and listeners to control the visual flow: * **Chat & Assets:** Custom chat formatting, message prefixes, and autocomplete features. * **Live Server Branding:** A fully customized `TablistManager` and dynamic MOTD handling. * **Event Tracking:** Dedicated listeners for player actions, including custom join and leave messages. ## Why Build It Myself? Writing a Minecraft plugin of this scale is a massive exercise in handling edge cases and server events. How do you ensure a player in `/vanish` stays completely invisible to the server's `TablistManager` and `JoinListener`? How do you efficiently serve custom assets without relying on a third-party web host? Building features like the `ResourcePackServer` and wrestling with complex inventory states in the `InvseeListener` made this project a fantastic deep dive into backend Java development and real-time event handling.
Meet Orbit! A full-stack real-time communication platform designed to bridge the gap between traditional social media feeds and synchronous chat. This project was a massive excuse to dive deep into WebSockets, peer-to-peer signaling, and complex client-side state to build a seamless, sub-second social experience. ## The Stack * **Framework:** Next.js (App Router) for the core architecture. * **Language:** TypeScript, keeping the entire full-stack type-safe. * **Styling:** Tailwind CSS paired with Shadcn UI for clean, accessible, and consistent components. * **Database:** SQL, queried and managed through Drizzle ORM. * **Package Manager:** Bun, for fast installs and script execution. * **Real-Time:** Pusher for instant text messaging, combined with WebRTC for peer-to-peer audio and video calls. ## Features & Social Graph Orbit isn't just a chat app; it's a space for serendipitous discovery and building connections. I built out a full social ecosystem from scratch: * Instant messaging featuring sub-second delivery, read receipts, message replies, and typing indicators. * Peer-to-peer WebRTC audio and video calls, with custom signaling and stream management. * A random matchmaking system that pairs users up for spontaneous conversations. * A robust social feed complete with hashtag parsing, mentions, and a responsive timeline. * A friendship system to send invites, manage requests, and build a private network. * Full internationalization (i18n) supporting both English and German locales. ## Trust & Safety Because a social platform is only as good as its moderation, I couldn't just skip the admin tools. I built a comprehensive moderation dashboard with automated reporting features and a reliable banning system to ensure a safe environment for users. ## The Challenge Building a real-time application meant wrestling with complex client-side state. Every incoming event needed to update the UI instantly without blocking it. Implementing WebRTC from scratch—managing `RTCPeerConnection` states, handling local/remote media streams, and negotiating ICE servers—was a massive learning curve, but incredibly rewarding to build out by hand rather than relying on a heavy third-party video SDK.
You're looking at it right now! This portfolio is a full-stack site built completely from scratch - no CMS, no template, just a space to showcase my work and experiment with the stack I actually enjoy using. ## The Stack * **Framework:** Next.js with the React Compiler enabled for automatic memoization. * **Language:** TypeScript, strict mode throughout. * **Styling:** Tailwind CSS paired with Shadcn UI and Radix primitives for accessible, consistent components. * **Database:** PostgreSQL, queried through Prisma ORM. * **Package Manager:** Bun, for fast installs and script execution. * **Email:** Resend + React Email for the contact form. * **Animations:** Framer Motion for subtle scroll-reveal and page transitions. ## Auth & Admin Authentication runs on a custom Discord OAuth2 implementation - no third-party auth library, just handled callbacks, token refresh, and session management written by hand. Logged-in admins and writers get access to a protected dashboard where they can: * Write and publish blog posts (Markdown-powered, with syntax highlighting and nested comments) * Manage projects - like this one! * Manage user roles and permissions ## Theming Light, dark, system, and two Catppuccin variants (Latte and Macchiato), because a portfolio should feel like home. ## Why Build It Myself? Every "boring" feature - auth, comments, theming, forms - became a small excuse to dig into an edge case I hadn't hit before. This site is as much a learning log as it is a portfolio.