Skip to content

Commit b711ca9

Browse files
authored
Merge branch 'main' into copilot/fix-typescript-compilation-supabase-client
Signed-off-by: Asper Beauty Shop <252395498+asperpharma@users.noreply.github.com>
2 parents 3c79c1f + 12011e5 commit b711ca9

17 files changed

Lines changed: 998 additions & 86 deletions

.github/workflows/azure-webapps-node.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ permissions:
3232

3333
jobs:
3434
build:
35+
# Skip this workflow when Azure credentials are not configured.
36+
# To enable Azure deployment, set AZURE_WEBAPP_PUBLISH_PROFILE in
37+
# Settings → Secrets and variables → Actions and update AZURE_WEBAPP_NAME above.
38+
if: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE != '' }}
3539
runs-on: ubuntu-latest
3640
steps:
3741
- uses: actions/checkout@v4

CURSOR-SETTINGS-FIX.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Fix: Cursor User settings.json
2+
3+
**File:** `C:\Users\<USERNAME>\AppData\Roaming\Cursor\User\settings.json`
4+
5+
**Copy-paste option:** A full corrected JSON is in [cursor-user-settings-FIXED.json](cursor-user-settings-FIXED.json). Copy its entire contents and paste into your User `settings.json`, then save and reload Cursor.
6+
7+
---
8+
9+
## A. Corrupted structure (fix first)
10+
11+
Your file has broken JSON at the top and in a few other places. Apply these edits so the file parses:
12+
13+
1. **Lines 1–6** — Replace the corrupted start with a valid opening and one `workbench.settings.applyToAllProfiles`:
14+
- **Delete** from the very start through the first `]` (the broken `{workbench.settings...` and the duplicate/broken array including `M"npm.scriptExplorerAction"` and `]`).
15+
- **Insert** exactly this as the first line, then a newline:
16+
```json
17+
{
18+
"workbench.settings.applyToAllProfiles": [
19+
"workbench.editorAssociations",
20+
"chat.mcp.access",
21+
"npm.scriptExplorerAction",
22+
"update.channel",
23+
"stash-push:command"
24+
],
25+
```
26+
- So the next line after the `],` should be `"git.enableSmartCommit": true,` (already there).
27+
28+
2. **workbench.editorAssociations** (around lines 35–42):
29+
- Remove the entry `"": ""`.
30+
- Change `"csv`": "vscode.markdown.preview.editor"` to `"*.csv": "vscode.markdown.preview.editor"` (fix the backtick and use `*.csv`).
31+
- Remove the long invalid key that starts with `"Commands for running scripts..."` (the whole line). If you need a default for CSV, keep only `"*.csv": "vscode.markdown.preview.editor"`.
32+
33+
3. **Duplicate workbench.settings.applyToAllProfiles** — Keep only one. Delete the duplicate block at lines 77–81 if the one at the top is now correct (same list including `update.channel` and `stash-push:command`).
34+
35+
4. **End of file (lines 210–213)** — Fix the invalid `"[apex-anon]"` block:
36+
- Change `"[apex-anon]": {` and the next line `always` and `}` to valid JSON, e.g.:
37+
```json
38+
"[apex-anon]": {
39+
"editor.defaultFormatter": "default"
40+
}
41+
}
42+
```
43+
- So the file ends with exactly one closing `}` for the root object.
44+
45+
---
46+
47+
## B. Unknown Configuration Setting (`chat.mcp.discovery.enabled`)
48+
49+
**Problem:** Cursor reports **Unknown Configuration Setting** for `chat.mcp.discovery.enabled`. Cursor does not support this key in User `settings.json`.
50+
51+
**Fix:** Remove the following block from:
52+
`C:\Users\<USERNAME>\AppData\Roaming\Cursor\User\settings.json`
53+
54+
```json
55+
"chat.mcp.discovery.enabled": {
56+
"claude-desktop": true,
57+
"windsurf": true,
58+
"cursor-global": true,
59+
"cursor-workspace": true
60+
},
61+
```
62+
63+
- Delete the entire `"chat.mcp.discovery.enabled"` entry **and** the comma after the `}`.
64+
- If this was the last property in the object, remove the comma on the **previous** line so the JSON stays valid.
65+
- **If you don't see this key** in your `settings.json`, the warning may come from another profile or file; no change needed in this file.
66+
67+
## Verify
68+
1. Save the file.
69+
2. Reload Cursor (or run **Developer: Reload Window**).
70+
3. Open Settings (Ctrl+,) and confirm the warning is gone.
71+
72+
## Explanation
73+
`chat.mcp.discovery.enabled` is a setting used by other tools (e.g. Claude desktop, Windsurf), not by Cursor. Cursor's MCP behavior is controlled via the **Tools & MCP** UI and `.cursor/mcp.json` (or global `~/.cursor/mcp.json`), not this settings key. Removing it removes the unknown-setting warning without affecting Cursor's MCP.

