Proteanbits

Association MVP · 1 month

iaol.se

A modern digital home for Sweden's Indian community, built for accessibility, cultural pride, and long-term maintainability.

The problem

The Indian Association of Luleå (IAOL) is a community organisation representing the Indian diaspora in northern Sweden. Their web presence had grown on a legacy Django static site — functional, but increasingly difficult to maintain and visually misaligned with who they are.

They needed a modern, maintainable platform with proper SEO, GDPR compliance for a European audience, and a design that genuinely reflects the community's cultural identity — not just a generic association template.

Production deployment at www.iaol.se
Full content parity with the Django predecessor
Lighthouse-ready SEO — metadata API, sitemap, robots.txt
GDPR-compliant analytics from day one

What was built

Cultural identity design
Dark-themed site with saffron and Indian tricolour accent system — the design reflects the association's identity rather than defaulting to a generic template.
Dynamic events system
Events are managed via Supabase with individual detail pages generated at build time. Adding an event doesn't require a developer.
GDPR-compliant cookie consent
Cookie consent is implemented honestly — clear accept/reject options, no dark patterns. Google Analytics 4 only activates after explicit consent.
Responsive navigation with mobile drawer
A mobile-first navigation that collapses into a slide-in drawer — accessible, animated with Framer Motion, and keyboard navigable.
SEO infrastructure
Auto-generated sitemap, robots.txt, and Open Graph metadata throughout. The Next.js Metadata API handles page-level SEO without manual maintenance.

The hardest part

Migrating a legacy Django codebase to a fully server-rendered Next.js App Router architecture is not just a technical lift — it's a structural one. Every assumption about routing, data fetching, and rendering had to be reconsidered.

Doing that while enforcing strict TypeScript, Tailwind v4's CSS-first configuration, and GDPR requirements — without a CMS, using structured content files and Supabase as the data layer — meant there was no off-the-shelf playbook. Everything had to be reasoned through from first principles.

It shipped in a month.

Tech stack

Next.js 15 (App Router)
Full-stack framework
React 19
UI layer
TypeScript
Type safety throughout
Tailwind CSS v4
CSS-first configuration
Framer Motion
Animations
Supabase
Events database
Vercel
Deployment

See it live

The site is live at iaol.se — the events system, mobile navigation, and cultural design are all there to explore.