diff --git a/apps/web/public/browserconfig.xml b/apps/web/public/browserconfig.xml new file mode 100644 index 0000000..39060b2 --- /dev/null +++ b/apps/web/public/browserconfig.xml @@ -0,0 +1,11 @@ + + + + + + + + #ffffff + + + \ No newline at end of file diff --git a/apps/web/public/favicon.ico b/apps/web/public/favicon.ico new file mode 100644 index 0000000..9b2cba8 Binary files /dev/null and b/apps/web/public/favicon.ico differ diff --git a/apps/web/public/frame.svg b/apps/web/public/frame.svg new file mode 100644 index 0000000..4dac68e --- /dev/null +++ b/apps/web/public/frame.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/web/public/icons/android-icon-144x144.png b/apps/web/public/icons/android-icon-144x144.png new file mode 100644 index 0000000..7320ece Binary files /dev/null and b/apps/web/public/icons/android-icon-144x144.png differ diff --git a/apps/web/public/icons/android-icon-192x192.png b/apps/web/public/icons/android-icon-192x192.png new file mode 100644 index 0000000..f534f42 Binary files /dev/null and b/apps/web/public/icons/android-icon-192x192.png differ diff --git a/apps/web/public/icons/android-icon-36x36.png b/apps/web/public/icons/android-icon-36x36.png new file mode 100644 index 0000000..6b8db02 Binary files /dev/null and b/apps/web/public/icons/android-icon-36x36.png differ diff --git a/apps/web/public/icons/android-icon-48x48.png b/apps/web/public/icons/android-icon-48x48.png new file mode 100644 index 0000000..30a68fa Binary files /dev/null and b/apps/web/public/icons/android-icon-48x48.png differ diff --git a/apps/web/public/icons/android-icon-72x72.png b/apps/web/public/icons/android-icon-72x72.png new file mode 100644 index 0000000..e4019c8 Binary files /dev/null and b/apps/web/public/icons/android-icon-72x72.png differ diff --git a/apps/web/public/icons/android-icon-96x96.png b/apps/web/public/icons/android-icon-96x96.png new file mode 100644 index 0000000..85591ab Binary files /dev/null and b/apps/web/public/icons/android-icon-96x96.png differ diff --git a/apps/web/public/icons/apple-icon-114x114.png b/apps/web/public/icons/apple-icon-114x114.png new file mode 100644 index 0000000..c776e3f Binary files /dev/null and b/apps/web/public/icons/apple-icon-114x114.png differ diff --git a/apps/web/public/icons/apple-icon-120x120.png b/apps/web/public/icons/apple-icon-120x120.png new file mode 100644 index 0000000..76604df Binary files /dev/null and b/apps/web/public/icons/apple-icon-120x120.png differ diff --git a/apps/web/public/icons/apple-icon-144x144.png b/apps/web/public/icons/apple-icon-144x144.png new file mode 100644 index 0000000..7320ece Binary files /dev/null and b/apps/web/public/icons/apple-icon-144x144.png differ diff --git a/apps/web/public/icons/apple-icon-152x152.png b/apps/web/public/icons/apple-icon-152x152.png new file mode 100644 index 0000000..eb5ef0d Binary files /dev/null and b/apps/web/public/icons/apple-icon-152x152.png differ diff --git a/apps/web/public/icons/apple-icon-180x180.png b/apps/web/public/icons/apple-icon-180x180.png new file mode 100644 index 0000000..b90e62f Binary files /dev/null and b/apps/web/public/icons/apple-icon-180x180.png differ diff --git a/apps/web/public/icons/apple-icon-57x57.png b/apps/web/public/icons/apple-icon-57x57.png new file mode 100644 index 0000000..7cfb2e5 Binary files /dev/null and b/apps/web/public/icons/apple-icon-57x57.png differ diff --git a/apps/web/public/icons/apple-icon-60x60.png b/apps/web/public/icons/apple-icon-60x60.png new file mode 100644 index 0000000..1d90a37 Binary files /dev/null and b/apps/web/public/icons/apple-icon-60x60.png differ diff --git a/apps/web/public/icons/apple-icon-72x72.png b/apps/web/public/icons/apple-icon-72x72.png new file mode 100644 index 0000000..e4019c8 Binary files /dev/null and b/apps/web/public/icons/apple-icon-72x72.png differ diff --git a/apps/web/public/icons/apple-icon-76x76.png b/apps/web/public/icons/apple-icon-76x76.png new file mode 100644 index 0000000..34575f4 Binary files /dev/null and b/apps/web/public/icons/apple-icon-76x76.png differ diff --git a/apps/web/public/icons/favicon-16x16.png b/apps/web/public/icons/favicon-16x16.png new file mode 100644 index 0000000..96db3a2 Binary files /dev/null and b/apps/web/public/icons/favicon-16x16.png differ diff --git a/apps/web/public/icons/favicon-32x32.png b/apps/web/public/icons/favicon-32x32.png new file mode 100644 index 0000000..f8f589d Binary files /dev/null and b/apps/web/public/icons/favicon-32x32.png differ diff --git a/apps/web/public/icons/favicon-96x96.png b/apps/web/public/icons/favicon-96x96.png new file mode 100644 index 0000000..85591ab Binary files /dev/null and b/apps/web/public/icons/favicon-96x96.png differ diff --git a/apps/web/public/icons/ms-icon-144x144.png b/apps/web/public/icons/ms-icon-144x144.png new file mode 100644 index 0000000..7320ece Binary files /dev/null and b/apps/web/public/icons/ms-icon-144x144.png differ diff --git a/apps/web/public/icons/ms-icon-150x150.png b/apps/web/public/icons/ms-icon-150x150.png new file mode 100644 index 0000000..248ef48 Binary files /dev/null and b/apps/web/public/icons/ms-icon-150x150.png differ diff --git a/apps/web/public/icons/ms-icon-310x310.png b/apps/web/public/icons/ms-icon-310x310.png new file mode 100644 index 0000000..950a3d6 Binary files /dev/null and b/apps/web/public/icons/ms-icon-310x310.png differ diff --git a/apps/web/public/icons/ms-icon-70x70.png b/apps/web/public/icons/ms-icon-70x70.png new file mode 100644 index 0000000..7b9c269 Binary files /dev/null and b/apps/web/public/icons/ms-icon-70x70.png differ diff --git a/apps/web/public/landing-page-bg.png b/apps/web/public/landing-page-bg.png new file mode 100644 index 0000000..4f87394 Binary files /dev/null and b/apps/web/public/landing-page-bg.png differ diff --git a/apps/web/public/logo.svg b/apps/web/public/logo.svg new file mode 100644 index 0000000..7de330a --- /dev/null +++ b/apps/web/public/logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/web/public/manifest.json b/apps/web/public/manifest.json new file mode 100644 index 0000000..fcbfad5 --- /dev/null +++ b/apps/web/public/manifest.json @@ -0,0 +1,44 @@ +{ + "name": "OpenCut", + "description": "A simple but powerful video editor that gets the job done. In your browser.", + "display": "standalone", + "start_url": "/", + "icons": [ + { + "src": "/icons/android-icon-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "/icons/android-icon-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "/icons/android-icon-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "/icons/android-icon-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "/icons/android-icon-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "/icons/android-icon-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] +} \ 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 cb20127..0000000 Binary files a/apps/web/src/app/favicon.ico and /dev/null differ diff --git a/apps/web/src/app/globals.css b/apps/web/src/app/globals.css index 2169dbb..1c8a788 100644 --- a/apps/web/src/app/globals.css +++ b/apps/web/src/app/globals.css @@ -39,7 +39,7 @@ --sidebar-ring: 0 0% 3.9%; } .dark { - --background: 0 0% 8%; + --background: 0 0% 6%; --foreground: 0 0% 98%; --card: 0 0% 3.9%; --card-foreground: 0 0% 98%; diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index 5d33100..ee04564 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -1,4 +1,3 @@ -import type { Metadata } from "next"; import { Inter } from "next/font/google"; import { ThemeProvider } from "next-themes"; import { Analytics } from "@vercel/analytics/react"; @@ -6,46 +5,14 @@ import Script from "next/script"; import "./globals.css"; import { Toaster } from "../components/ui/sonner"; import { TooltipProvider } from "../components/ui/tooltip"; +import { baseMetaData } from "./metadata"; const inter = Inter({ subsets: ["latin"], variable: "--font-inter", }); -export const metadata: Metadata = { - title: "OpenCut", - description: - "A simple but powerful video editor that gets the job done. In your browser.", - openGraph: { - title: "OpenCut", - description: - "A simple but powerful video editor that gets the job done. In your browser.", - url: "https://opencut.app", - siteName: "OpenCut", - locale: "en_US", - type: "website", - images: [ - { - url: "https://opencut.app/opengraph-image.jpg", - width: 1200, - height: 630, - alt: "OpenCut", - }, - ], - }, - twitter: { - card: "summary_large_image", - title: "OpenCut", - description: - "A simple but powerful video editor that gets the job done. In your browser.", - creator: "@opencutapp", - images: ["/opengraph-image.jpg"], - }, - robots: { - index: true, - follow: true, - }, -}; +export const metadata = baseMetaData; export default function RootLayout({ children, diff --git a/apps/web/src/app/metadata.ts b/apps/web/src/app/metadata.ts new file mode 100644 index 0000000..4e38701 --- /dev/null +++ b/apps/web/src/app/metadata.ts @@ -0,0 +1,66 @@ +import { Metadata } from "next"; + +const title = "OpenCut"; +const description = "A simple but powerful video editor that gets the job done. In your browser."; +const openGraphImageUrl = "https://opencut.app/opengraph-image.jpg"; +const twitterImageUrl = "/opengraph-image.jpg"; + +export const baseMetaData: Metadata = { + title: title, + description: description, + openGraph: { + title: title, + description: description, + url: "https://opencut.app", + siteName: "OpenCut", + locale: "en_US", + type: "website", + images: [ + { + url: openGraphImageUrl, + width: 1200, + height: 630, + alt: "OpenCut", + }, + ], + }, + twitter: { + card: "summary_large_image", + title: title, + description: description, + creator: "@opencutapp", + images: [twitterImageUrl], + }, + robots: { + index: true, + follow: true, + }, + icons: { + icon: [ + { url: "/favicon.ico" }, + { url: "/icons/favicon-16x16.png", sizes: "16x16", type: "image/png" }, + { url: "/icons/favicon-32x32.png", sizes: "32x32", type: "image/png" }, + { url: "/icons/favicon-96x96.png", sizes: "96x96", type: "image/png" }, + ], + apple: [ + { url: "/icons/apple-icon-57x57.png", sizes: "57x57", type: "image/png" }, + { url: "/icons/apple-icon-60x60.png", sizes: "60x60", type: "image/png" }, + { url: "/icons/apple-icon-72x72.png", sizes: "72x72", type: "image/png" }, + { url: "/icons/apple-icon-76x76.png", sizes: "76x76", type: "image/png" }, + { url: "/icons/apple-icon-114x114.png", sizes: "114x114", type: "image/png" }, + { url: "/icons/apple-icon-120x120.png", sizes: "120x120", type: "image/png" }, + { url: "/icons/apple-icon-144x144.png", sizes: "144x144", type: "image/png" }, + { url: "/icons/apple-icon-152x152.png", sizes: "152x152", type: "image/png" }, + { url: "/icons/apple-icon-180x180.png", sizes: "180x180", type: "image/png" }, + ], + shortcut: ["/favicon.ico"] + }, + appleWebApp: { + capable: true, + title: title, + }, + manifest: "/manifest.json", + other: { + "msapplication-config": "/browserconfig.xml" + } +}; diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx index dcedab3..e9957e1 100644 --- a/apps/web/src/app/page.tsx +++ b/apps/web/src/app/page.tsx @@ -1,6 +1,7 @@ import { Hero } from "@/components/landing/hero"; import { Header } from "@/components/header"; import { getWaitlistCount } from "@/lib/waitlist"; +import Image from "next/image"; // Force dynamic rendering so waitlist count updates in real-time export const dynamic = "force-dynamic"; @@ -10,6 +11,13 @@ export default async function Home() { return (
+ landing-page.bg
diff --git a/apps/web/src/components/header.tsx b/apps/web/src/components/header.tsx index 7366dd3..74ba935 100644 --- a/apps/web/src/components/header.tsx +++ b/apps/web/src/components/header.tsx @@ -29,8 +29,7 @@ export function Header() { const leftContent = ( - OpenCut Logo - OpenCut + OpenCut Logo ); @@ -59,5 +58,11 @@ export function Header() { ); - return ; + return ( + + ); } diff --git a/apps/web/src/components/landing/hero.tsx b/apps/web/src/components/landing/hero.tsx index 7b4588c..fadc043 100644 --- a/apps/web/src/components/landing/hero.tsx +++ b/apps/web/src/components/landing/hero.tsx @@ -8,6 +8,7 @@ import Link from "next/link"; import { useEffect, useState } from "react"; import { useToast } from "@/hooks/use-toast"; import { getStars } from "@/lib/fetchGhStars"; +import Image from "next/image"; interface HeroProps { signupCount: number; @@ -82,7 +83,7 @@ export function Hero({ signupCount }: HeroProps) { }; return ( -
+
-

- The open source -

-

- video editor -

+

The First Open Source

+
+ Online +
+ frame + + Video Editor + +
+