|

Niloodan Yoga

2026

Web Design · Full-Stack Development

Next.js · TypeScript · Tailwind CSS · Supabase

View Website
Niloodan Yoga — mobile cover

Overview

Niloodan Yoga is Niloo's personal studio, a live Power Vinyasa class taught in Farsi for participants online or in person, capped at 30 people per class. The brief covered the full stack: bilingual marketing pages in German and Farsi, a live availability calendar showing every upcoming class date and remaining spots, a small bilingual blog with categories, and two German legal pages for the business registered as My Sportlady, Fitness für Frauen GmbH. Behind it sits a protected admin panel accessible only to an email address explicitly listed in an admins table, not just any signed-in Supabase user. From there, Niloo manages the full reservation queue, approves or rejects bookings, controls the weekly recurring schedule, and publishes bilingual blog posts. Every approval fires an email with a WhatsApp link so payment can be sorted without touching the site. Every rejection sends a brief, polite decline. If SMTP credentials are missing the system continues silently. Everything translated into Farsi with correct RTL layout, not run through machine translation.

Color System

A monochromatic foundation, seven steps from absolute black to white, anchored by three accent colors used only with full intent.

Bark

#2C2018

Walnut

#5C3D1E

Clay

#9B7055

Sand

#C8A882

Cream

#E8DDD0

Linen

#F4EDE4

Warm White

#FAF6F0

Accent: Use with intent

Typography

Five type steps, each carrying a specific weight of meaning. From 96px display headlines down to 11px product labels.

Niloodan Yoga

Display

72px / Light

Power Vinyasa · Live

H1

40px / Regular

Online and in person

H2

24px / Regular

Capped at 30 people per class.

Body

15px / Light

SCHEDULE · BOOKING

Label

11px / Medium

Brand Voice

Six words that form the editorial backbone of every piece of writing. The brand speaks in short, certain sentences. No warmth for warmth's sake.

  • Calm
  • Grounded
  • Bilingual
  • Warm
  • Precise
  • Live

Spacing System

A fixed rhythm of eight values. Every element sits at a deliberate distance, nothing arbitrary, nothing accidental.

44px
88px
1616px
2424px
3232px
4848px
7272px
104104px

Feature: Reservation System

Booking queue with full admin control

When a visitor submits the booking form, a pending reservation is created and the admin receives an email with the full request. From the Reservations panel, the class can be approved or rejected with a single click — approval fires an email with a WhatsApp link so payment is sorted directly with Niloo; rejection sends a brief, polite decline. Bookings can also be edited or deleted without triggering email, for corrections that don't need notification. The list shows who, their contact info, which class and date, current status, and which language they booked in.

Admin panel reservations list with approve, reject, and edit controls

Reservations panel — 501 × 550px

Admin sign-in screen — only admins table members can access

Protected admin entry — 599 × 604px

Feature: Class Schedule

Recurring weekly slots with live capacity tracking

Each class slot is defined once — day of week, start and end time, capacity, online vs. in-person, and an optional start date for a slot that isn't bookable yet. The system generates upcoming dates automatically and shows how full each one already is. When a class fills to capacity it drops off the public calendar. The admin can edit or delete a slot at any time without touching code.

Class schedule panel showing weekly recurring Power Vinyasa slots with capacity

Schedule manager — 499 × 862px

Blog posts admin panel with bilingual post management

Blog manager — 501 × 465px

Next project

Kimia & Mahyar