From 2b3dec3c12ee7ba7dc0373449e947bf178553a76 Mon Sep 17 00:00:00 2001 From: Takeshi Kimata <117462761+kimatata@users.noreply.github.com> Date: Sun, 12 May 2024 13:59:35 +0900 Subject: [PATCH] Move docs to docusaurus site --- docs/docs/architecture/_category_.json | 6 +- docs/docs/getstarted/_category_.json | 4 ++ docs/docs/getstarted/docker.md | 7 +++ docs/docs/getstarted/manual.md | 55 +++++++++++++++++ docs/docs/getstarted/selfhost.md | 10 +++ docs/docusaurus.config.js | 58 +++--------------- docs/static/img/android-chrome-192x192.png | Bin 0 -> 12102 bytes docs/static/img/favicon.ico | Bin 3626 -> 15406 bytes frontend/messages/en.json | 18 +----- frontend/messages/ja.json | 18 +----- frontend/src/app/[locale]/Header.tsx | 22 ++++--- frontend/src/app/[locale]/PaneMainTitle.tsx | 32 +++++----- frontend/src/app/[locale]/guide/GuideBar.tsx | 39 ------------ frontend/src/app/[locale]/guide/layout.tsx | 18 ------ .../[locale]/guide/selfhost/docker/page.tsx | 13 ---- .../[locale]/guide/selfhost/manual/page.tsx | 53 ---------------- .../src/app/[locale]/guide/selfhost/page.tsx | 12 ---- 17 files changed, 120 insertions(+), 245 deletions(-) create mode 100644 docs/docs/getstarted/_category_.json create mode 100644 docs/docs/getstarted/docker.md create mode 100644 docs/docs/getstarted/manual.md create mode 100644 docs/docs/getstarted/selfhost.md create mode 100644 docs/static/img/android-chrome-192x192.png delete mode 100644 frontend/src/app/[locale]/guide/GuideBar.tsx delete mode 100644 frontend/src/app/[locale]/guide/layout.tsx delete mode 100644 frontend/src/app/[locale]/guide/selfhost/docker/page.tsx delete mode 100644 frontend/src/app/[locale]/guide/selfhost/manual/page.tsx delete mode 100644 frontend/src/app/[locale]/guide/selfhost/page.tsx diff --git a/docs/docs/architecture/_category_.json b/docs/docs/architecture/_category_.json index e641a32..6839f73 100644 --- a/docs/docs/architecture/_category_.json +++ b/docs/docs/architecture/_category_.json @@ -1,8 +1,4 @@ { "label": "Architecuture", - "position": 2, - "link": { - "type": "generated-index", - "description": "Architecuture" - } + "position": 3 } diff --git a/docs/docs/getstarted/_category_.json b/docs/docs/getstarted/_category_.json new file mode 100644 index 0000000..7fca846 --- /dev/null +++ b/docs/docs/getstarted/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Get started", + "position": 2 +} diff --git a/docs/docs/getstarted/docker.md b/docs/docs/getstarted/docker.md new file mode 100644 index 0000000..36820fb --- /dev/null +++ b/docs/docs/getstarted/docker.md @@ -0,0 +1,7 @@ +--- +sidebar_position: 2 +--- + +# Running TestPlat as a Docker container + +## \ No newline at end of file diff --git a/docs/docs/getstarted/manual.md b/docs/docs/getstarted/manual.md new file mode 100644 index 0000000..fbf1035 --- /dev/null +++ b/docs/docs/getstarted/manual.md @@ -0,0 +1,55 @@ +--- +sidebar_position: 3 +--- + +# Running TestPlat manually + +:::info[Prerequisite] + +Prerequisite: v20 or higher node must be installed. + +::: + +To use TestPlat, you need run frontend server and backend server (API server). + +First, clone the repository. + +```bash +git clone git@github.com:kimatata/TestPlat.git +``` + +## Run backend server + +Moves to backend directory, then install dependencies. + +```bash +cd backend +npm ci +``` + +Initialize the database with the following command. + +```bash +npm run migrate +``` + +Start backend server. + +```bash +node index +``` + +## Run frontend server + +Moves to frontend directory, then install dependencies. + +```bash +cd frontend +npm ci +``` + +Start frontend server + +```bash +rpm run dev +``` diff --git a/docs/docs/getstarted/selfhost.md b/docs/docs/getstarted/selfhost.md new file mode 100644 index 0000000..8bbf129 --- /dev/null +++ b/docs/docs/getstarted/selfhost.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 1 +--- + +# Self hosting + +TestPlat is designed for self-hosted use. There are two ways to self-host the application: “Manual” and “Docker”. + +- Docker (Recommended) +- Manual diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 50f803e..2568a6f 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -8,12 +8,12 @@ import {themes as prismThemes} from 'prism-react-renderer'; /** @type {import('@docusaurus/types').Config} */ const config = { - title: 'TestPlat Document', + title: 'TestPlat', // tagline: 'Dinosaurs are cool', favicon: 'img/favicon.ico', // Set the production url of your site here - url: 'https://your-docusaurus-site.example.com', + url: 'https://kimatata.github.io', // Set the // pathname under which your site is served // For GitHub pages deployment, it is often '//' baseUrl: '/TestPlat/', @@ -30,8 +30,8 @@ const config = { // useful metadata like html lang. For example, if your site is Chinese, you // may want to replace "en" with "zh-Hans". i18n: { - defaultLocale: 'ja', - locales: ['ja'], + defaultLocale: 'en', + locales: ['en'], }, presets: [ @@ -59,57 +59,17 @@ const config = { // Replace with your project's social card image: 'img/docusaurus-social-card.jpg', navbar: { - title: 'TestPlat Docs', - // logo: { - // alt: 'TestPlat Logo', - // src: 'img/logo.svg', - // }, + title: 'TestPlat', + logo: { + alt: 'TestPlat Logo', + src: 'img/android-chrome-192x192.png', + }, items: [ - // { - // type: 'docSidebar', - // sidebarId: 'tutorialSidebar', - // position: 'left', - // label: 'Tutorial', - // }, {to: '/docs', label: 'Docs', position: 'left'}, - // {to: '/blog', label: 'Blog', position: 'left'}, - { - href: 'https://github.com/facebook/docusaurus', - label: 'GitHub', - position: 'right', - }, ], }, footer: { style: 'dark', - links: [ - // { - // title: 'Docs', - // items: [ - // { - // label: 'Tutorial', - // to: '/docs/intro', - // }, - // ], - // }, - // { - // title: 'Community', - // items: [ - // { - // label: 'Stack Overflow', - // href: 'https://stackoverflow.com/questions/tagged/docusaurus', - // }, - // { - // label: 'Discord', - // href: 'https://discordapp.com/invite/docusaurus', - // }, - // { - // label: 'Twitter', - // href: 'https://twitter.com/docusaurus', - // }, - // ], - // }, - ], copyright: `Copyright © ${new Date().getFullYear()} TestPlat. Built with Docusaurus.`, }, prism: { diff --git a/docs/static/img/android-chrome-192x192.png b/docs/static/img/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..1ea1b870cce98cf72fbdfb8d3b0a8df2dbb3b0a3 GIT binary patch literal 12102 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
M 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 Z&@}BbTd}useJ2025%_Eb{(p?X{{eeU#^nG2 literal 3626 zcmb`Je@s(X6vrR`EK3%b%orErlDW({vnABqA zcfaS{d+xbU5JKp0*;0YOg+;Fl!eT)XRuapIwFLL`=imZCSon$`se`_<%@MB=M~KG+ z=EW^FL`w|Bo>*ktlaS^(fut!95`iG5u=SZ8nfDHO#GaTlH1-XG^;vsjUb^gWTVz0+ z^=WR1wv9-2oeR=_;fL0H7rNWqAzGtO(D;`~cX(RcN0w2v24Y8)6t`cS^_ghs`_ho? z{0ka~1Dgo8TfAP$r*ua?>$_V+kZ!-(TvEJ7O2f;Y#tezt$&R4 zLI}=-y@Z!grf*h3>}DUL{km4R>ya_I5Ag#{h_&?+HpKS!;$x3LC#CqUQ8&nM?X))Q zXAy2?`YL4FbC5CgJu(M&Q|>1st8XXLZ|5MgwgjP$m_2Vt0(J z&Gu7bOlkbGzGm2sh?X`){7w69Y$1#@P@7DF{ZE=4%T0NDS)iH`tiPSKpDNW)zmtn( zw;4$f>k)4$LBc>eBAaTZeCM2(iD+sHlj!qd z2GjRJ>f_Qes(+mnzdA^NH?^NB(^o-%Gmg$c8MNMq&`vm@9Ut;*&$xSD)PKH{wBCEC z4P9%NQ;n2s59ffMn8*5)5AAg4-93gBXBDX`A7S& zH-|%S3Wd%T79fk-e&l`{!?lve8_epXhE{d3Hn$Cg!t=-4D(t$cK~7f&4s?t7wr3ZP z*!SRQ-+tr|e1|hbc__J`k3S!rMy<0PHy&R`v#aJv?`Y?2{avK5sQz%=Us()jcNuZV z*$>auD4cEw>;t`+m>h?f?%VFJZj8D|Y1e_SjxG%J4{-AkFtT2+ZZS5UScS~%;dp!V>)7zi`w(xwSd*FS;Lml=f6hn#jq)2is4nkp+aTrV?)F6N z>DY#SU0IZ;*?Hu%tSj4edd~kYNHMFvS&5}#3-M;mBCOCZL3&;2obdG?qZ>rD|zC|Lu|sny76pn2xl|6sk~Hs{X9{8iBW zwiwgQt+@hi`FYMEhX2 - - - {t("guide")} - - + + } + > + {t("docs")} + + diff --git a/frontend/src/app/[locale]/PaneMainTitle.tsx b/frontend/src/app/[locale]/PaneMainTitle.tsx index d27e50b..41ef22d 100644 --- a/frontend/src/app/[locale]/PaneMainTitle.tsx +++ b/frontend/src/app/[locale]/PaneMainTitle.tsx @@ -1,6 +1,5 @@ import { title, subtitle } from "@/components/primitives"; import { Button, Link as NextUiLink } from "@nextui-org/react"; -import { ExternalLink } from "lucide-react"; import { Link } from "@/src/navigation"; import { useTranslations } from "next-intl"; @@ -38,27 +37,32 @@ export default function MainTitle({ locale }: Props) {
+ + -
diff --git a/frontend/src/app/[locale]/guide/GuideBar.tsx b/frontend/src/app/[locale]/guide/GuideBar.tsx deleted file mode 100644 index 52ba589..0000000 --- a/frontend/src/app/[locale]/guide/GuideBar.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { useTranslations } from "next-intl"; -import { Link, NextUiLinkClasses } from "@/src/navigation"; - -export type Props = { - locale: string; -}; - -export default function Guidebar({ locale }: Props) { - const t = useTranslations("Guide"); - const links = [ - { - name: t("self_host"), - href: "/guide/selfhost", - indent: false, - }, - { - name: t("docker"), - href: "/guide/selfhost/docker", - indent: true, - }, - { - name: t("manual"), - href: "/guide/selfhost/manual", - indent: true, - }, - ]; - - return ( -
- {links.map((link) => ( -
- - {link.name} - -
- ))} -
- ); -} diff --git a/frontend/src/app/[locale]/guide/layout.tsx b/frontend/src/app/[locale]/guide/layout.tsx deleted file mode 100644 index d24d3d4..0000000 --- a/frontend/src/app/[locale]/guide/layout.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import Guidebar from "./GuideBar"; - -export default function GuideLayout({ - children, - params: { locale }, -}: { - children: React.ReactNode; - params: { locale: string }; -}) { - return ( -
- -
-
{children}
-
-
- ); -} diff --git a/frontend/src/app/[locale]/guide/selfhost/docker/page.tsx b/frontend/src/app/[locale]/guide/selfhost/docker/page.tsx deleted file mode 100644 index c69b320..0000000 --- a/frontend/src/app/[locale]/guide/selfhost/docker/page.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { useTranslations } from "next-intl"; -import { title } from "@/components/primitives"; -import { Snippet, Card, CardBody } from "@nextui-org/react"; - -export default function Page() { - const t = useTranslations("Guide"); - - return ( -
-

{t("run_as_docker")}

-
- ); -} diff --git a/frontend/src/app/[locale]/guide/selfhost/manual/page.tsx b/frontend/src/app/[locale]/guide/selfhost/manual/page.tsx deleted file mode 100644 index 13bf139..0000000 --- a/frontend/src/app/[locale]/guide/selfhost/manual/page.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { useTranslations } from "next-intl"; -import { title } from "@/components/primitives"; -import { Snippet } from "@nextui-org/react"; - -export default function Page() { - const t = useTranslations("Guide"); - const manualProcedures = [ - { - uid: "clone", - detail: "", - code: "git clone git@github.com:kimatata/TestPlat.git", - }, - { - uid: "move-to-backend", - detail: t("move_to_back"), - code: "cd backend", - }, - { - uid: "backend-install", - detail: t("backend_install"), - code: "npm install", - }, - { uid: "init-db", detail: t("init_db"), code: "npm run migrate" }, - { uid: "backend_start", detail: t("front_start"), code: "node index" }, - { - uid: "move-to-frontend", - detail: t("move_to_front"), - code: "cd frontend", - }, - { - uid: "front-install", - detail: t("frontend_install"), - code: "npm install", - }, - { uid: "front-start", detail: t("front_start"), code: "npm run start" }, - ]; - - return ( -
-

{t("run_by_manually")}

-
- {manualProcedures.map((procedure, index) => ( -
-

{procedure.detail}

- - {procedure.code} - -
- ))} -
-
- ); -} diff --git a/frontend/src/app/[locale]/guide/selfhost/page.tsx b/frontend/src/app/[locale]/guide/selfhost/page.tsx deleted file mode 100644 index 81ab3e9..0000000 --- a/frontend/src/app/[locale]/guide/selfhost/page.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { useTranslations } from "next-intl"; -import { title } from "@/components/primitives"; - -export default function Page() { - const t = useTranslations("Guide"); - - return ( -
-

{t("self_host")}

-
- ); -}