import { Switch, Match, type JSX } from "solid-js"; import { PageHead } from "~/components/PageHead"; import { DarkModeToggle } from "~/components/DarkModeToggle"; import { Typewriter } from "~/components/Typewriter"; import { useSite } from "~/context/SiteContext"; import NessaLanding from "./nessa"; import LineageLanding from "./lineage"; import GazeLanding from "./gaze"; import InputHaloLanding from "./inputhalo"; /** * Root route handler. * * SolidStart's file router cannot match on host, so `vercel.json` host * rewrites (`nessa.freno.me/(.*) → /nessa/$1`) map each subdomain onto its * `src/routes//*` file route in production. The vinxi dev server * ignores `vercel.json`, however — so in dev a subdomain root (`nessa.localhost/`) * would otherwise fall through to this `index.tsx` and render Mike's personal * page with only the sidebar changing. * * The AGENTS.md-sanctioned remedy is to branch on the resolved `Site` (via * the `useSite()` accessor from `src/lib/site-context.ts`, NOT raw host * sifting) and render the matching subdomain landing component here. This * makes the subdomain roots render their unique landing pages in dev *and* * acts as a production safety net should a Vercel rewrite ever fail to fire. * In production the vercel rewrite still wins — `nessa.freno.me/` → * `/nessa/index.tsx` directly — so the two paths render the same component: * `NessaLanding`. */ export default function Home(): JSX.Element { const site = useSite(); return ( }> ); } /** The freno.me personal site landing page (default/main host only). */ function MainHome(): JSX.Element { return ( <>
Hey!
My name is Mike Freno, I'm a{" "} Software Engineer based in{" "} Brooklyn, NY.
I'm a passionate developer tooling, game, and open source software developer. Recently been working in the world of{" "} LÖVE {" "} (an open source game engine for Lua).{" "} {" "} You can see some of my work{" "} here (github). If you want to get in touch, check to side bar for various links.
Some of my recent projects:
{/* FlexLöve */}
My LÖVE UI library
FlexLöve
Built for developers who know CSS and want that same power (and more) in their game UIs. FlexLöve brings CSS-familiar flexbox and grid layouts to Löve2D, supporting both rapid prototyping (immediate mode) and production-optimized (retained mode) rendering. Whether you're sketching ideas or shipping products, FlexLöve adapts to your workflow—essentially no learning curve required if you've touched CSS.
{/* Life and Lineage */}
My mobile game:
Life and Lineage
Life and Lineage Home
Life and Lineage Shops
Started as a basic project to learn react-native, it grew over time into a full-fledged mobile game. It's a turn-based dungeon crawler with a family lineage twist - each time you die (which happens a lot) you can continue on through your children (if you have any) - otherwise you start from square one.
And if you love the color schemes of this site
(which of course you do), you can see{" "} here {" "} - and also see the rest of my various dot files idk. There's a{" "} macos {" "} arch linux rice in there if you're into that kinda thing and a{" "} home server setup too .
My Collection of
By-the-ways:
  • I use Neovim
  • I use Arch Linux
  • I use Rust
); }