Skip to content

Commit b55db0e

Browse files
seo update
1 parent eab90e8 commit b55db0e

7 files changed

Lines changed: 99 additions & 26 deletions

File tree

app/layout.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import Provider from "@/provider";
55

66

77
export const metadata = {
8-
title: "Create Next App",
8+
title: "AI PDT Reader",
99
description: "Generated by create next app",
1010
};
1111

app/page.js

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,32 @@
1-
import { Button } from "@/components/ui/button";
2-
import Image from "next/image";
1+
import { metadata } from './seo/metadata'; // Import metadata from seo folder
2+
import Head from 'next/head';
3+
import { Button } from "@/components/ui/button"; // Import your Button component
4+
import Image from "next/image"; // Import Image for usage if needed
35

46
export default function Home() {
57
return (
6-
<div>
7-
Programming Communities
8-
<Button>Click me</Button>
9-
</div>
8+
<>
9+
<Head>
10+
<title>{metadata.title}</title>
11+
<meta name="description" content={metadata.description} />
12+
<meta name="keywords" content={metadata.keywords} />
13+
<meta name="author" content={metadata.author} />
14+
<meta name="robots" content={metadata.robots} />
15+
<meta property="og:type" content={metadata.openGraph.type} />
16+
<meta property="og:title" content={metadata.openGraph.title} />
17+
<meta property="og:description" content={metadata.openGraph.description} />
18+
<meta property="og:url" content={metadata.openGraph.url} />
19+
<meta property="og:image" content={metadata.openGraph.images[0].url} />
20+
<meta name="twitter:card" content={metadata.twitter.card} />
21+
<meta name="twitter:title" content={metadata.twitter.title} />
22+
<meta name="twitter:description" content={metadata.twitter.description} />
23+
<meta name="twitter:image" content={metadata.twitter.image} />
24+
</Head>
25+
<div>
26+
<h1>Programming Communities</h1>
27+
<Button>Click me</Button>
28+
{/* Add any images or additional content here */}
29+
</div>
30+
</>
1031
);
1132
}

app/seo/metadata.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
export const metadata = {
2+
title: "AI PDF Reader - Unlock Insights from Your Documents",
3+
description: "AI PDF Reader is a powerful tool to analyze and extract content from PDFs efficiently. Explore AI-powered document analysis today.",
4+
keywords: "AI PDF Reader, PDF analysis, AI tools, document reader, AI-powered tools, PDF content extraction",
5+
author: "AI PDF Reader Team",
6+
robots: "index, follow",
7+
openGraph: {
8+
type: "website",
9+
title: "AI PDF Reader - Unlock Insights from Your Documents",
10+
description: "AI PDF Reader is a powerful tool to analyze and extract content from PDFs efficiently. Explore AI-powered document analysis today.",
11+
url: "https://ai-pdf-reader.vercel.app/",
12+
images: [
13+
{
14+
url: "https://ai-pdf-reader.vercel.app/og-image.jpg", // Replace with actual image URL
15+
width: 1200,
16+
height: 630,
17+
alt: "AI PDF Reader Preview Image",
18+
},
19+
],
20+
},
21+
twitter: {
22+
card: "summary_large_image",
23+
title: "AI PDF Reader - Unlock Insights from Your Documents",
24+
description: "AI PDF Reader is a powerful tool to analyze and extract content from PDFs efficiently. Explore AI-powered document analysis today.",
25+
image: "https://ai-pdf-reader.vercel.app/twitter-image.jpg", // Replace with actual image URL
26+
},
27+
};
28+

convex/_generated/dataModel.d.ts

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,29 @@
88
* @module
99
*/
1010

11-
import { AnyDataModel } from "convex/server";
11+
import type {
12+
DataModelFromSchemaDefinition,
13+
DocumentByName,
14+
TableNamesInDataModel,
15+
SystemTableNames,
16+
} from "convex/server";
1217
import type { GenericId } from "convex/values";
13-
14-
/**
15-
* No `schema.ts` file found!
16-
*
17-
* This generated code has permissive types like `Doc = any` because
18-
* Convex doesn't know your schema. If you'd like more type safety, see
19-
* https://docs.convex.dev/using/schemas for instructions on how to add a
20-
* schema file.
21-
*
22-
* After you change a schema, rerun codegen with `npx convex dev`.
23-
*/
18+
import schema from "../schema.js";
2419

2520
/**
2621
* The names of all of your Convex tables.
2722
*/
28-
export type TableNames = string;
23+
export type TableNames = TableNamesInDataModel<DataModel>;
2924

3025
/**
3126
* The type of a document stored in Convex.
27+
*
28+
* @typeParam TableName - A string literal type of the table name (like "users").
3229
*/
33-
export type Doc = any;
30+
export type Doc<TableName extends TableNames> = DocumentByName<
31+
DataModel,
32+
TableName
33+
>;
3434

3535
/**
3636
* An identifier for a document in Convex.
@@ -42,8 +42,10 @@ export type Doc = any;
4242
*
4343
* IDs are just strings at runtime, but this type can be used to distinguish them from other
4444
* strings when type checking.
45+
*
46+
* @typeParam TableName - A string literal type of the table name (like "users").
4547
*/
46-
export type Id<TableName extends TableNames = TableNames> =
48+
export type Id<TableName extends TableNames | SystemTableNames> =
4749
GenericId<TableName>;
4850

4951
/**
@@ -55,4 +57,4 @@ export type Id<TableName extends TableNames = TableNames> =
5557
* This type is used to parameterize methods like `queryGeneric` and
5658
* `mutationGeneric` to make them type-safe.
5759
*/
58-
export type DataModel = AnyDataModel;
60+
export type DataModel = DataModelFromSchemaDefinition<typeof schema>;

convex/schema.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { defineSchema, defineTable } from "convex/server";
2+
import { v } from "convex/values";
3+
4+
export default defineSchema({
5+
users: defineTable({
6+
userName: v.string(),
7+
email: v.string(),
8+
imageUrl: v.string()
9+
})
10+
});

next.config.mjs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
11
/** @type {import('next').NextConfig} */
2-
const nextConfig = {};
2+
const nextConfig = {
3+
reactStrictMode: true, // Optional: Example config option
4+
};
5+
6+
export default nextConfig; // Use export default for ES Modules
7+
8+
39

4-
export default nextConfig;
10+
11+
// /** @type {import('next').NextConfig} */
12+
// const nextConfig = {};
13+
14+
// export default nextConfig;

provider.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
'use client'
22
import React from 'react'
3+
import { ConvexProvider, ConvexReactClient } from "convex/react";
34

45
function Provider({children}) {
6+
const convex = new ConvexReactClient(process.env.NEXT_PUBLIC_CONVEX_URL);
57
return (
68
<div>
7-
{children}
9+
<ConvexProvider client={convex}>{children}</ConvexProvider>
810
</div>
911
)
1012
}

0 commit comments

Comments
 (0)