mirror of
https://github.com/yude-jp/yude.jp
synced 2024-12-22 20:20:09 +09:00
Merge branch 'master' of https://github.com/yudejp/yude.jp
This commit is contained in:
commit
7ac1c7199f
@ -3,7 +3,7 @@
|
|||||||
<img alt="Next JS" src="https://img.shields.io/badge/nextjs-%23000000.svg?style=for-the-badge&logo=next.js&logoColor=white"/>
|
<img alt="Next JS" src="https://img.shields.io/badge/nextjs-%23000000.svg?style=for-the-badge&logo=next.js&logoColor=white"/>
|
||||||
<img alt="TailwindCSS" src="https://img.shields.io/badge/tailwindcss-%2338B2AC.svg?style=for-the-badge&logo=tailwind-css&logoColor=white"/>\
|
<img alt="TailwindCSS" src="https://img.shields.io/badge/tailwindcss-%2338B2AC.svg?style=for-the-badge&logo=tailwind-css&logoColor=white"/>\
|
||||||
Source code of [yude.jp](https://yude.jp).\
|
Source code of [yude.jp](https://yude.jp).\
|
||||||
Built with [Next.js](https://nextjs.org/) and [Tailwind CSS](https://tailwindcss.com/) and deployed on [Vercel](https://vercel.com).
|
Built with [Next.js](https://nextjs.org/) and [Tailwind CSS](https://tailwindcss.com/) and deployed to [Cloudflare Pages](https://pages.cloudflare.com/).
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
1. Run `yarn` to install dependencies.
|
1. Run `yarn` to install dependencies.
|
||||||
|
23
docs/services/en.md
Normal file
23
docs/services/en.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Available services on yude.jp
|
||||||
|
|
||||||
|
## Softwares
|
||||||
|
* [AutoMuteUs](https://github.com/denverquane/automuteus)\
|
||||||
|
Among Us helper; API: [`galactus.yude.jp`](https://galactus.yude.jp)
|
||||||
|
* [Nextcloud](https://nc.yude.jp)
|
||||||
|
* [Mastodon](https://mstdn.yude.jp)
|
||||||
|
* [Misskey](https://misskey.yude.jp)
|
||||||
|
* [Pleroma](https//pleroma.yude.jp)
|
||||||
|
* TeamSpeak 3: `yude.jp`
|
||||||
|
* [Gitea](https://git.yude.jp)
|
||||||
|
* [h5ai](https://files.yude.jp)
|
||||||
|
* [JMusicBot (forked)](https://discord.com/oauth2/authorize?client_id=429638220456656896&scope=bot&permissions=338963472)
|
||||||
|
* [Owncast](https://live.yude.jp)
|
||||||
|
* [Minecraft Server](https://yude.jp/minecraft)
|
||||||
|
|
||||||
|
## Anonymous communication
|
||||||
|
### Tor
|
||||||
|
* Relay: [yudejp]
|
||||||
|
* Hidden Service: [yude3mzscyufx5u3zup72ium7tgecy3bd67p7t6vqhaywvr7e2gqpcqd.onion](yude3mzscyufx5u3zup72ium7tgecy3bd67p7t6vqhaywvr7e2gqpcqd.onion)
|
||||||
|
|
||||||
|
### I2P
|
||||||
|
* Hidden Service: [yudejp.i2p/?i2paddresshelper=55ivoba6mo3mqlwvw5lqz7lchxqew2kh77kwkn5shefrj2dp3coq.b32.i2p](yudejp.i2p/?i2paddresshelper=55ivoba6mo3mqlwvw5lqz7lchxqew2kh77kwkn5shefrj2dp3coq.b32.i2p)
|
23
docs/services/ja.md
Normal file
23
docs/services/ja.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# yude.jp で運用中のサービス
|
||||||
|
|
||||||
|
## ソフトウェア
|
||||||
|
* [AutoMuteUs](https://github.com/denverquane/automuteus)\
|
||||||
|
Among Us の自動ミュートボット; API: [`galactus.yude.jp`](https://galactus.yude.jp)
|
||||||
|
* [Nextcloud](https://nc.yude.jp)
|
||||||
|
* [Mastodon](https://mstdn.yude.jp)
|
||||||
|
* [Misskey](https://misskey.yude.jp)
|
||||||
|
* [Pleroma](https//pleroma.yude.jp)
|
||||||
|
* TeamSpeak 3: `yude.jp`
|
||||||
|
* [Gitea](https://git.yude.jp)
|
||||||
|
* [h5ai](https://files.yude.jp)
|
||||||
|
* [JMusicBot (フォーク)](https://discord.com/oauth2/authorize?client_id=429638220456656896&scope=bot&permissions=338963472)
|
||||||
|
* [Owncast](https://live.yude.jp)
|
||||||
|
* [Minecraft サーバー](https://yude.jp/minecraft)
|
||||||
|
|
||||||
|
## 秘匿化ネットワーク
|
||||||
|
### Tor
|
||||||
|
* リレー: [yudejp]
|
||||||
|
* Hidden Service: [yude3mzscyufx5u3zup72ium7tgecy3bd67p7t6vqhaywvr7e2gqpcqd.onion](yude3mzscyufx5u3zup72ium7tgecy3bd67p7t6vqhaywvr7e2gqpcqd.onion)
|
||||||
|
|
||||||
|
### I2P
|
||||||
|
* Hidden Service: [yudejp.i2p/?i2paddresshelper=55ivoba6mo3mqlwvw5lqz7lchxqew2kh77kwkn5shefrj2dp3coq.b32.i2p](yudejp.i2p/?i2paddresshelper=55ivoba6mo3mqlwvw5lqz7lchxqew2kh77kwkn5shefrj2dp3coq.b32.i2p)
|
@ -60,5 +60,8 @@
|
|||||||
"service": "Service",
|
"service": "Service",
|
||||||
"shape": "Shape",
|
"shape": "Shape",
|
||||||
"tos": "yude.jp Terms of Service",
|
"tos": "yude.jp Terms of Service",
|
||||||
"input": "en"
|
"input": "en",
|
||||||
|
"services": "Services",
|
||||||
|
"contents": "Contents",
|
||||||
|
"Blog": "Weblog"
|
||||||
}
|
}
|
@ -60,5 +60,8 @@
|
|||||||
"service": "サービス",
|
"service": "サービス",
|
||||||
"shape": "シェイプ",
|
"shape": "シェイプ",
|
||||||
"tos": "yude.jp サービス利用規約",
|
"tos": "yude.jp サービス利用規約",
|
||||||
"input": "ja"
|
"input": "ja",
|
||||||
|
"services": "サービス",
|
||||||
|
"contents": "コンテンツ",
|
||||||
|
"blog": "ブログ"
|
||||||
}
|
}
|
@ -18,17 +18,6 @@ export default function Footer(props) {
|
|||||||
<p className="text-sm font-bold mb-2">
|
<p className="text-sm font-bold mb-2">
|
||||||
{t('footer')} / <Link href="https://github.com/yudejp/yude.jp"><a className="hover:underline">{t('source')}</a></Link>
|
{t('footer')} / <Link href="https://github.com/yudejp/yude.jp"><a className="hover:underline">{t('source')}</a></Link>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
|
||||||
<span>
|
|
||||||
<Link href="yude3mzscyufx5u3zup72ium7tgecy3bd67p7t6vqhaywvr7e2gqpcqd.onion"><a className="hover:underline">Tor</a></Link>
|
|
||||||
</span>
|
|
||||||
<span className="text-xs">
|
|
||||||
⚫
|
|
||||||
</span>
|
|
||||||
<span>
|
|
||||||
<Link href="http://yudejp.i2p/?i2paddresshelper=55ivoba6mo3mqlwvw5lqz7lchxqew2kh77kwkn5shefrj2dp3coq.b32.i2p"><a className="hover:underline">I2P</a></Link>
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -18,7 +18,7 @@ import MinecraftMenu from "./components/Menu/MinecraftMenu"
|
|||||||
|
|
||||||
// Font Awesome
|
// Font Awesome
|
||||||
import { faDiscord, faGit, faGithub } from '@fortawesome/free-brands-svg-icons'
|
import { faDiscord, faGit, faGithub } from '@fortawesome/free-brands-svg-icons'
|
||||||
import { faBook, faUser, faServer, faHouseUser, faHeart } from '@fortawesome/free-solid-svg-icons'
|
import { faBook, faUser, faServer, faScrewdriver, faHeart } from '@fortawesome/free-solid-svg-icons'
|
||||||
|
|
||||||
export default function Index(props) {
|
export default function Index(props) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@ -45,11 +45,10 @@ export default function Index(props) {
|
|||||||
<div className="grid grid-cols-3 gap-10">
|
<div className="grid grid-cols-3 gap-10">
|
||||||
<FAMenu dest="/profile" query={query} icon={faUser} />
|
<FAMenu dest="/profile" query={query} icon={faUser} />
|
||||||
<FAMenu dest="/server" query={query} icon={faServer} />
|
<FAMenu dest="/server" query={query} icon={faServer} />
|
||||||
<FAMenu dest="/house" query={query} icon={faHouseUser} />
|
<FAMenu dest="/services" query={query} icon={faScrewdriver} />
|
||||||
<FAMenu dest="https://scrapbox.io/yude" query={query} icon={faBook} />
|
<FAMenu dest="https://discord.gg/X6srY7X" icon={faDiscord} />
|
||||||
<FAMenu dest="https://discord.gg/X6srY7X" query={query} icon={faDiscord} />
|
<FAMenu dest="https://github.com/yudejp" icon={faGithub} />
|
||||||
<FAMenu dest="https://github.com/yudejp" query={query} icon={faGithub} />
|
<FAMenu dest="https://git.yude.jp" icon={faGit} />
|
||||||
<FAMenu dest="https://git.yude.jp" icon={faGit} query={query} />
|
|
||||||
<MinecraftMenu query={query} />
|
<MinecraftMenu query={query} />
|
||||||
<FAMenu dest="/mutual" icon={faHeart} query={query} />
|
<FAMenu dest="/mutual" icon={faHeart} query={query} />
|
||||||
</div>
|
</div>
|
||||||
|
@ -71,7 +71,7 @@ export default function About(props) {
|
|||||||
</button>
|
</button>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>{t('version')}: 1.17</p>
|
<p>{t('version')}: 1.18.1</p>
|
||||||
|
|
||||||
<Link href="https://bluemap.yude.jp">
|
<Link href="https://bluemap.yude.jp">
|
||||||
<a>
|
<a>
|
||||||
|
@ -30,7 +30,7 @@ export default function Tos(props) {
|
|||||||
title="相互リンク"
|
title="相互リンク"
|
||||||
description="yude.jp と相互にリンクを貼っている Web サイトの一覧"
|
description="yude.jp と相互にリンクを貼っている Web サイトの一覧"
|
||||||
/>
|
/>
|
||||||
<Layout title={t('common:mutual')}>
|
<Layout title={t('mutual')}>
|
||||||
<div>
|
<div>
|
||||||
{query["lang"] === 'ja' ? (
|
{query["lang"] === 'ja' ? (
|
||||||
<ReactMarkdown plugins={[gfm]}>
|
<ReactMarkdown plugins={[gfm]}>
|
||||||
|
@ -6,7 +6,7 @@ import { useTranslation, useLanguageQuery } from 'next-export-i18n';
|
|||||||
|
|
||||||
// Font Awesome
|
// Font Awesome
|
||||||
import { faDiscord, faTwitter, faGithub, faKeybase, faInstagram, faMastodon, faSteam, faAmazon } from '@fortawesome/free-brands-svg-icons'
|
import { faDiscord, faTwitter, faGithub, faKeybase, faInstagram, faMastodon, faSteam, faAmazon } from '@fortawesome/free-brands-svg-icons'
|
||||||
import { faEnvelope, faBirthdayCake, faMapPin, faSchool, faPhone, faInfo, faLink, faMobile } from '@fortawesome/free-solid-svg-icons'
|
import { faEnvelope, faBirthdayCake, faMapPin, faSchool, faPhone, faBlog, faBookDead, faInfo, faBookmark, faLink, faMobile } from '@fortawesome/free-solid-svg-icons'
|
||||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
||||||
|
|
||||||
// Next.js, React
|
// Next.js, React
|
||||||
@ -87,6 +87,19 @@ export default function Profile(props) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{
|
||||||
|
// Contents
|
||||||
|
}
|
||||||
|
<div>
|
||||||
|
<div className="text-left">
|
||||||
|
<p className="text-2xl"><FontAwesomeIcon icon={faBookDead} className="w-5 h-5 inline"/> {t('contents')}</p>
|
||||||
|
</div>
|
||||||
|
<div className="my-2 grid grid-cols-2 lg:grid-cols-5 md:grid-cols-3 sm:grid-cols-2justify-items-center gap-y-6">
|
||||||
|
<Contact dest="https://blog.yude.jp" icon={faBlog} caption={t('blog')} />
|
||||||
|
<Contact dest="https://scrapbox.io/yude" icon={faBookmark} caption="Scrapbox" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{
|
{
|
||||||
// Contact
|
// Contact
|
||||||
}
|
}
|
||||||
|
49
pages/services.js
Normal file
49
pages/services.js
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
// Base layout
|
||||||
|
import Layout from "./components/Layout"
|
||||||
|
|
||||||
|
// i18n
|
||||||
|
import { useTranslation, useLanguageQuery, LanguageSwitcher } from 'next-export-i18n';
|
||||||
|
|
||||||
|
// React Router etc.
|
||||||
|
import { useRouter } from 'next/router'
|
||||||
|
import React from "react"
|
||||||
|
|
||||||
|
// React Markdown
|
||||||
|
import ReactMarkdown from "react-markdown"
|
||||||
|
import gfm from 'remark-gfm';
|
||||||
|
import ja from '../docs/services/ja.md'
|
||||||
|
import en from '../docs/services/en.md'
|
||||||
|
|
||||||
|
// next-seo
|
||||||
|
import { NextSeo } from 'next-seo';
|
||||||
|
|
||||||
|
export default function Tos(props) {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
const [query] = useLanguageQuery();
|
||||||
|
|
||||||
|
if (!query) {
|
||||||
|
return <p>Loading...</p>
|
||||||
|
} else {
|
||||||
|
return(
|
||||||
|
<>
|
||||||
|
<NextSeo
|
||||||
|
title="サービス"
|
||||||
|
description="yude.jp で運用中のサービス"
|
||||||
|
/>
|
||||||
|
<Layout title={t('services')}>
|
||||||
|
<div>
|
||||||
|
{query["lang"] === 'ja' ? (
|
||||||
|
<ReactMarkdown plugins={[gfm]}>
|
||||||
|
{ja}
|
||||||
|
</ReactMarkdown>
|
||||||
|
) : (
|
||||||
|
<ReactMarkdown plugins={[gfm]}>
|
||||||
|
{en}
|
||||||
|
</ReactMarkdown>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</Layout>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user