-
Notifications
You must be signed in to change notification settings - Fork 0
Deploy web-only #14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deploy web-only #14
Conversation
|
You have run out of free Bugbot PR reviews for this billing cycle. This will reset on October 17. To receive reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces a new Next.js web application setup for LifeMtrics, ready for deployment. The application includes authentication via Clerk, styling with Tailwind CSS, and integrations for analytics (PostHog) and payments (Stripe).
Key Changes
- Complete Next.js 15 application structure with TypeScript configuration
- Authentication system using Clerk with sign-in/sign-up pages and protected routes
- Stripe webhook endpoint for payment processing
Reviewed Changes
Copilot reviewed 14 out of 16 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| web/tsconfig.json | TypeScript configuration extending parent config with Next.js-specific settings |
| web/package.json | Project dependencies including Next.js 15, React 19, Clerk, Sentry, PostHog, and Stripe |
| web/next.config.ts | Next.js configuration with React strict mode and file tracing |
| web/tailwind.config.ts | Tailwind CSS configuration with custom color theme |
| web/postcss.config.js | PostCSS configuration for Tailwind and autoprefixer |
| web/middleware.ts | Authentication middleware using Clerk with route protection |
| web/app/layout.tsx | Root layout with global styles and provider wrapper |
| web/app/providers.tsx | Client-side providers for Clerk authentication and PostHog analytics |
| web/app/page.tsx | Landing page with conditional authentication UI |
| web/app/globals.css | Global CSS with Tailwind imports and basic theming |
| web/app/dashboard/page.tsx | Protected dashboard page for authenticated users |
| web/app/sign-in/[[...sign-in]]/page.tsx | Sign-in page using Clerk components |
| web/app/sign-up/[[...sign-up]]/page.tsx | Sign-up page using Clerk components |
| web/app/api/webhooks/stripe/route.ts | Stripe webhook handler for payment events |
| } catch (err: any) { | ||
| return NextResponse.json({ error: err?.message || "unknown" }, { status: 400 }); |
Copilot
AI
Sep 21, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using 'any' type defeats the purpose of TypeScript. Consider using 'unknown' or a more specific error type like 'Error' instead.
| } catch (err: any) { | |
| return NextResponse.json({ error: err?.message || "unknown" }, { status: 400 }); | |
| } catch (err: unknown) { | |
| let message = "unknown"; | |
| if (err && typeof err === "object" && "message" in err && typeof (err as any).message === "string") { | |
| message = (err as { message: string }).message; | |
| } | |
| return NextResponse.json({ error: message }, { status: 400 }); |
App under web/ ready to deploy.