From f46b7a7169748da3ed1279c356076c5b3412758f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B4nattas=20Moraes?= <135550080+jonattasmoraes@users.noreply.github.com> Date: Mon, 2 Feb 2026 10:24:14 -0300 Subject: [PATCH 01/17] Feat/add new app configs and fix mobile view (#51) * feat(web): add site config and meta theme colors - Add siteConfig with name, url, ogImage, description, links, authors, keywords - Add META_THEME_COLORS for light/dark theme (white and zinc-950) - Centralize app metadata for reuse in layout, OG and manifest * feat(web): add fonts utility with Geist, Inter and RTL support - Export fontVariables combining Geist, Geist Mono, Inter - Add Noto Sans Arabic and Noto Sans Hebrew for RTL languages - Use cn() to merge CSS variables for layout consumption * chore(web): add favicons and PWA assets, remove app favicon - Add favicon.ico, favicon-16x16/32x32, apple-touch-icon, android-chrome icons - Add site.webmanifest with theme_color and display standalone - Remove favicon from app dir in favor of public/ * feat(web): wire root layout with config, fonts and metadata - Use siteConfig for title, description, keywords, authors, openGraph, twitter - Set metadataBase, icons and manifest from config - Apply fontVariables on html and remove inline font setup - Add theme-color meta and inline script for flash-free theme/layout init - Rely on public favicon and manifest URLs * feat(web): add dynamic Open Graph image route - Add GET handler in app/og/ for OG image via next/og ImageResponse - Load Geist and Geist Mono from base64 JSON for ImageResponse - Render 1200x628 layout with Blaboard title and black background - Add note for contributors to improve layout/design * refactor(web): theme-provider defaults and providers formatting - Set default props and enableColorScheme in ThemeProvider - Normalize indentation in providers and theme-provider * feat(theme): keep meta theme-color in sync with theme changes Introduce useMetaColor hook to update the browser theme color dynamically when switching between light and dark modes, fixing mobile UI color mismatch after theme toggles. * chore(biome): ignore noDangerouslySetInnerHtml for theme bootstrap script Adds a Biome lint ignore for `dangerouslySetInnerHTML` in the layout theme bootstrap script. This is required to prevent theme flash before hydration, ensuring the correct theme and `meta[name="theme-color"]` are applied on the first paint without affecting SEO or hydration stability. * refactor: use NEXT_PUBLIC_SERVER_URL for site URL and ogImage * refactor: switch frontend to NEXT_PUBLIC_FRONTEND_URL * refactor: add NEXT_PUBLIC_FRONTEND_URL to web env sample * feat: add theme options dropdown to ModeToggle * refacror: remove layout class from localStorage * refactor: clean up comments in route.tsx Removed contributor notes and documentation comments. --- apps/web/.env.example | 1 + apps/web/public/android-chrome-192x192.png | Bin 0 -> 8628 bytes apps/web/public/android-chrome-512x512.png | Bin 0 -> 33989 bytes apps/web/public/apple-touch-icon.png | Bin 0 -> 8022 bytes apps/web/public/favicon-16x16.png | Bin 0 -> 451 bytes apps/web/public/favicon-32x32.png | Bin 0 -> 880 bytes apps/web/public/favicon.ico | Bin 0 -> 15406 bytes apps/web/public/site.webmanifest | 1 + apps/web/src/app/favicon.ico | Bin 25931 -> 0 bytes apps/web/src/app/layout.tsx | 90 +++++++++++++----- apps/web/src/app/og/geist-regular-otf.json | 1 + apps/web/src/app/og/geist-semibold-otf.json | 1 + .../web/src/app/og/geistmono-regular-otf.json | 1 + apps/web/src/app/og/route.tsx | 61 ++++++++++++ apps/web/src/components/auth-layout.tsx | 3 +- apps/web/src/components/mode-toggle.tsx | 62 ++++++------ apps/web/src/components/providers.tsx | 48 +++++----- apps/web/src/components/theme-provider.tsx | 19 +++- apps/web/src/hooks/use-meta-color.tsx | 25 +++++ apps/web/src/lib/config.ts | 33 +++++++ apps/web/src/lib/fonts.ts | 43 +++++++++ 21 files changed, 308 insertions(+), 81 deletions(-) create mode 100644 apps/web/public/android-chrome-192x192.png create mode 100644 apps/web/public/android-chrome-512x512.png create mode 100644 apps/web/public/apple-touch-icon.png create mode 100644 apps/web/public/favicon-16x16.png create mode 100644 apps/web/public/favicon-32x32.png create mode 100644 apps/web/public/favicon.ico create mode 100644 apps/web/public/site.webmanifest delete mode 100644 apps/web/src/app/favicon.ico create mode 100644 apps/web/src/app/og/geist-regular-otf.json create mode 100644 apps/web/src/app/og/geist-semibold-otf.json create mode 100644 apps/web/src/app/og/geistmono-regular-otf.json create mode 100644 apps/web/src/app/og/route.tsx create mode 100644 apps/web/src/hooks/use-meta-color.tsx create mode 100644 apps/web/src/lib/config.ts create mode 100644 apps/web/src/lib/fonts.ts diff --git a/apps/web/.env.example b/apps/web/.env.example index 442eb78..169bfd5 100644 --- a/apps/web/.env.example +++ b/apps/web/.env.example @@ -1 +1,2 @@ NEXT_PUBLIC_SERVER_URL="http://localhost:3000" +NEXT_PUBLIC_FRONTEND_URL="http://localhost:3001" diff --git a/apps/web/public/android-chrome-192x192.png b/apps/web/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..a7b25cacbc384e653877463e14d24fd26063b6ec GIT binary patch literal 8628 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 literal 0 HcmV?d00001 diff --git a/apps/web/public/android-chrome-512x512.png b/apps/web/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..4be733c3b76aa1d5d70768ab805f66e7098e570f GIT binary patch literal 33989 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 JD$u}&{67N`-Mjz* literal 0 HcmV?d00001 diff --git a/apps/web/public/apple-touch-icon.png b/apps/web/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2d23afe619ab423c9f7db21a90bae52260bd907e GIT binary patch literal 8022 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 QZ@&QKWmRNK-@^R=ALG)OZ~y=R literal 0 HcmV?d00001 diff --git a/apps/web/public/favicon-16x16.png b/apps/web/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..0de19b49666296ec24ddba8137eba24e46723e8c GIT binary patch literal 451 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 ktn+a literal 0 HcmV?d00001 diff --git a/apps/web/public/site.webmanifest b/apps/web/public/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/apps/web/public/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/apps/web/src/app/favicon.ico b/apps/web/src/app/favicon.ico deleted file mode 100644 index 718d6fea4835ec2d246af9800eddb7ffb276240c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25931 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 LrJugUA?W`A8`#=m diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index 53a2221..6679d28 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -1,37 +1,77 @@ import type { Metadata } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; - -import "../index.css"; import Providers from "~/components/providers"; +import { META_THEME_COLORS, siteConfig } from "~/lib/config"; +import { fontVariables } from "~/lib/fonts"; -const geistSans = Geist({ - variable: "--font-geist-sans", - subsets: ["latin"], -}); - -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", - subsets: ["latin"], -}); +import "../index.css"; export const metadata: Metadata = { - title: "blaboard", - description: "blaboard", + title: { + default: siteConfig.name, + template: `%s - ${siteConfig.name}`, + }, + metadataBase: new URL(process.env.NEXT_PUBLIC_FRONTEND_URL!), + description: siteConfig.description, + keywords: siteConfig.keywords, + authors: siteConfig.authors, + creator: "Berolab", + openGraph: { + type: "website", + locale: "en_US", + url: process.env.NEXT_PUBLIC_FRONTEND_URL!, + title: siteConfig.name, + description: siteConfig.description, + siteName: siteConfig.name, + images: [ + { + url: `${process.env.NEXT_PUBLIC_FRONTEND_URL}/opengraph-image.png`, + width: 1200, + height: 630, + alt: siteConfig.name, + }, + ], + }, + twitter: { + card: "summary_large_image", + title: siteConfig.name, + description: siteConfig.description, + images: [`${process.env.NEXT_PUBLIC_FRONTEND_URL}/opengraph-image.png`], + creator: "@berolab", + }, + icons: { + icon: "/favicon.ico", + shortcut: "/favicon-16x16.png", + apple: "/apple-touch-icon.png", + }, + manifest: `${siteConfig.url}/site.webmanifest`, }; export default function RootLayout({ - children, + children, }: Readonly<{ - children: React.ReactNode; + children: React.ReactNode; }>) { - return ( - - - {children} - - - ); + return ( + + +