Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions src/app/blog/[slug]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,25 @@ export default async function BlogPostPage({ params }: { params: Promise<{ slug:
headline: post.title,
description: post.description,
datePublished: post.date,
dateModified: post.date,
author: {
'@type': 'Organization',
name: 'ObatLog',
name: '第29大阪技術局',
url: `${site}/`,
},
publisher: {
'@type': 'Organization',
name: 'ObatLog',
name: '第29大阪技術局',
url: `${site}/`,
},
reviewedBy: {
'@type': 'Person',
name: '監修薬剤師',
jobTitle: 'Pharmacist',
},
mainEntityOfPage: {
'@type': 'WebPage',
'@id': `${site}/blog/${slug}/`,
},
url: `${site}/blog/${slug}/`,
};
Expand Down
10 changes: 6 additions & 4 deletions src/app/blog/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ import { getSiteUrl } from '../../lib/site';
const site = getSiteUrl();

export const metadata: Metadata = {
title: 'ブログ',
description: 'ObatLogの使い方ガイドや服薬管理のTipsを紹介します。',
title: '服薬管理ブログ',
description:
'ObatLogの使い方ガイドや服薬管理のコツ、飲み忘れ防止のヒントをわかりやすく紹介。お薬との上手な付き合い方を学べるブログです。',
alternates: { canonical: `${site}/blog/` },
openGraph: {
title: 'ブログ | ObatLog',
description: 'ObatLogの使い方ガイドや服薬管理のTipsを紹介します。',
title: '服薬管理ブログ | ObatLog',
description:
'ObatLogの使い方ガイドや服薬管理のコツ、飲み忘れ防止のヒントをわかりやすく紹介。お薬との上手な付き合い方を学べるブログです。',
url: `${site}/blog/`,
siteName: 'ObatLog',
locale: 'ja_JP',
Expand Down
25 changes: 25 additions & 0 deletions src/app/changelog/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import type { Metadata } from 'next';
import { getSiteUrl } from '@/lib/site';

const site = getSiteUrl();

export const metadata: Metadata = {
title: '更新履歴',
description:
'ObatLogの更新履歴・リリースノートです。新機能や改善内容をバージョンごとにご確認いただけます。',
alternates: { canonical: `${site}/changelog/` },
openGraph: {
title: '更新履歴 | ObatLog',
description:
'ObatLogの更新履歴・リリースノートです。新機能や改善内容をバージョンごとにご確認いただけます。',
url: `${site}/changelog/`,
siteName: 'ObatLog',
locale: 'ja_JP',
type: 'website',
},
robots: { index: true, follow: true },
};

export default function ChangelogLayout({ children }: { children: React.ReactNode }) {
return children;
}
25 changes: 25 additions & 0 deletions src/app/demo/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import type { Metadata } from 'next';
import { getSiteUrl } from '@/lib/site';

const site = getSiteUrl();

export const metadata: Metadata = {
title: 'デモを試す',
description:
'ObatLogのデモモードを体験できます。登録不要で服薬記録・過量チェック・通知機能をお試しください。',
alternates: { canonical: `${site}/demo/` },
openGraph: {
title: 'デモを試す | ObatLog',
description:
'ObatLogのデモモードを体験できます。登録不要で服薬記録・過量チェック・通知機能をお試しください。',
url: `${site}/demo/`,
siteName: 'ObatLog',
locale: 'ja_JP',
type: 'website',
},
robots: { index: true, follow: true },
};

export default function DemoLayout({ children }: { children: React.ReactNode }) {
return children;
}
17 changes: 11 additions & 6 deletions src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,28 @@ const site = getSiteUrl();

export const metadata: Metadata = {
metadataBase: new URL(`${site}/`),
title: { default: 'ObatLog — 服薬記録・過量チェック', template: '%s | ObatLog' },
title: {
default: 'ObatLog|お薬の飲み忘れ・飲みすぎを防ぐ服薬記録アプリ',
template: '%s | ObatLog',
},
description:
'毎日の服薬を記録し、1日の上限チェックで過量を防ぐシンプルなウェブアプリ(PWA)。医療機器ではありません。',
'毎日の服薬をワンタップで記録。過量服薬(OD)チェックと飲み忘れ通知で安心の服薬管理を。登録無料・スマホでサクッと使えるPWA対応アプリ。',
applicationName: 'ObatLog',
manifest: '/manifest.json',
openGraph: {
type: 'website',
locale: 'ja_JP',
url: site,
siteName: 'ObatLog',
title: 'ObatLog — 服薬記録・過量チェック',
description: '毎日の服薬を記録し、過量を防ぐシンプルなウェブアプリ。',
title: 'ObatLog|お薬の飲み忘れ・飲みすぎを防ぐ服薬記録アプリ',
description:
'毎日の服薬をワンタップで記録。過量服薬チェックと飲み忘れ通知で安心の服薬管理を。登録無料・スマホでサクッと使えるアプリ。',
},
twitter: {
card: 'summary_large_image',
title: 'ObatLog',
description: '服薬記録・過量チェックアプリ',
title: 'ObatLog|お薬の飲み忘れ・飲みすぎを防ぐ服薬記録アプリ',
description:
'毎日の服薬をワンタップで記録。過量服薬チェックと飲み忘れ通知で安心の服薬管理を。',
},
robots: { index: true, follow: true },
other: {
Expand Down
25 changes: 25 additions & 0 deletions src/app/login/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import type { Metadata } from 'next';
import { getSiteUrl } from '@/lib/site';

const site = getSiteUrl();

export const metadata: Metadata = {
title: 'ログイン',
description:
'ObatLogにログインして服薬記録を管理しましょう。メール・Googleアカウントで簡単にログインできます。',
alternates: { canonical: `${site}/login/` },
openGraph: {
title: 'ログイン | ObatLog',
description:
'ObatLogにログインして服薬記録を管理しましょう。メール・Googleアカウントで簡単にログインできます。',
url: `${site}/login/`,
siteName: 'ObatLog',
locale: 'ja_JP',
type: 'website',
},
robots: { index: false, follow: true },
};

export default function LoginLayout({ children }: { children: React.ReactNode }) {
return children;
}
12 changes: 12 additions & 0 deletions src/app/logs/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import type { Metadata } from 'next';

export const metadata: Metadata = {
title: '服薬ログ',
description:
'過去の服薬記録を確認できます。日付ごとにグルーピングされた服薬履歴を振り返りましょう。',
robots: { index: false, follow: false },
};

export default function LogsLayout({ children }: { children: React.ReactNode }) {
return children;
}
12 changes: 12 additions & 0 deletions src/app/medications/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import type { Metadata } from 'next';

export const metadata: Metadata = {
title: 'お薬一覧',
description:
'登録したお薬の一覧ページです。薬の追加・編集・1日の上限設定・通知設定を管理できます。',
robots: { index: false, follow: false },
};

export default function MedicationsLayout({ children }: { children: React.ReactNode }) {
return children;
}
45 changes: 43 additions & 2 deletions src/app/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,47 @@
'use client';
import HomePage from '@/components/HomePage';
import { getSiteUrl } from '@/lib/site';

const site = getSiteUrl();

export default function Page() {
return <HomePage />;
// WebApplication + Organization JSON-LD 構造化データ
const jsonLd = {
'@context': 'https://schema.org',
'@graph': [
{
'@type': 'WebApplication',
name: 'ObatLog',
description:
'毎日の服薬をワンタップで記録。過量服薬チェックと飲み忘れ通知で安心の服薬管理を。',
applicationCategory: 'HealthApplication',
operatingSystem: 'Web',
offers: {
'@type': 'Offer',
price: '0',
priceCurrency: 'JPY',
},
author: {
'@type': 'Organization',
name: '第29大阪技術局',
url: `${site}/`,
},
url: `${site}/`,
},
{
'@type': 'Organization',
name: '第29大阪技術局',
url: `${site}/`,
},
],
};

return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
<HomePage />
</>
);
}
9 changes: 5 additions & 4 deletions src/app/privacy/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@ import { getSiteUrl } from '@/lib/site';
const site = getSiteUrl();

export const metadata: Metadata = {
title: 'Privacy Policy | ObatLog',
title: 'プライバシーポリシー',
description:
'Privacy Policy for ObatLog. How we handle email, medication records, and Firebase.',
'ObatLogのプライバシーポリシーです。メールアドレス・服薬記録などの個人情報の取り扱いについてご説明します。',
alternates: { canonical: `${site}/privacy/` },
openGraph: {
title: 'Privacy Policy | ObatLog',
description: 'Privacy Policy for ObatLog.',
title: 'プライバシーポリシー | ObatLog',
description:
'ObatLogのプライバシーポリシーです。メールアドレス・服薬記録などの個人情報の取り扱いについてご説明します。',
url: `${site}/privacy/`,
siteName: 'ObatLog',
locale: 'ja_JP',
Expand Down
12 changes: 12 additions & 0 deletions src/app/settings/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import type { Metadata } from 'next';

export const metadata: Metadata = {
title: '設定',
description:
'ObatLogの設定ページです。通知設定・アカウント管理・データエクスポートなどを行えます。',
robots: { index: false, follow: false },
};

export default function SettingsLayout({ children }: { children: React.ReactNode }) {
return children;
}
9 changes: 5 additions & 4 deletions src/app/terms/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@ import { getSiteUrl } from '@/lib/site';
const site = getSiteUrl();

export const metadata: Metadata = {
title: 'Terms of Service | ObatLog',
title: '利用規約',
description:
'Terms of Service for ObatLog, a personal medication log web app. Not a medical device.',
'ObatLogの利用規約です。サービスのご利用条件・免責事項についてご確認ください。',
alternates: { canonical: `${site}/terms/` },
openGraph: {
title: 'Terms of Service | ObatLog',
description: 'Terms of Service for ObatLog.',
title: '利用規約 | ObatLog',
description:
'ObatLogの利用規約です。サービスのご利用条件・免責事項についてご確認ください。',
url: `${site}/terms/`,
siteName: 'ObatLog',
locale: 'ja_JP',
Expand Down
1 change: 1 addition & 0 deletions src/components/HomePage.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
'use client';
// ホームページ: 認証状態でLP/ホームを切り替え
// SSG時はLandingPageをレンダリングし、クローラーにコンテンツが見えるようにする。
// クライアント側で認証状態が確定したらアプリUIに切り替え。
Expand Down
Loading