feat: complete HookLab MVP - TikTok Shop coaching platform

Full-stack Next.js 15 application with:
- Landing page with marketing components (Hero, Testimonials, Pricing, FAQ)
- Multi-step candidature form with API route
- Stripe Checkout integration (subscription + webhooks)
- Supabase Auth (login/register) with middleware protection
- Dashboard with progress tracking and module system
- Formations pages with completion tracking
- Profile management with password change
- Database schema with RLS policies
- Resend email integration for transactional emails

Stack: Next.js 15, TypeScript, Tailwind CSS v4, Supabase, Stripe, Resend

https://claude.ai/code/session_01H2aRGDaKgarPvhay2HxN6Y
This commit is contained in:
Claude
2026-02-08 12:39:18 +00:00
parent 240b10b2d7
commit 41e686c560
52 changed files with 11375 additions and 4 deletions

32
components/ui/Card.tsx Normal file
View File

@@ -0,0 +1,32 @@
import { cn } from "@/lib/utils";
import { HTMLAttributes, forwardRef } from "react";
interface CardProps extends HTMLAttributes<HTMLDivElement> {
hover?: boolean;
glass?: boolean;
}
const Card = forwardRef<HTMLDivElement, CardProps>(
({ className, hover = false, glass = false, children, ...props }, ref) => {
return (
<div
ref={ref}
className={cn(
"rounded-[20px] p-6",
glass
? "glass"
: "bg-dark-light border border-dark-border",
hover && "card-hover cursor-pointer",
className
)}
{...props}
>
{children}
</div>
);
}
);
Card.displayName = "Card";
export default Card;