This is the Next.js codebase used to build the Haltman.IO website.
Haltman.IO is an independent Brazilian hacker collective built the hard way: time, scars, broken machines, dead projects, ruined sleep schedules, and more than a decade of crossing paths without turning into a startup cosplay circus.
No hype. No investors. No pitch deck diarrhea. No LinkedIn enlightenment thread about “building in public.” No growth obsession. No invoices. No polished corporate schizophrenia pretending to be culture.
Just mutual aid, practical work, infrastructure, review, and people who still show up when something matters.
We passed through other groups. Some rotted. Some vanished. Some sold out. Some got stupid. Some got captured by ego, politics, paranoia, or cops. We left when transparency stopped mattering, when free knowledge stopped being non-negotiable, and when free software started getting treated like a marketing prop.
So we forked the social layer and built our own crew.
We are old-school hackers.
Unaffiliated. Unbought. Unfranchised. Uninterested in inherited baggage.
We publish openly.
We do not play mascot for closed ecosystems.
We are not for hire.
We looked around and found the usual landfill:
soulless templates, startup sludge, fake-minimalist SaaS layouts, corporate dark mode with zero personality, and enough “premium UI kits” to make a sane person want to brick a monitor.
So we built this from scratch.
It is open source. It is released under The Unlicense. It is free. Take it, fork it, gut it, improve it, repaint it, slap your name on it, sell it to some agency full of UI philosophers and Slack addicts. We do not care.
Use it.
This thing exists because nothing out there looked like us, sounded like us, or deserved to represent us.
And from the bottom of our black terminal window, to anyone trying to poison open source with license games, restriction theater, fake openness, or “source available” clown tricks:
fuck you.
Install dependencies and start the dev server:
npm install
npm run devThen open:
Useful commands:
npm run buildnpm run startnpm run lintnpm run blog-images:prepare
The blog can resolve local MDX image references through an adapter layer before dev and build.
Use relative paths inside blog posts, for example:
<PostImage
src="./my-post/diagram.svg"
alt="Short accessible description"
caption="Longer explanation rendered below the image."
/>Markdown image syntax also works:
By default, the adapter runs in local mode. It copies referenced blog images into /public/__generated/blog-images/ and resolves them during rendering, which keeps the source images outside public while preserving a working open-source build.
To enable Cloudflare Hosted Images instead of the local fallback, set:
BLOG_IMAGE_ADAPTER=cloudflare
CLOUDFLARE_IMAGES_ACCOUNT_ID=your_account_id
CLOUDFLARE_IMAGES_API_TOKEN=your_images_api_token
# optional, defaults to public
CLOUDFLARE_IMAGES_VARIANT=publicWhen Cloudflare mode is enabled, the adapter:
- uploads local blog images to Cloudflare Images before the Next.js build starts
- avoids duplicate uploads by using deterministic custom IDs derived from the file path and content hash
- reuses an existing hosted image when that exact asset is already present
- resolves the hosted delivery URL into the static render that follows
Generated adapter artifacts are written to /.generated/blog-image-manifest.json and ignored from git.