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. It worked, but it was 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 a 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, with clear accept and reject options and no manipulative design. Google Analytics 4 only activates after explicit consent.
Responsive navigation with mobile drawer
A mobile-first navigation that collapses into a slide-in drawer. It's 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, all without a CMS and 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.