diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index e8d9541..8543d0c 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -6,11 +6,42 @@ import { Footer } from "@/components/Footer";
export const metadata: Metadata = {
title: "OpenReader WebUI",
- description: "A modern web interface for reading and managing documents",
- appleWebApp: {
- capable: true,
- statusBarStyle: "black-translucent",
- }
+ description: 'A "bring your own TTS api" web interface for reading documents with high quality text-to-speech voices.',
+ keywords: "PDF reader, text to speech, tts open ai, kokoro tts, Kokoro-82M, OpenReader, TTS PDF reader, high quality text to speech",
+ authors: [{ name: "Richard Roberson" }],
+ manifest: "/manifest.json",
+ metadataBase: new URL("https://openreader.richardr.dev"), // Replace with your domain
+ openGraph: {
+ type: "website",
+ locale: "en_US",
+ url: "https://openreader.richardr.dev",
+ siteName: "OpenReader WebUI",
+ title: "OpenReader WebUI",
+ description: 'A "bring your own TTS api" web interface for reading documents with high quality text-to-speech voices.',
+ images: [
+ {
+ url: "/web-app-manifest-512x512.png",
+ width: 512,
+ height: 512,
+ alt: "OpenReader WebUI Logo",
+ },
+ ],
+ },
+ robots: {
+ index: true,
+ follow: true,
+ googleBot: {
+ index: true,
+ follow: true,
+ 'max-video-preview': -1,
+ 'max-image-preview': 'large',
+ 'max-snippet': -1,
+ },
+ },
+ verification: {
+ // Add your verification codes if you have them
+ google: "MJXyTudn1kgQF8EtGD-tsnAWev7Iawso9hEvqeGHB3U",
+ },
};
export default function RootLayout({
@@ -27,7 +58,7 @@ export default function RootLayout({
-
+
{children}
diff --git a/src/app/page.tsx b/src/app/page.tsx
index d7e4c4a..b01f602 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -5,22 +5,23 @@ import { PDFUploader } from '@/components/PDFUploader';
import { DocumentList } from '@/components/DocumentList';
import { SettingsModal } from '@/components/SettingsModal';
import { SettingsIcon } from '@/components/icons/Icons';
+import { Button } from '@headlessui/react';
export default function Home() {
const [isSettingsOpen, setIsSettingsOpen] = useState(false);
return (
-
-
OpenReader WebUI
-
-
+
+
OpenReader WebUI
+
{'A "bring your own text-to-speech api" web interface for reading documents with high quality voices.'}
diff --git a/src/components/PDFViewSettings.tsx b/src/components/PDFViewSettings.tsx
index 767d843..9918a98 100644
--- a/src/components/PDFViewSettings.tsx
+++ b/src/components/PDFViewSettings.tsx
@@ -61,7 +61,7 @@ export function PDFViewSettings({ isOpen, setIsOpen }: PDFViewSettingsProps) {
value={selectedView}
onChange={(newView) => updateConfigKey('viewType', newView.id as ViewType)}
>
-
+
{selectedView.name}
@@ -118,7 +118,7 @@ export function PDFViewSettings({ isOpen, setIsOpen }: PDFViewSettingsProps) {
className="inline-flex justify-center rounded-lg bg-background px-4 py-2 text-sm
font-medium text-foreground hover:bg-background/90 focus:outline-none
focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2
- transform transition-transform duration-200 ease-in-out hover:scale-[1.04] hover:text-accent"
+ transform transition-transform duration-200 ease-in-out hover:scale-[1.04] hover:text-accent z-1"
onClick={() => setIsOpen(false)}
>
Close