import { useEffect, createContext, useContext, useState } from 'react'; import { motion } from 'framer-motion'; import { useInView } from 'react-intersection-observer'; import Lenis from '@studio-freight/lenis'; import Head from 'next/head'; import Image from "next/image"; import '@fontsource/dm-sans/400.css'; import '@fontsource/dm-sans/500.css'; import '@fontsource/dm-sans/600.css'; import '@fontsource/dm-sans/700.css'; import '@fontsource/instrument-sans/400.css'; import '@fontsource/instrument-sans/500.css'; import Link from 'next/link'; type Theme = 'black' | 'red' | 'gold'; type ThemeContextType = { theme: Theme; setTheme: (theme: Theme) => void; }; const ThemeContext = createContext({ theme: 'black', setTheme: () => {}, }); const ThemeProvider = ({ children }: { children: React.ReactNode }) => { const [theme, setTheme] = useState('black'); return (
{children}
); }; const useSmoothScroll = () => { useEffect(() => { const lenis = new Lenis({ duration: 1.2, easing: (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)), orientation: 'vertical', smoothWheel: true, touchMultiplier: 2, }); function raf(time: number) { lenis.raf(time); requestAnimationFrame(raf); } requestAnimationFrame(raf); return () => { lenis.destroy(); }; }, []); }; const FadeIn = ({ children, className = "", delay = 0 }: { children: React.ReactNode; className?: string; delay?: number }) => { const [ref, inView] = useInView({ triggerOnce: true, threshold: 0.1, rootMargin: "0px 0px -10% 0px" }); return ( {children} ); }; const GermanyText = () => { const { theme, setTheme } = useContext(ThemeContext); return ( setTheme('black')} className={theme === 'black' ? 'ring-1 ring-white/20' : ''} /> setTheme('red')} className={theme === 'red' ? 'ring-1 ring-white/20' : ''} /> setTheme('gold')} className={theme === 'gold' ? 'ring-1 ring-white/20' : ''} /> ); }; export default function Home() { useSmoothScroll(); return (
Jan-Marlon Leibl • Software Developer
Available for Work

Jan-Marlon Leibl

Software Developer
based in

Passionate about creating digital experiences, with a focus on PHP and modern web technologies.

Role Fullstack Developer
Experience 5+ Years

About

Jan-Marlon Leibl

Jan-Marlon Leibl

Fullstack Developer

Hello! I'm Jan-Marlon, but please call me Jan. I started my journey in programming at the age of 11 with C#, fascinated by a desktop application my friend created.

Today, I specialize in PHP and TypeScript development, constantly pushing the boundaries of what's possible on the web. My journey has led me from creating simple applications to developing complex systems used by thousands.

Technologies

    {['PHP', 'JavaScript', 'MySQL', 'React'].map((tech) => (
  • {tech}
  • ))}

Interests

    {[ 'Web Development', 'System Architecture', 'UI/UX Design', 'Performance Optimization' ].map((interest) => (
  • {interest}
  • ))}
Portfolio

Selected Work

{[ { title: 'ventry.host v2', year: '2025', description: 'Free file hosting revamped with a modern design and improved user experience.', tags: ['Next.js', 'Tailwind CSS', 'TypeScript'] }, { title: 'ventry.host', year: '2023', description: 'A free file hosting solution with thousands of daily visitors.', tags: ['PHP', 'JavaScript', 'MySQL'] }, { title: 'ShareUpload', year: '2022', description: 'High-performance file sharing platform with unlimited storage.', tags: ['PHP', 'MySQL', 'Performance'] }, { title: 'RestoreM', year: '2023', description: 'Discord server backup and restoration service.', tags: ['PHP', 'MySQL', 'Discord API'] } ].map((project, index) => (
{project.year}

{project.title}

{project.description}

Technologies

{project.tags.map((tag, tagIndex) => ( {tag}{tagIndex !== project.tags.length - 1 && ( )} ))}
))}
); }