case study
a README that people actually visit
your personal dev page — projects, writing, links — with full control over every line of HTML
your online presence is scattered
your work lives in a dozen places. GitHub repos, npm packages, blog posts on Medium or Dev.to, talks on YouTube, tweets about side projects. your LinkedIn is a resume from two jobs ago. your GitHub profile README is a wall of badges and contribution graphs that nobody reads.
what you actually need is a single URL — short, memorable, yours — that says who you are and what you build. not a social media profile. not a resume. a page.
one page, everything connected
bb.bi gives you a page at bb.bi/yourname — or yourname.bb.bi on pro. describe what you want, and the AI generates a clean developer page. or skip the AI entirely and write raw HTML. the page is yours — no template, no framework, no build step.
bb.bi/alex → personal page — intro, projects, links alex.bb.bi/blog → dev blog with posts plugin alex.bb.bi/projects/kv → project detail page alex.bb.bi/contact → contact form for freelance inquiries
the difference: this page is actually designed to be read, not just to exist. developers care about clean typography, readable layout, and fast load times — and so does bb.bi.
what you need
plan
free — $0
plugins
posts (free), contact form (free)
AI credits
15 included free
for subpages
pro — $9.99/yr
a single-page dev profile works on the free plan. upgrade to pro for subpages (project details, blog, about) and a subdomain.
two ways to build it
path A: describe it, AI builds it
open the AI assistant and describe your page. the AI generates complete HTML — layout, typography, colors, hover states, everything.
"personal developer page for a backend engineer. stark white background, monospace headings, clean sans-serif body. my name 'Alex Chen' at the top, one-liner: 'I build infrastructure.' then a section with 4-5 projects — name, one-line description, GitHub link. below that: links to my blog, GitHub, Twitter, email. feel: minimal, precise, no decoration. like well-written documentation."
refine it: make the project names bolder, add a subtle hover underline on links, reduce the spacing between projects. each refinement costs 1 credit.
path B: write the HTML yourself
switch to the code editor and write whatever you want. standard HTML and CSS — no framework, no compilation, no restrictions. if you can write it in a browser, it works here.
<style>
body { font-family: 'JetBrains Mono', monospace; background: #fafafa; }
.projects a { border-bottom: 1px solid transparent; }
.projects a:hover { border-color: currentColor; }
</style>
<h1>Alex Chen</h1>
<p>I build infrastructure.</p>
<div class="projects">
<a href="https://github.com/alex/kv">kv</a> — distributed key-value store
<a href="https://github.com/alex/pipe">pipe</a> — unix pipes for the browser
</div>or mix both: generate with AI, then open the code and adjust. the two approaches are complementary.
the SDK: your page is programmable
every bb.bi page has access to a JavaScript SDK via window.bb. no import, no build step — it's just there. this is what makes a bb.bi page different from a static HTML file: your page can read data, call plugins, and react to context.
fetching your latest posts
bb.onReady(async function() {
var result = await bb.posts.list({ limit: 5 });
result.posts.forEach(function(post) {
var el = document.createElement("a");
el.href = bb.url(post.slug);
el.innerHTML =
'<strong>' + bb.escapeHtml(post.title) + '</strong>' +
'<time>' + bb.formatDate(post.publishedAt) + '</time>';
container.appendChild(el);
});
});page view counter
// enable the counter plugin, then:
var count = await bb.counter.getValue();
document.querySelector('.views').textContent = count + ' views';
// increment on each visit
await bb.counter.increment();contact form
// enable the contact form plugin, then:
form.addEventListener('submit', async function(e) {
e.preventDefault();
await bb.contact.submit({
name: form.name.value,
email: form.email.value,
message: form.message.value,
});
form.innerHTML = '<p>sent — thanks!</p>';
});the SDK is intentionally simple — vanilla JS, no dependencies, no async/await required (promises work fine). it's designed for developers who want to write real code, not wrestle with a platform.
a dev blog without the overhead
enable the posts plugin. write posts in the dashboard with markdown, categories, and tags. the AI generates a blog page that matches your site — or you build the layout yourself using bb.posts.list().
no static site generator. no build pipeline. no deploy process. write a post in the dashboard, hit publish, it's live. your blog renders on the same page infrastructure as everything else — fast, cached, global CDN.
alex.bb.bi/blog → post list alex.bb.bi/blog/building-kv → post detail alex.bb.bi/blog/tag/rust → posts tagged "rust" alex.bb.bi/blog/cat/tutorials → posts in "tutorials" category
if you outgrow the built-in editor, you can fetch posts via the SDK and render them however you want — custom layouts, syntax highlighting, table of contents, whatever you need.
host your images properly
enable the media library plugin (pro+) and get permanent, short image URLs:
alex.bb.bi/m/avatar → profile photo for GitHub, Twitter, etc. alex.bb.bi/m/og → default OG image for social shares alex.bb.bi/m/kv/screenshot → project screenshot for the README alex.bb.bi/m/blog/hero → hero image for a blog post
use them in your GitHub READMEs, blog posts, social profiles — one URL, always works, never expires. update the image and the URL stays the same.
why not just use GitHub Pages?
no build step
GitHub Pages needs a repo, a build pipeline, and a deploy action. bb.bi is: write HTML → publish. or describe → generate → publish. no git, no CI, no waiting for deploys.
built-in data layer
your page isn't just static HTML. it can read posts, count views, accept contact form submissions, and host images — all via the SDK, no server to maintain.
a real URL
bb.bi/alex is shorter and more memorable than alexchen.github.io. put it in a bio, on a business card, in a conference talk slide. it works everywhere.
AI when you want it, code when you don't
generate a page in 30 seconds when you just need something up. or hand-write every line of HTML when you want total control. the platform doesn't care — it serves whatever you give it.
it starts free
one page, 15 AI credits, posts plugin, contact form, page view counter — all free. no credit card. upgrade to pro ($9.99/yr) only if you want subpages, a subdomain, or media hosting.
example: a backend engineer
Alex is a backend engineer who builds open-source tools. he claims alex as his handle and opens the AI assistant.
he describes: "minimal page, white background, monospace headings. my name and a one-liner at the top. then a list of projects — name, description, GitHub link. then links to my blog, GitHub, Twitter. no colors, no icons, just text." the AI generates the page. he adjusts the font weight and publishes.
he enables the posts plugin and starts a dev blog. writes about building a distributed key-value store. the AI generates a matching blog page — same typography, same spacing. he publishes his first post.
he upgrades to pro, enables the subdomain (alex.bb.bi), and adds project detail pages with code examples and architecture diagrams. each subpage is generated with the AI using his main page as a style reference.
alex.bb.bi → personal page alex.bb.bi/blog → dev blog alex.bb.bi/blog/building-kv → post: building a distributed KV store alex.bb.bi/projects/kv → project detail: architecture, API docs alex.bb.bi/contact → freelance/consulting inquiries
his bb.bi/alex link goes in his GitHub bio, Twitter bio, conference slides, and email signature. one URL, everything in one place. the page loads in under 200ms from anywhere in the world.
your work deserves a better home than a GitHub README
claim your name, describe what you build, and ship a personal page in minutes. free, no credit card, full SDK access.