Back to Home

About Fractal

Philosophy

Fractal was something I built to quench a very specific thirst: being able to send any code, project, or project structure to anyone who has an internet connection and a device (yes, even whatever you’re using right now 😑) without spinning up infrastructure or stuffing everything into a database first. I kind of dodged the whole “store all the code” problem by (mostly) not storing it—never perfectly, but close enough to feel clever for five minutes.

Here’s the fun part: the project you share gets compressed and (in many cases) run through a sequence of hashes (SHA‑256 involved) and then baked straight into the URL fragment. Yep—your project lives in the link. That sounds way cooler than it feels at 2:47 AM when it refuses to decode, but still—pretty satisfying. Making that work was a whole different story from just daydreaming about it.

I was this close 🫸🫷 to crossing over from “My code doesn’t work… I don’t know why” to the far more dangerous “My code works… I don’t know why!!!”. Jokes aside, building Fractal was a genuinely fun grind. Each new project teaches me fresh, inventive ways to roast my past self for the blunders I shipped. Then I raise my own bar again and chase it. Repeat. That loop weirdly keeps the internal fire satisfied.

The project was always meant to be open source the moment it existed in my head. Another factor: I’m broke most of the time and I want everyone (okay, also me 😊) to have access to what I build while keeping the running costs minimal—or free when possible.

How it actually behaves in practice: a full #h: link embeds the compressed payload right in the fragment; only the receiving browser touches it. If you opt for a short link (#sb:) I store a tiny record (id + compressed blob + optional expiry + hit count) in Supabase so the short redirect works. I don’t expand or analyze your code there—it’s just an opaque string until a browser inflates it. Huge project? Use a public GitHub Gist instead; that goes directly from your browser to GitHub. I also keep the last project in localStorage (fractal:lastProject) so a reload doesn’t nuke everything; clear it anytime.

Tech Stack

This project is a testament to the power of modern web technologies. It is built with:

  • Framework: Next.js 14 (App Router)
  • Languages: TypeScript
  • UI: React, Tailwind CSS
  • Code Editor: Monaco Editor
  • AST Parsing: Tree-sitter (via WebAssembly)
  • State Management: Zustand
  • Animation: Framer Motion
  • Icons: Lucide React

License

MIT License. Do what you want (within reason). If you improve something, consider sharing—it helps future me (and you).

Data & Transparency (Quick Recap)

  • Default usage: Everything happens in your browser.
  • Full links (#h:): Entire project compressed into the fragment.
  • Short links (#sb:): Stored compressed blob + tiny metadata in Supabase.
  • Gists: Optional, public, GitHub‑hosted.
  • No analytics: I’m not tracking you; I have enough tabs already.