README.md

Lines changed: 45 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,73 @@
1-
# Welcome to your Lovable project
1+
# Asper Beauty Shop
22

3-
## Project info
4-
5-
**URL**: https://lovable.dev/projects/657fb572-13a5-4a3e-bac9-184d39fdf7e6
6-
7-
## How can I edit this code?
8-
9-
There are several ways of editing your application.
10-
11-
**Use Lovable**
12-
13-
Simply visit the [Lovable Project](https://lovable.dev/projects/657fb572-13a5-4a3e-bac9-184d39fdf7e6) and start prompting.
14-
15-
Changes made via Lovable will be committed automatically to this repo.
3+
**Update:** 2026-03-04-lzdy
164

17-
**Use your preferred IDE**
5+
## Download
186

19-
If you want to work locally using your own IDE, you can clone this repo and push changes. Pushed changes will also be reflected in Lovable.
20-
21-
The only requirement is having Node.js & npm installed - [install with nvm](https://github.com/nvm-sh/nvm#installing-and-updating)
22-
23-
Follow these steps:
7+
To download or clone this project locally:
248

259
```sh
26-
# Step 1: Clone the repository using the project's Git URL.
2710
git clone https://github.com/asperpharma/understand-project.git
28-
29-
# Step 2: Navigate to the project directory.
3011
cd understand-project
31-
32-
# Step 3: Install the necessary dependencies.
3312
npm i
34-
35-
# Step 4: Start the development server with auto-reloading and an instant preview.
36-
npm run dev
3713
```
3814

39-
**Edit a file directly in GitHub**
40-
41-
- Navigate to the desired file(s).
42-
- Click the "Edit" button (pencil icon) at the top right of the file view.
43-
- Make your changes and commit the changes.
15+
Then run `npm run dev` to start the development server. See [Available scripts](#available-scripts) for more commands.
4416

45-
**Use GitHub Codespaces**
17+
## Project info
4618

47-
- Navigate to the main page of your repository.
48-
- Click on the "Code" button (green button) near the top right.
49-
- Select the "Codespaces" tab.
50-
- Click on "New codespace" to launch a new Codespace environment.
51-
- Edit files directly within the Codespace and commit and push your changes once you're done.
19+
- **Site:** [https://www.asperbeautyshop.com](https://www.asperbeautyshop.com)
20+
- **Stack:** Vite, TypeScript, React, shadcn-ui, Tailwind CSS
21+
- **Website design:** See [WEBSITE-DESIGN.md](WEBSITE-DESIGN.md) (tokens, components, RTL, Dr. Bot).
22+
- **Apply to main site and all channels:** See [docs/APPLY_AND_RUN.md](docs/APPLY_AND_RUN.md) (run commands, all sites, social, webhooks). Full checklist: [APPLY_TO_MAIN_SITE.md](APPLY_TO_MAIN_SITE.md).
5223

53-
**Use Claude Code**
24+
## SNC (sync) and applyToAllProfiles
5425

55-
[Claude Code](https://docs.anthropic.com/en/docs/claude-code) is an agentic coding tool from Anthropic that lets you work with Claude directly from your terminal or IDE.
26+
**SNC (sync)**`npm run sync` (frontend + brain); plus `npm run health` (frontend + brain), `npm run brain` (edge function only).
5627

57-
Install the extension:
28+
**applyToAllProfiles** — In **User** `settings.json` (File → Preferences → Settings → Open Settings JSON), add:
5829

59-
```sh
60-
npm install -g @anthropic-ai/claude-code
30+
```json
31+
"workbench.settings.applyToAllProfiles": [
32+
"workbench.editorAssociations",
33+
"chat.mcp.access",
34+
"npm.scriptExplorerAction",
35+
"update.channel",
36+
"stash-push:command"
37+
]
6138
```
6239

63-
Then start a session in your project directory:
64-
65-
```sh
66-
cd understand-project
67-
claude
68-
```
40+
**commitDirectlyWarning** — Use a feature branch and PR when branch protection applies; see PUSH-BLOCKER.md if push is blocked.
6941

70-
Claude Code can read, edit, and create files, run terminal commands, and assist with complex multi-step coding tasks — all while keeping you in control.
42+
## Available scripts
7143

72-
## What technologies are used for this project?
44+
**SNC:** `npm run sync` | `npm run health` | `npm run brain` (see above).
7345

74-
This project is built with:
46+
| Command | What it does |
47+
| -------------------------- | ----------------------------- |
48+
| `npm run dev` | Start Vite dev server |
49+
| `npm run build` | Production build |
50+
| `npm run build:dev` | Build in development mode |
51+
| `npm run lint` | Run ESLint |
52+
| `npm run lint:fix` | ESLint with auto-fix |
53+
| `npm run typecheck` | TypeScript check (no emit) |
54+
| `npm run check` | Lint + typecheck |
55+
| `npm run check:all` | Lint + typecheck + build |
56+
| `npm run preview` | Serve production build |
57+
| `npm run test` | Run Vitest once |
58+
| `npm run test:watch` | Vitest watch mode |
59+
| `npm run test:bulk-upload` | Bulk upload validation script |
60+
| `npm run health` | Frontend + brain health check |
61+
| `npm run brain` | Brain (Beauty Assistant) only |
62+
| `npm run sync` | Frontend + brain sync check |
7563

76-
- Vite
77-
- TypeScript
78-
- React
79-
- shadcn-ui
80-
- Tailwind CSS
64+
## Lovable project
8165

82-
## Production-Ready Checklist
66+
- **Project ID:** `657fb572-13a5-4a3e-bac9-184d39fdf7e6`
67+
- **Live staging:** https://asperbeautyshop-com.lovable.app/
68+
- Visit [Lovable](https://lovable.dev/projects/657fb572-13a5-4a3e-bac9-184d39fdf7e6) and click **Share → Publish** to deploy.
8369

84-
### Quick Deploy
8570

86-
Simply open [Lovable](https://lovable.dev/projects/657fb572-13a5-4a3e-bac9-184d39fdf7e6) and click on Share -> Publish.
8771

8872
### Required Setup
8973

WEBSITE-DESIGN.md

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
# Website Design — Asper Beauty Shop
2+
3+
Design handoff for website design work. Run **SNC** before design sessions: `npm run sync`.
4+
5+
---
6+
7+
## Stack & URLs
8+
9+
| Item | Value |
10+
|------|--------|
11+
| **Site** | https://www.asperbeautyshop.com |
12+
| **Frontend** | Vite, TypeScript, React |
13+
| **UI** | shadcn-ui, Tailwind CSS |
14+
| **Fonts** | Google Fonts: Playfair Display, Montserrat, Great Vibes, Tajawal (Arabic) |
15+
| **Health** | `npm run health` \| **Brain** | `npm run brain` \| **Sync** | `npm run sync` |
16+
17+
See [README.md](README.md) for full scripts and SNC.
18+
19+
---
20+
21+
## Design Identity
22+
23+
- **Clinical-luxury:** Pharmacist-curated, authentic, precise, never pushy.
24+
- **Dual voice:** Dr. Sami (science/safety) + Ms. Zain (luxury); single AI persona (Dr. Bot).
25+
- **Bilingual:** English + Arabic (RTL); respect local dialects.
26+
- **Trust:** Seal of Authenticity, JFDA, Gold Standard; use in trust badges and copy.
27+
28+
---
29+
30+
## Design Tokens
31+
32+
### Where they live
33+
34+
- **CSS variables (light/dark):** `src/index.css``:root` and `.dark`
35+
- **Tailwind theme:** `tailwind.config.ts` — colors, fonts, radius, keyframes
36+
37+
### Palette (Quiet Luxury)
38+
39+
| Token | Hex / use |
40+
|-------|-----------|
41+
| **Cream** | `#F3E5DC` — global background |
42+
| **Gold** | `#D4AF37` — accents, borders, ring |
43+
| **Burgundy / Maroon** | `#4A0E19` — header, footer, primary surfaces |
44+
| **Warm brown** | `#2C1A1D` — text |
45+
| **Legacy** | `asper.merlot`, `asper.gold`, `maroon`, `soft-ivory`, `shiny-gold`, `dark-charcoal` in Tailwind |
46+
47+
### Typography
48+
49+
- **Display:** Playfair Display (serif)
50+
- **Body:** Montserrat, Inter
51+
- **Script:** Great Vibes
52+
- **Arabic / RTL:** Tajawal — applied when `dir="rtl"` (see `LanguageContext`)
53+
54+
### Radius & motion
55+
56+
- `--radius: 0.5rem`; Tailwind: `rounded-lg`, `rounded-md`, `rounded-sm`
57+
- Keyframes: `fade-in-up`, `fade-up`, `fade-in`, `shimmer`, `spin-slow`
58+
- Utility classes: `.luxury-container`, `.luxury-heading`, `.luxury-subheading`, `.luxury-script`, `.luxury-divider`, `.gold-accent-line*`, `.section-gold-top`
59+
60+
### Gradients
61+
62+
- `celestial-gradient`: deep burgundy vertical
63+
- `gold-shimmer`: gold highlight
64+
65+
---
66+
67+
## Component Map
68+
69+
| Area | Path | Notes |
70+
|------|------|--------|
71+
| **Primitives** | `src/components/ui/` | shadcn: button, card, input, dialog, sheet, etc. |
72+
| **Brand** | `src/components/brand/` | AsperLogo, ClinicalIcons, TrustBadges, SocialLinks, CategoryIcons |
73+
| **Home** | `src/components/home/` | Hero, SearchBar, BrandStory, VIPConcierge, PharmacistPicks, PromoBanner, etc. |
74+
| **Chat / Dr. Bot** | `src/components/BeautyAssistant.tsx`, `chat/` | Concierge UI, DigitalTray, ChatProductCard |
75+
| **Product** | `src/components/` | ProductCard, ProductGrid, ProductCatalog, LuxuryProductCard, GlassGoldProductCard, SafetyBadges |
76+
| **Layout** | `src/components/` | Header, Footer, MegaMenu, MobileNav, MobileBottomNav |
77+
| **Concierge entry** || Dispatch `open-beauty-assistant` or use Consult / concierge CTAs |
78+
79+
Extend existing primitives and brand components; add new ones only when necessary (see project rules).
80+
81+
---
82+
83+
## RTL & i18n
84+
85+
- **Context:** `src/contexts/LanguageContext.tsx``Language` = `"en" | "ar"`, translations object.
86+
- **Direction:** Set `dir="rtl"` on document/html when language is Arabic; `index.css` applies `font-arabic` and RTL heading fonts.
87+
- **Copy:** Add strings to the context translations; keep Arabic culturally appropriate.
88+
89+
---
90+
91+
## Dr. Bot / Beauty Assistant
92+
93+
- **Persona & copy:** `supabase/functions/beauty-assistant/index.ts``buildSystemPrompt()`.
94+
- **Frontend:** `BeautyAssistant` (lazy in `App.tsx`), chat components in `src/components/chat/`.
95+
- **Entry points:** "Consult", "Talk to Dr. Bot", or any CTA that should open the concierge → trigger `open-beauty-assistant` or open the same UI.
96+
97+
---
98+
99+
## Key Files for Design Changes
100+
101+
| Goal | File(s) |
102+
|------|--------|
103+
| Global colors, type, layout base | `src/index.css`, `tailwind.config.ts` |
104+
| Brand colors & components | `src/components/brand/*`, Tailwind `asper.*` |
105+
| Page layout / shell | `src/App.tsx`, `src/pages/Index.tsx`, Header, Footer |
106+
| Homepage sections | `src/components/home/*`, `src/pages/Index.tsx` |
107+
| Product cards & grids | `src/components/ProductCard.tsx`, LuxuryProductCard, GlassGoldProductCard, ProductGrid |
108+
| Chat/concierge UI | `src/components/BeautyAssistant.tsx`, `src/components/chat/*` |
109+
110+
---
111+
112+
## Pre–design checklist
113+
114+
1. **SNC:** `npm run sync` (frontend + brain OK).
115+
2. **Docs:** README.md (scripts, SNC), PUSH-BLOCKER.md (branch/PR), CURSOR-SETTINGS-FIX.md if using Cursor settings.
116+
3. **Figma → code:** Use Code Connect skill when mapping Figma components to repo (Figma URL with `node-id`).
117+
118+
---
119+
120+
*Last updated for website design handoff. SNC and scripts: see README.*

0 commit comments

Comments
 (0)