Skip to content

Commit 8ed930e

Browse files
committed
Improve SEO
1 parent 2ae5d05 commit 8ed930e

File tree

3 files changed

+50
-18
lines changed

3 files changed

+50
-18
lines changed

src/app/layout.tsx

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,42 @@ import { Footer } from "@/components/Footer";
66

77
export const metadata: Metadata = {
88
title: "OpenReader WebUI",
9-
description: "A modern web interface for reading and managing documents",
10-
appleWebApp: {
11-
capable: true,
12-
statusBarStyle: "black-translucent",
13-
}
9+
description: 'A "bring your own TTS api" web interface for reading documents with high quality text-to-speech voices.',
10+
keywords: "PDF reader, text to speech, tts open ai, kokoro tts, Kokoro-82M, OpenReader, TTS PDF reader, high quality text to speech",
11+
authors: [{ name: "Richard Roberson" }],
12+
manifest: "/manifest.json",
13+
metadataBase: new URL("https://openreader.richardr.dev"), // Replace with your domain
14+
openGraph: {
15+
type: "website",
16+
locale: "en_US",
17+
url: "https://openreader.richardr.dev",
18+
siteName: "OpenReader WebUI",
19+
title: "OpenReader WebUI",
20+
description: 'A "bring your own TTS api" web interface for reading documents with high quality text-to-speech voices.',
21+
images: [
22+
{
23+
url: "/web-app-manifest-512x512.png",
24+
width: 512,
25+
height: 512,
26+
alt: "OpenReader WebUI Logo",
27+
},
28+
],
29+
},
30+
robots: {
31+
index: true,
32+
follow: true,
33+
googleBot: {
34+
index: true,
35+
follow: true,
36+
'max-video-preview': -1,
37+
'max-image-preview': 'large',
38+
'max-snippet': -1,
39+
},
40+
},
41+
verification: {
42+
// Add your verification codes if you have them
43+
google: "MJXyTudn1kgQF8EtGD-tsnAWev7Iawso9hEvqeGHB3U",
44+
},
1445
};
1546

1647
export default function RootLayout({
@@ -27,7 +58,7 @@ export default function RootLayout({
2758
<body className="antialiased">
2859
<Providers>
2960
<div className="min-h-screen bg-background p-4">
30-
<div className="max-w-6xl mx-auto align-center">
61+
<div className="relative max-w-6xl mx-auto align-center">
3162
<div className="bg-base rounded-lg shadow-lg">
3263
{children}
3364
</div>

src/app/page.tsx

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,23 @@ import { PDFUploader } from '@/components/PDFUploader';
55
import { DocumentList } from '@/components/DocumentList';
66
import { SettingsModal } from '@/components/SettingsModal';
77
import { SettingsIcon } from '@/components/icons/Icons';
8+
import { Button } from '@headlessui/react';
89

910
export default function Home() {
1011
const [isSettingsOpen, setIsSettingsOpen] = useState(false);
1112

1213
return (
1314
<div className='p-3 md:p-5'>
14-
<div className="flex justify-between items-center mb-6">
15-
<h1 className="text-xl font-bold text-center flex-grow">OpenReader WebUI</h1>
16-
<button
17-
onClick={() => setIsSettingsOpen(true)}
18-
className="rounded-full p-2 text-foreground hover:bg-offbase transform transition-transform duration-200 ease-in-out hover:scale-[1.1] hover:text-accent"
19-
aria-label="Settings"
20-
>
21-
<SettingsIcon className="w-6 h-6 hover:animate-spin-slow" />
22-
</button>
23-
</div>
15+
<Button
16+
onClick={() => setIsSettingsOpen(true)}
17+
className="rounded-full p-2 text-foreground hover:bg-offbase transform transition-transform duration-200 ease-in-out hover:scale-[1.1] hover:text-accent absolute top-3 right-3"
18+
aria-label="Settings"
19+
tabIndex={0}
20+
>
21+
<SettingsIcon className="w-6 h-6 hover:animate-spin-slow" />
22+
</Button>
23+
<h1 className="text-xl font-bold text-center flex-grow">OpenReader WebUI</h1>
24+
<p className="text-sm text-center text-muted mb-5">{'A "bring your own text-to-speech api" web interface for reading documents with high quality voices.'}</p>
2425
<div className="flex flex-col items-center gap-5">
2526
<PDFUploader className='max-w-xl' />
2627
<DocumentList />

src/components/PDFViewSettings.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export function PDFViewSettings({ isOpen, setIsOpen }: PDFViewSettingsProps) {
6161
value={selectedView}
6262
onChange={(newView) => updateConfigKey('viewType', newView.id as ViewType)}
6363
>
64-
<div className="relative">
64+
<div className="relative z-10">
6565
<ListboxButton className="relative w-full cursor-pointer rounded-lg bg-background py-2 pl-3 pr-10 text-left text-foreground shadow-sm focus:outline-none focus:ring-2 focus:ring-accent transform transition-transform duration-200 ease-in-out hover:scale-[1.01] hover:text-accent">
6666
<span className="block truncate">{selectedView.name}</span>
6767
<span className="pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2">
@@ -118,7 +118,7 @@ export function PDFViewSettings({ isOpen, setIsOpen }: PDFViewSettingsProps) {
118118
className="inline-flex justify-center rounded-lg bg-background px-4 py-2 text-sm
119119
font-medium text-foreground hover:bg-background/90 focus:outline-none
120120
focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2
121-
transform transition-transform duration-200 ease-in-out hover:scale-[1.04] hover:text-accent"
121+
transform transition-transform duration-200 ease-in-out hover:scale-[1.04] hover:text-accent z-1"
122122
onClick={() => setIsOpen(false)}
123123
>
124124
Close

0 commit comments

Comments
 (0)