diff --git a/src/lib/publish.ts b/src/lib/publish.ts
new file mode 100644
index 0000000..62cc719
--- /dev/null
+++ b/src/lib/publish.ts
@@ -0,0 +1,15 @@
+export type Publish =
+ | 'public'
+ | 'limited' // noindex
+ | 'private'; // noindex nofollow
+
+export function robots(publish: Publish) {
+ switch (publish) {
+ case 'public':
+ return '';
+ case 'limited':
+ return 'noindex';
+ case 'private':
+ return 'noindex, nofollow';
+ }
+}
diff --git a/src/lib/server/database/article.ts b/src/lib/server/database/article.ts
new file mode 100644
index 0000000..fa2745e
--- /dev/null
+++ b/src/lib/server/database/article.ts
@@ -0,0 +1,12 @@
+export type Article = {
+ seq: number;
+ id: string;
+ title: string;
+ category: string;
+ released_at: Date;
+ updated_at: Date;
+ tags: string[];
+ image: string;
+ publish: string;
+ content: string;
+};
\ No newline at end of file
diff --git a/src/routes/article/+layout.server.ts b/src/routes/article/+layout.server.ts
new file mode 100644
index 0000000..ceb38bc
--- /dev/null
+++ b/src/routes/article/+layout.server.ts
@@ -0,0 +1,20 @@
+import type { Article } from '$lib/server/database/article';
+import type { LayoutServerLoad } from './$types';
+export const load: LayoutServerLoad = async () => {
+ return {
+ props: {
+ article: {
+ seq: 0,
+ id: 'test',
+ title: 'test',
+ category: 'test',
+ released_at: new Date(),
+ updated_at: new Date(),
+ tags: ['test'],
+ image: 'test',
+ publish: 'test',
+ content: 'test',
+ } as Article,
+ },
+ };
+};
\ No newline at end of file
diff --git a/src/routes/article/+layout.svelte b/src/routes/article/+layout.svelte
index a683fad..eb14329 100644
--- a/src/routes/article/+layout.svelte
+++ b/src/routes/article/+layout.svelte
@@ -1,5 +1,161 @@
-
-