A Small Case Against Web Bloat
I wanted something like Linktree.
A single page. A set of links. A neutral starting point.
What I didn’t want was everything that usually comes with it.
So, I built gazali.one.
When Simple Tools Stop Being Simple
The modern web has a habit of overcorrecting.
A basic problem appears.
A tool solves it.
Then the tool grows a dashboard, analytics, themes, upsells, and opinions.
At some point, the solution becomes another thing you have to manage.
Link-in-bio tools are a good example. They start as routers. Over time, they turn into products with incentives that drift away from yours. Feature creep follows. Control quietly slips away.
None of this is malicious. It’s structural.
I didn’t want to participate in that loop.
The Router Idea
gazali.one is intentionally boring.
It routes people to where they need to go. Writing and thinking first. Work and contact second. The order is deliberate, but not announced. Nothing competes for attention, and nothing tries to keep you around.
You arrive.
You choose.
You leave.
That’s the interaction model.
In a web culture built around retention and optimization, it reads as almost indifferent. That indifference is intentional.
It Also Works Like an App (Without Being One)
Here’s the quiet part most people won’t notice.
gazali.one is a Progressive Web App.
In practical terms, that means:
- You can save it to your phone’s home screen.
- It opens instantly, like an app.
- It works offline for what it needs to do.
- There’s no app store, no updates to manage, no permissions to grant.
To a non-technical user, it just feels fast and dependable.
To me, it means I get the benefits people associate with “apps” without building or maintaining one. No binaries. No platform lock-in. No forced upgrades.
Again, boring in the best way.
Less Technology Is Still a Choice
The site runs on GitHub Pages and Jekyll. Not because they are trendy, but because they are stable.
No JavaScript frameworks.
No client-side routing.
No moving parts pretending to be helpful.
Just static files generated from Markdown.
This isn’t nostalgia. It’s risk management.
Every dependency you add is something that can change, break, or demand attention later. Removing dependencies is not a lack of ambition. It’s a decision to cap future cognitive load.
How it’s Deployed (And Why It Matters)
The site is built on GitHub Pages, but it’s delivered through Cloudflare.
GitHub handles the build. Cloudflare handles everything else.
This setup solves a few practical problems cleanly.
First, the repository can stay private. The source doesn’t need to be public just because the site is. That keeps ownership and intent separate from visibility.
Second, redirects live at the edge. Cloudflare handles routing rules without touching the site itself. If a destination changes, I update a rule, not content or code. The router stays a router.
Third, Cloudflare adds quiet capabilities without adding complexity. Global CDN. SSL. Caching. Basic resilience. All without changing how the site is built or maintained.
The important part is what this avoids.
No custom server.
No deployment scripts.
No runtime dependencies.
No operational surface area to babysit.
The site remains static, predictable, and low-effort. Cloudflare just makes it sturdier without asking it to become something else.
Again, boring in the right places.
Removing the Wrong Signals
Most themes assume your site wants to explain itself.
Repository buttons.
Attribution footers.
Visual noise that suggests exploration.
I stripped those out.
gazali.one is not a landing page. It’s not a product. It’s not an invitation to browse. It’s infrastructure.
If the page feels unfinished, that’s because it’s finished doing exactly what it needs to do.
Control as a First-Class Requirement
This wasn’t about aesthetics or minimalism as a style.
It was about ownership.
I wanted:
- Full control over content.
- Zero reliance on third-party product decisions.
- Near-zero maintenance.
- Predictable behavior years from now.
The site has one page, one stylesheet, and no growth path. That’s not a limitation. That’s the design.
A Quiet Rejection
gazali.one isn’t a protest against modern tools. It’s a refusal to overbuild when the problem is small.
Not every surface needs to be optimized.
Not every page needs to perform.
Not every solution needs a roadmap.
Sometimes the right move is to build the smallest possible thing, give it just enough capability to be useful everywhere, then stop.
And let it stay boring.