technology

How I Built RahatVerse with Next.js, Supabase and Cloudinary

8/10/2026
6 min read
Next.js
Supabase
Cloudinary
TypeScript
RahatVerse

RahatVerse did not start as a product idea. It started as a frustration: my work was scattered across profiles, files and chat threads, and none of it felt like a home. During my HSC studies I set out to build one website that could hold everything — my portfolio, my writing, my photos, and the web development service I run — and let me change any of it without touching code.


This post is the honest build log of that project.


## The stack, and why

The site is a Next.js 16 application on the App Router, written in TypeScript and styled with Tailwind CSS. I chose Next.js because server-side rendering matters to me: when someone — or a search crawler — opens a page, the real content must already be in the HTML, not behind a loading spinner. TypeScript keeps a growing codebase honest, and Tailwind keeps the design system consistent.


The backend is Supabase: PostgreSQL for data and authentication for the admin area. Images live on Cloudinary, whose automatic format and quality optimization keeps a heavy photo gallery fast even on a slow village connection.


Everything is bilingual — Bengali and English — handled with next-intl. Not just the paragraphs: routes, metadata, Open Graph tags and structured data all carry both locales, with canonical URLs and hreflang marking the two versions as the same page.


## The admin CMS behind it

Almost everything you see is controlled from a private admin dashboard: the hero, the about page, the experience timeline, the gallery, services and pricing, portfolio projects, the FAQ, legal pages, and the blog itself. Every section is validated against a schema on the server and in the API, so a malformed config can never break the public site — it simply falls back to safe defaults.


There are a few extras I rely on daily: a live order wizard that computes package pricing, an analytics view built on my own event tracking, a newsletter system, and Nuva — the AI assistant in the corner that answers questions about me and my work.


## Decisions that paid off

Three choices mattered most. First, SSR everywhere it counts: portfolio, experience and blog content render on the server, so pages are crawlable and quick. Second, one source of truth: every public page reads the same validated config that the admin panel writes. Third, honest structured data — a single Person entity and a single WebSite entity in JSON-LD, referenced by ID everywhere, so nothing contradicts itself.


## What I learned

Building a system while studying for exams teaches brutal prioritization: ship the smallest useful version of each feature, then improve it in passes. I also learned that content is harder than code — writing real descriptions of real projects in two languages takes longer than wiring a database.


RahatVerse is a living project. See how it fits together in the portfolio case studies, try the order wizard that powers my service work, or browse the code on GitHub. If you spot a bug, tell me — that is how it gets better.

About the author

Rahat Ahmed is a student, teacher and web developer from Sunamganj, Bangladesh, and the creator of RahatVerse.

Comments

Leave a comment

Comments are moderated before appearing.