diff --git a/apps/api/src/auth/auth.controller.ts b/apps/api/src/auth/auth.controller.ts index a13faf7..ca4ac82 100644 --- a/apps/api/src/auth/auth.controller.ts +++ b/apps/api/src/auth/auth.controller.ts @@ -7,6 +7,7 @@ import { Post, Req, Res, + UnauthorizedException, UseGuards, } from '@nestjs/common'; import { @@ -111,7 +112,7 @@ export class AuthController { | undefined) || dto?.refreshToken; if (!refreshToken) { - throw new Error('No refresh token provided'); + throw new UnauthorizedException('No refresh token provided'); } const result = await this.authService.refreshTokens(refreshToken); diff --git a/apps/web/.env.example b/apps/web/.env.example index 5143910..5f15c4b 100644 --- a/apps/web/.env.example +++ b/apps/web/.env.example @@ -9,3 +9,10 @@ NEXT_PUBLIC_DEMO_MODE_ENABLED=false # Optional: Analytics, etc. # NEXT_PUBLIC_GA_ID="" + +# GitHub Discussions integration for landing page feature wishlist +# GITHUB_TOKEN must be a fine-grained PAT with Discussions: Read-only on the repo +GITHUB_REPO_OWNER= +GITHUB_REPO_NAME= +GITHUB_DISCUSSIONS_CATEGORY_ID= +GITHUB_TOKEN= diff --git a/apps/web/app/(landing)/layout.tsx b/apps/web/app/(landing)/layout.tsx new file mode 100644 index 0000000..891c846 --- /dev/null +++ b/apps/web/app/(landing)/layout.tsx @@ -0,0 +1,23 @@ +import type { Metadata } from 'next'; +import { Header } from '../../components/landing/Header'; +import { Footer } from '../../components/landing/Footer'; + +export const metadata: Metadata = { + title: 'My Dev Deck — Your personal dev tool deck', + description: + 'An open-source, self-hostable collection of developer tools. Built in public, shaped by the community. Try the demo or explore on GitHub.', +}; + +export default function LandingLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> +
+
{children}
+