85 lines
3.4 KiB
Markdown
85 lines
3.4 KiB
Markdown
# 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/image` with `unoptimized` for 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.md` when 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
|