3.4 KiB
3.4 KiB
BLACK HEART DANCE HOUSE — Project Context
About
Landing page for "BLACK HEART DANCE HOUSE" — a pole dance school in Minsk, Belarus. Instagram: @blackheartdancehouse Content language: Russian
Tech Stack
- Next.js 15 (App Router, TypeScript)
- Tailwind CSS v4 (light + dark mode, class-based toggle)
- lucide-react for icons
- Fonts: Inter (body) + Oswald (headings) via
next/font - Hosting: Vercel (planned)
Code Style
- Function declarations for components (not arrow functions)
- PascalCase for component files, camelCase for utils
@/path alias for imports- Semantic CSS classes via
@apply:surface-base,surface-muted,heading-text,body-text,nav-link,card,contact-item,contact-icon,theme-border - Only Header + ThemeToggle are client components (minimal JS shipped)
next/imagewithunoptimizedfor PNGs that need transparency preserved
Project Structure
src/
├── app/
│ ├── layout.tsx # Root layout, fonts, metadata
│ ├── page.tsx # Landing: Hero → Team → About → Classes → Contact
│ ├── globals.css # Tailwind imports
│ ├── styles/
│ │ ├── theme.css # Theme variables, semantic classes
│ │ └── animations.css # Keyframes, scroll reveal, modal animations
│ ├── icon.png # Favicon
│ └── apple-icon.png
├── components/
│ ├── layout/
│ │ ├── Header.tsx # Sticky nav, mobile menu, theme toggle ("use client")
│ │ └── Footer.tsx
│ ├── sections/
│ │ ├── Hero.tsx
│ │ ├── Team.tsx # "use client" — clickable cards + modal
│ │ ├── About.tsx
│ │ ├── Classes.tsx
│ │ └── Contact.tsx
│ └── ui/
│ ├── Button.tsx
│ ├── SectionHeading.tsx
│ ├── SocialLinks.tsx
│ ├── ThemeToggle.tsx
│ ├── Reveal.tsx # Intersection Observer scroll reveal
│ └── TeamMemberModal.tsx # "use client" — member popup
├── data/
│ └── content.ts # ALL Russian text, structured for future CMS
├── lib/
│ └── constants.ts # BRAND constants, NAV_LINKS
└── types/
├── index.ts
├── content.ts # SiteContent, TeamMember, ClassItem, ContactInfo
└── navigation.ts
Brand / Styling
- Accent: rose/red (
#e11d48) - Dark mode: bg
#0a0a0a, surface#171717 - Light mode: bg
#fafafa, surface#ffffff - Logo: transparent PNG, uses
dark:invert+unoptimized
Content Data
- All text lives in
src/data/content.ts(type-safe, one file to edit) - 13 team members with photos, Instagram links, and personal descriptions
- 6 class types (Exotic Pole Dance, Pole Dance, Body Plastic, etc.)
- 2 addresses in Minsk, Yandex Maps embed with markers
- Contact: phone, Instagram
AST Index
- Always use the AST index at
memory/ast-index.mdwhen searching for components, props, hooks, types, or styles - Contains: component tree, all exports, props, hooks, client/server status, CSS classes, keyframes
- Covers all 31 TS/TSX files + 4 CSS files
- Update the index when adding/removing/renaming files or exports
Git
- Remote: Gitea at
git.dolgolyov-family.by - User: diana.dolgolyova
- Branch: main