Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
ef711e1
fix(aluno-ui): phase 0 — aria-label typo, badge spacing, brand name
EmiyaKiritsugu3 Jul 7, 2026
e43c7ef
fix(aluno-ui): phase 1a — a11y fundamentals
EmiyaKiritsugu3 Jul 7, 2026
385edbf
fix(aluno-ui): phase 1b — UX interactions + perfil stub
EmiyaKiritsugu3 Jul 7, 2026
319c4b6
docs(design): sync typography — Inter body + Outfit headline, rounded…
EmiyaKiritsugu3 Jul 7, 2026
62c9221
feat(auth): add OAuth callback route, Server Actions for Google/GitHu…
EmiyaKiritsugu3 Jul 7, 2026
eb525fb
feat(auth): add Google/GitHub OAuth + magic link to login pages
EmiyaKiritsugu3 Jul 7, 2026
cec97af
fix(test): update signUp error assertion for inline alert, fix error …
EmiyaKiritsugu3 Jul 7, 2026
0fedb03
feat(auth): add Apple Sign In as third OAuth provider
EmiyaKiritsugu3 Jul 7, 2026
903c0da
fix(auth): address Oracle review — port, error handling, icons, tests
EmiyaKiritsugu3 Jul 7, 2026
be772c9
fix(auth): admin OAuth redirects to /dashboard instead of /login
EmiyaKiritsugu3 Jul 7, 2026
fcb1081
fix(test): update page brand name assertion, mock useRouter in aluno-…
EmiyaKiritsugu3 Jul 8, 2026
f07f39f
fix(auth): pr #194 review remediation (p0-p2)
EmiyaKiritsugu3 Jul 8, 2026
48d6dd7
fix(auth,dashboard): pr #194 coderabbit remediation (sfU + se1)
EmiyaKiritsugu3 Jul 8, 2026
7397157
fix(auth): pr #194 cubic P1 + coderabbit sfi/PLDGo remediation
EmiyaKiritsugu3 Jul 8, 2026
641831d
fix(auth,dashboard): pr #194 review remediation — P2/P3 test coverage…
EmiyaKiritsugu3 Jul 8, 2026
44e7995
docs: update CURRENT-STATE for PR #194 remediation completion
EmiyaKiritsugu3 Jul 8, 2026
6ab8af1
fix(e2e): anchor login button regex + pin password selector + h1 scope
EmiyaKiritsugu3 Jul 8, 2026
5de9c0c
docs(spec): auth redirect fix design — magic-link+OAuth (local/previe…
EmiyaKiritsugu3 Jul 8, 2026
ed1ccd3
docs(spec): correct vercel.app glob — ** not * for preview URLs
EmiyaKiritsugu3 Jul 8, 2026
a5f35c0
fix(auth): 3-tier callbackUrl resolution — empty-string + VERCEL_URL …
EmiyaKiritsugu3 Jul 8, 2026
d79c694
fix(config): align supabase config.toml with cloud production settings
EmiyaKiritsugu3 Jul 8, 2026
f4fda4f
fix(auth): use NEXT_PUBLIC_VERCEL_URL per Supabase docs (not VERCEL_URL)
EmiyaKiritsugu3 Jul 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,10 @@ GITHUB_TOKEN=
# ⚙️ Configurações da Aplicação
# ------------------------------------------------------------------------------

NODE_ENV=development
# Preview deploys: leave unset so callbackUrl() falls back to NEXT_PUBLIC_VERCEL_URL.
# Production: set to the canonical domain (e.g. https://smartmanagementsystem.vercel.app).
NEXT_PUBLIC_APP_URL=http://localhost:3000
NODE_ENV=development

# ⚠️ ADICIONE SUAS CHAVES CUSTOMIZADAS ABAIXO DESTA LINHA

Expand Down
164 changes: 164 additions & 0 deletions DESIGN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
# Five Star Gym - Design System

This document outlines the master visual identity for **Five Star Gym**, a next-generation gym and personal training platform.

## Design Philosophy

The application is built with a premium, high-end aesthetic, akin to Apple Fitness+ or a luxury boutique gym. It is strictly **Dark Mode-first**. The UI is immersive, highly legible, and visually striking without being cluttered.

- **Backgrounds:** Deep, OLED blacks to ensure contrast and reduce eye strain.
- **Surfaces/Cards:** Subtle, elevated dark grays to provide depth and separation.
- **Accents:** High-contrast neon/electric accents (Electric Cyan) for primary actions, active states, glowing indicators, and progress rings.
- **Text:** High-contrast white for primary headings, and muted grays for secondary or tertiary text to establish clear hierarchy.
- **Component Architecture:** Clean, modern borders (`border-white/10`) and radii (`rounded-xl`). Usage of subtle glowing drop-shadows instead of flat background colors for active states.
- **Motion:** Spring-based hover effects and hardware-accelerated layout transitions to make the UI feel fluid and responsive.

---

## 🎨 Tailwind CSS Configuration (v4)

Add these variables to your global CSS to define the core color palette.

```css
@theme {
/* ========================================= */
/* COLOR PALETTE */
/* ========================================= */

/* Backgrounds & Surfaces (OLED Black -> Dark Gray) */
--color-background: #000000;
--color-surface-100: #09090b;
--color-surface-200: #18181b;
--color-surface-300: #27272a;

/* Text Colors */
--color-text-primary: #ffffff;
--color-text-secondary: #a1a1aa; /* Zinc 400 */
--color-text-tertiary: #71717a; /* Zinc 500 */

/* Borders */
--color-border-subtle: rgb(255 255 255 / 0.1);

/* Primary Accent: Electric Cyan */
--color-accent-50: #ecfeff;
--color-accent-100: #cffafe;
--color-accent-200: #a5f3fc;
--color-accent-300: #67e8f9;
--color-accent-400: #22d3ee; /* Primary Action / Core Cyan */
--color-accent-500: #06b6d4;
--color-accent-600: #0891b2;
--color-accent-700: #0e7490;
--color-accent-800: #155e75;
--color-accent-900: #164e63;
--color-accent-950: #083344;

/* ========================================= */
/* TYPOGRAPHY */
/* ========================================= */

--font-sans: 'Inter', 'Roboto', 'Helvetica Neue', sans-serif;
--font-headline: 'Outfit', 'Inter', sans-serif;
--font-mono:
ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New',
monospace;

/* ========================================= */
/* EFFECTS & SHADOWS */
/* ========================================= */

/* Subtle glow for active states */
--shadow-glow-accent: 0 0 15px rgba(34, 211, 238, 0.4);
}
```

---

## 🏃 Framer Motion Animation Variants

Use these standardized Framer Motion variants for consistent, spring-based interactions across all components.

```typescript
// src/lib/motion.ts
import { Variants } from 'framer-motion';

/**
* Standard spring transition for layout changes and hovers.
* Hardware-accelerated and smooth.
*/
export const springTransition = {
type: 'spring',
stiffness: 300,
damping: 20,
};

/**
* Workout Cards and interactive surface hover states.
*/
export const cardHover: Variants = {
initial: { scale: 1 },
hover: {
scale: 1.02,
transition: springTransition,
},
tap: {
scale: 0.98,
transition: { type: 'spring', stiffness: 400, damping: 15 },
},
};

/**
* Primary action buttons hover states (with subtle glow).
*/
export const buttonHover: Variants = {
initial: { scale: 1, boxShadow: 'none' },
hover: {
scale: 1.05,
boxShadow: '0 0 15px rgba(34, 211, 238, 0.4)', // Electric Cyan glow
transition: springTransition,
},
tap: { scale: 0.95 },
};

/**
* Page and content fade-in animations.
*/
export const fadeIn: Variants = {
initial: { opacity: 0, y: 10 },
animate: {
opacity: 1,
y: 0,
transition: { duration: 0.4, ease: 'easeOut' },
},
exit: {
opacity: 0,
y: -10,
transition: { duration: 0.2, ease: 'easeIn' },
},
};
```

---

## 📐 Layout & Spacing Rules

Adhere strictly to these parameters when building components with `shadcn/ui` and Tailwind.

### Component Styling

| Element | Tailwind Class | Description |
| :--------------------- | :---------------------------- | :---------------------------------------------------- |
| **Cards / Containers** | `rounded-xl` | Standard modern corner radius for all main surfaces. |
| **Buttons / Badges** | `rounded-md` | Subtly rounded for interactive actions and tags. |
| **Borders** | `border border-white/10` | Subtle, clean separation without being harsh. |
| **Glassmorphism** | `bg-white/5 backdrop-blur-md` | Reserved for floating nav bars or overlays. |

### Typography Guidelines

| Text Type | Font Family | Tailwind Classes | Description |
| :---------------------- | :---------- | :----------------------------------------- | :----------------------------------------------------------- |
| **Body Text** | Inter | `font-body` | Standard body text, buttons, labels, metadata. |
| **Headlines** | Outfit | `font-headline font-extrabold tracking-tight` | Large headings, section titles, hero text. |
| **Metrics & Numbers** | Mono | `font-mono font-bold tracking-tight` | BPM, Kcal, Duration, Sets/Reps. High legibility. |
| **Secondary Text** | Inter | `text-zinc-400 font-medium` | Labels, descriptions, tertiary info. |

---
30 changes: 29 additions & 1 deletion docs/CURRENT-STATE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,32 @@
# Estado Atual (2026-07-06)
# Estado Atual (2026-07-08)

## PR #194 `feat/aluno-ui-10-fixes` — review remediation completa (cubic + coderabbit)

**Branch:** `feat/aluno-ui-10-fixes` (PR #194, +956/-371, 23 files). 4 commits de remediação: `f07f39f` (P0-P2), `48d6dd7` (sfU+se1), `7397157` (sfi+PLDGo), `641831d` (P2/P3 test coverage + a11y).

### Remediação final — commit `641831d`

28+ comentários triaged (4 bots: cubic ×2, coderabbit ×2) → 16 fixed / 4 FP / 8 deferred. Última batch resolveu os 8 deferred:

- **O8GbK (P3)**: `card-treino` `focus-visible`→`focus-within` em exercise row div (container não-focusable; focus-within dispara no child focado).
- **O9Faj (P2)**: `.env.example` `NEXT_PUBLIC_APP_URL` revertido para `:3000` (match `next dev` default; `:3001` quebrava dev parity + test env).
- **O9Fap + O9Fa4 (P2)**: OAuth return contract split — campos dedicados `url`/`error` substituem heuristic `startsWith('http')`. `auth.ts` + 2 login pages + `auth.test.ts` atualizados.
- **O8Gaq (P2)**: `meus-treinos-client.test` — assert exercise names render (sliced 3, joined), omitidos quando 0 exercícios.
- **O9FaX + PMTVI (P2)**: `dashboard-client.test` — mock `@/lib/actions/treinos` (desbloqueia Prisma DATABASE_URL import-time failure) + WorkoutSession gate. Cobertura: WorkoutSession state toggle, `router.refresh()` pós `registrarHistoricoTreinoAction` success, error path.
- **PMTVN (P2)**: `aluno/login.test` — account-enumeration guard: "User already registered" + "User has already been registered" ambos mascarados p/ credential error genérico, sem leak, sem push.
- **sfi (resolved prior)**: lazy `NEXT_PUBLIC_APP_URL` read dentro de `callbackUrl()` (não module load) p/ test harness injetar env pós-import.

### Gates

112 test files / 1159 tests pass. Typecheck clean. Lint clean (prettier reformatou hoisted block). Push `641831d` em `7397157..641831d`.

### Threads GitHub

8 threads cubic-dev-ai resolvidas via `resolveReviewThread` (O8Gaq, O8GbK, O9FaX, O9Faj, O9Fap, O9Fa4, PMTVI, PMTVN). 0 unresolved restantes no PR #194.

---

## Iteração 4 (P5) — CI/CD + Docker + SonarQube — PR #191 + #192 merged, tag estabilizada

## Iteração 4 (P5) — CI/CD + Docker + SonarQube — PR #191 + #192 merged, tag estabilizada

Expand Down
Loading
Loading