0
0
mirror of https://github.com/yude-jp/yude.jp synced 2024-12-23 04:30:11 +09:00

Compare commits

..

No commits in common. "c147a60690afbf7bbf1f23c131a52c76b04eb55b" and "d1f0180c130acda2d769e22be313eedff4f4d26a" have entirely different histories.

22 changed files with 15592 additions and 1662 deletions

View File

@ -1,38 +0,0 @@
# yude.jp サービス利用規約
yude.jp ドメイン以下に設置されているサービスについて、以下の利用規約が適用されます。
## サービス運用について
yude が実験的に運用しており、完全に無保証で提供されるものです。
事前の予告なくサーバーのメンテナンスを行う場合など、予告なくサービスの提供が一時停止、または永久に停止されることがあります。
## 禁止行為
以下の行為を、yude.jp で提供されるサービス、特に Mastodon インスタンス上において行うことを禁止します。 違反が見受けられた場合、管理者またはモデレーターによってアカウントに対し何らかの処分が下される可能性があります。
* 成人向け、またはグロテスクな画像・動画の投稿
* 常識を逸脱した暴言
* スパム行為
* サーバーへのクラック行為
* 管理者が不適切であると判断した行為
その他、サーバーの設置拠点である日本国の法律が適用されます。
## その他
この利用規約は管理者が利用者に対して了承を得ず更新することができますが、その際には必ず通知を Mastodon インスタンス内、または Twitter 上 ([@yudejp](https://twitter.com/yudejp) または [@yude_jp](https://twitter.com/yude_jp)) において行うものとします。
# yude.jp Terms of Service
The following ToS apply to services running under the yude.jp domain.
## About service operation
Our services are run by yude for experimental purposes and there's no guarantee on them.\
Those may be suspended temporarily or permanently (e.g. for server maintenance) without any announcement.
## Prohibited actions
The actions listed below are prohibited on the service running under the yude.jp domain (especially on Mastodon instance).\
Our administrator or moderator may take some action against the violating user's account.
* Post images or movies for adults, or grotesque
* Violent language that deviates from common sense
* Chat spamming
* Cracking our server(s)
* Actions that the administrator or moderator deems inappropriate
In addition, the laws of Japan, where the server is running, apply.
## Misc
These ToS may be updated by the administrator without any announcement, but we will always notify you with in the Mastodon instance ([mstdn.yude.jp](https://mstdn.yude.jp)) or on our Twitter account ([@yudejp](https://twitter.com/yudejp) or [@yude_jp](https://twitter.com/yude_jp)).

View File

@ -2,11 +2,9 @@
"locales": ["en", "ja"], "locales": ["en", "ja"],
"defaultLocale": "ja", "defaultLocale": "ja",
"pages": { "pages": {
"*": ["common"],
"/": ["index", "common"], "/": ["index", "common"],
"/profile": ["profile", "common"], "/profile": ["profile", "common"],
"/status": ["status", "common"], "/status": ["status", "common"],
"/house": ["house", "common"], "/house": ["house", "common"]
"/tos": ["tos", "common"]
} }
} }

View File

@ -1,3 +0,0 @@
{
"tos": "yude.jp Terms of Service"
}

View File

@ -1,3 +0,0 @@
{
"tos": "yude.jp サービス利用規約"
}

2
next-env.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
/// <reference types="next" />
/// <reference types="next/types/global" />

View File

@ -1,18 +1,18 @@
const nextTranslate = require('next-translate') const nextTranslate = require('next-translate')
module.exports = nextTranslate({ module.exports = nextTranslate({
experimental: {
darkModeVariant: true
},
i18n: { i18n: {
// These are all the locales you want to support in
// your application
locales: ['ja', 'en'], locales: ['ja', 'en'],
// This is the default locale you want to be used when visiting
// a non-locale prefixed path e.g. `/hello`
defaultLocale: 'ja', defaultLocale: 'ja',
}, },
images: { images: {
domains: ['mackerel.io'], domains: ['mackerel.io'],
}, },
webpack: function (config) {
config.module.rules.push({
test: /\.md$/,
use: 'raw-loader',
})
return config
},
}) })

14255
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -21,31 +21,29 @@
}, },
"homepage": "https://github.com/yudemoe/yude.jp#readme", "homepage": "https://github.com/yudemoe/yude.jp#readme",
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-svg-core": "^1.2.35", "@fortawesome/fontawesome-svg-core": "^1.2.34",
"@fortawesome/free-brands-svg-icons": "^5.15.3", "@fortawesome/free-brands-svg-icons": "^5.15.2",
"@fortawesome/free-solid-svg-icons": "^5.15.3", "@fortawesome/free-solid-svg-icons": "^5.15.2",
"@fortawesome/react-fontawesome": "^0.1.14", "@fortawesome/react-fontawesome": "^0.1.14",
"@tailwindcss/typography": "^0.4.0", "@zeit/next-css": "^1.0.1",
"autoprefixer": "^10.2.5", "autoprefixer": "^10.2.4",
"next": "^10.2.2", "next": "^10.0.6",
"next-themes": "^0.0.14", "next-themes": "^0.0.14",
"next-translate": "^1.0.7", "next-translate": "^1.0.2",
"nightwind": "^1.1.6",
"popper.js": "^1.16.1", "popper.js": "^1.16.1",
"postcss": "^8.3.0", "postcss": "^8.2.4",
"raw-loader": "^4.0.2",
"react": "^17.0.1", "react": "^17.0.1",
"react-dom": "^17.0.1", "react-dom": "^17.0.1",
"react-markdown": "^6.0.2",
"react-switch": "^6.0.0", "react-switch": "^6.0.0",
"remark-gfm": "^1.0.0", "tailwindcss": "^2.0.2",
"tailwindcss": "^2.1.2",
"tailwindcss-filters": "^3.0.0", "tailwindcss-filters": "^3.0.0",
"tailwindcss-responsive-embed": "^1.0.0", "tailwindcss-responsive-embed": "^1.0.0",
"webpack": "^5.37.1" "use-dark-mode": "^2.3.1"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^15.6.0", "@types/node": "^14.14.25",
"@types/react": "^17.0.6", "@types/react": "^17.0.1",
"typescript": "^4.2.4" "typescript": "^4.1.3"
} }
} }

View File

@ -1,6 +1,5 @@
import 'tailwindcss/tailwind.css'; import 'tailwindcss/tailwind.css';
import { ThemeProvider } from "next-themes"; import { ThemeProvider } from "next-themes";
import "../styles/globals.css"
function MyApp({ Component, pageProps }) { function MyApp({ Component, pageProps }) {
return ( return (

View File

@ -1,29 +0,0 @@
import "tailwindcss/tailwind.css";
import Link from 'next/link';
import useTranslation from 'next-translate/useTranslation'
import { useRouter } from 'next/router'
export default function Footer(props) {
const router = useRouter()
const { locale, locales, defaultLocale, pathname } = router
const { t, lang } = useTranslation("common")
const footer = t('footer')
const source = t('source')
const tos = t('tos')
return (
<>
<div className="container mx-auto px-6">
<div className="mt-16 flex flex-col items-center">
<div className="sm:w-full text-center py-6">
<p className="text-sm font-bold mb-2">
{footer} / <Link href="https://github.com/yudejp/yude.jp"><a className="hover:underline">{source}</a></Link>
</p>
<p className="text-sm font-bold mb-2">
<Link href="/tos"><a className="hover:underline">{tos}</a></Link>
</p>
</div>
</div>
</div>
</>
);
}

View File

@ -1,10 +1,10 @@
import Head from "next/head" import Head from "next/head"
import Link from "next/link"
import "tailwindcss/tailwind.css"; import "tailwindcss/tailwind.css";
import useTranslation from 'next-translate/useTranslation' import useTranslation from 'next-translate/useTranslation'
import { useRouter } from 'next/router' import { useRouter } from 'next/router'
import React, { useEffect, useState } from 'react' import React, { useEffect, useState } from 'react'
import Footer from "./Footer" import { useTheme } from "next-themes";
import Navbar from "./Navbar"
const Layout = (props) => { const Layout = (props) => {
const { title, children } = props const { title, children } = props
@ -23,11 +23,28 @@ const Layout = (props) => {
<link rel="icon" href="/static/images/favicon.ico" /> <link rel="icon" href="/static/images/favicon.ico" />
</Head> </Head>
<main> <main>
<Navbar />
<div className="page-main"> <div className="page-main">
{children} {children}
</div> </div>
<Footer />
<style jsx global>{`
body {
text-align: center;
}
`}</style>
<div className="container mx-auto px-6">
<div className="mt-16 flex flex-col items-center">
<div className="sm:w-full text-center py-6">
<p className="text-sm font-bold mb-2">
{footer} / <Link href="https://github.com/yudejp/yude.jp"><a className="hover:underline">{source}</a></Link>
</p>
<p className="text-sm font-bold mb-2">
<Link href="https://scrapbox.io/yude/yude.jp_%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E5%88%A9%E7%94%A8%E8%A6%8F%E7%B4%84"><a className="hover:underline">{tos}</a></Link>
</p>
</div>
</div>
</div>
</main> </main>
</div> </div>
) )

View File

@ -1,7 +1,8 @@
import "tailwindcss/tailwind.css"; import "tailwindcss/tailwind.css";
import Popper from "popper.js";
import Link from 'next/link'; import Link from 'next/link';
import LangSelector from "./LangSelector" import LangSelector from "./LangSelector"
import ThemeSelector from "./ThemeSelector" import DarkmodeSwitcher from "./DarkmodeSwitcher"
const Navbar = () => { const Navbar = () => {
return ( return (
@ -15,7 +16,7 @@ const Navbar = () => {
</a> </a>
</Link> </Link>
<div className="origin-top-right absolute right-0"> <div className="origin-top-right absolute right-0">
<ThemeSelector /> <DarkmodeSwitcher />
<LangSelector /> <LangSelector />
</div> </div>
</nav> </nav>

View File

@ -1,5 +1,12 @@
import Layout from "./components/Layout" import Layout from "./components/Layout"
import Navbar from "./components/Navbar"
import useTranslation from 'next-translate/useTranslation' import useTranslation from 'next-translate/useTranslation'
import { faDiscord, faTwitter, faGithub, faKeybase, faInstagram, faMastodon, faSteam } from '@fortawesome/free-brands-svg-icons'
import { faEnvelope, faBirthdayCake, faMapPin, faSchool, faPhone, faInfo, faKey, faDownload, faEye } from '@fortawesome/free-solid-svg-icons'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import Link from 'next/link'
import Image from 'next/image'
import { useRouter } from 'next/router' import { useRouter } from 'next/router'
export default function About(props) { export default function About(props) {
@ -9,9 +16,11 @@ export default function About(props) {
const house = t('house') const house = t('house')
return ( return (
<Layout title={house}> <Layout title={house}>
<Navbar />
<p className="my-2 text-3xl">{house}</p>
<div className="mx-9"> <div className="mx-9">
<p className="my-2 text-3xl text-center">{house}</p>
<iframe className="w-full h-96" src="https://mackerel.io/embed/public/embed/4mVIU29WCRVZgHUxQPzWsfXo953uxiAegbjDb83hTQ7szesCunwdpVkBIzhnLc9i?period=1d" frameborder="0" scrolling="no"></iframe> <iframe className="w-full h-96" src="https://mackerel.io/embed/public/embed/4mVIU29WCRVZgHUxQPzWsfXo953uxiAegbjDb83hTQ7szesCunwdpVkBIzhnLc9i?period=1d" frameborder="0" scrolling="no"></iframe>
</div> </div>
</Layout> </Layout>

View File

@ -1,5 +1,7 @@
import Layout from "./components/Layout" import Layout from "./components/Layout"
import Navbar from "./components/Navbar"
import Link from 'next/link' import Link from 'next/link'
import { ReactElement } from 'react'
import { faDiscord, faGit, faMastodon, faGithub } from '@fortawesome/free-brands-svg-icons' import { faDiscord, faGit, faMastodon, faGithub } from '@fortawesome/free-brands-svg-icons'
import { faBlog, faBook, faUser, faServer, faHouseUser } from '@fortawesome/free-solid-svg-icons' import { faBlog, faBook, faUser, faServer, faHouseUser } from '@fortawesome/free-solid-svg-icons'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
@ -18,7 +20,8 @@ export default function Index(props) {
return ( return (
<Layout title={home}> <Layout title={home}>
<div className="my-9 text-center"> <Navbar />
<div className="my-9">
<div className="m-10"> <div className="m-10">
<Image <Image
src = "/static/images/avatar.png" src = "/static/images/avatar.png"

View File

@ -1,4 +1,5 @@
import Layout from "./components/Layout" import Layout from "./components/Layout"
import Navbar from "./components/Navbar"
import useTranslation from 'next-translate/useTranslation' import useTranslation from 'next-translate/useTranslation'
import { faDiscord, faTwitter, faGithub, faKeybase, faInstagram, faMastodon, faSteam } from '@fortawesome/free-brands-svg-icons' import { faDiscord, faTwitter, faGithub, faKeybase, faInstagram, faMastodon, faSteam } from '@fortawesome/free-brands-svg-icons'
import { faEnvelope, faBirthdayCake, faMapPin, faSchool, faPhone, faInfo, faKey, faDownload, faEye } from '@fortawesome/free-solid-svg-icons' import { faEnvelope, faBirthdayCake, faMapPin, faSchool, faPhone, faInfo, faKey, faDownload, faEye } from '@fortawesome/free-solid-svg-icons'
@ -16,7 +17,11 @@ export default function About(props) {
const desc = t('desc') const desc = t('desc')
const school = t('school') const school = t('school')
const contact = t('contact') const contact = t('contact')
const link_all = t('link_all')
const link_all_late = t('link_all_late')
const location = t('location') const location = t('location')
const here = t('here')
const mail = t('mail')
const belongs = t('belongs') const belongs = t('belongs')
const hiroshima = t('hiroshima') const hiroshima = t('hiroshima')
const birth = t('birth') const birth = t('birth')
@ -33,7 +38,8 @@ export default function About(props) {
return ( return (
<Layout title={about}> <Layout title={about}>
<div className="my-9 mx-8 text-center"> <Navbar />
<div className="my-9 mx-8">
{ {
// Heading // Heading

View File

@ -1,5 +1,11 @@
import Layout from "./components/Layout" import Layout from "./components/Layout"
import Navbar from "./components/Navbar"
import useTranslation from 'next-translate/useTranslation' import useTranslation from 'next-translate/useTranslation'
import { faDiscord, faTwitter, faGithub, faKeybase, faInstagram } from '@fortawesome/free-brands-svg-icons'
import { faEnvelope, faBirthdayCake, faMapPin, faSchool } from '@fortawesome/free-solid-svg-icons'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import Link from 'next/link'
import Image from 'next/image'
import { useRouter } from 'next/router' import { useRouter } from 'next/router'
@ -16,7 +22,8 @@ export default function About(props) {
return ( return (
<Layout title={status}> <Layout title={status}>
<div className="my-9 mx-9 text-center"> <Navbar />
<div className="my-9 mx-9">
{ {
// Heading // Heading
} }
@ -24,7 +31,7 @@ export default function About(props) {
<p className="text-left text-4xl">{status} <p className="md:inline font-mono text-base sm:">Powered / Generated by Mackerel.</p></p> <p className="text-left text-4xl">{status} <p className="md:inline font-mono text-base sm:">Powered / Generated by Mackerel.</p></p>
</div> </div>
{ {
// cherry Mackerel // cherry Datadog
} }
<h2 className="text-2xl text-left font-bold leading-7 sm:text-3xl sm:truncate">cherry</h2> <h2 className="text-2xl text-left font-bold leading-7 sm:text-3xl sm:truncate">cherry</h2>
<div className="flex xl:w-2/3 text-center"> <div className="flex xl:w-2/3 text-center">
@ -33,10 +40,10 @@ export default function About(props) {
<div className="flex-1"><p className="font-bold">OS </p>Arch Linux</div> <div className="flex-1"><p className="font-bold">OS </p>Arch Linux</div>
<div className="flex-1"><p className="font-bold">{location} </p>{hiroshima}</div> <div className="flex-1"><p className="font-bold">{location} </p>{hiroshima}</div>
</div> </div>
<iframe className="w-full h-96" src="https://mackerel.io/embed/public/embed/heHnGhDanoIDlf7jjxUe9yPVrsG3deeH5ptD8suErrq5w46crWEIYdLfzLoukzfF?period=24h" height="400" className="w-2/3" frameBorder="0" scrolling="no"></iframe> <iframe src="https://mackerel.io/embed/public/embed/heHnGhDanoIDlf7jjxUe9yPVrsG3deeH5ptD8suErrq5w46crWEIYdLfzLoukzfF?period=24h" height="400" className="w-2/3" frameBorder="0"></iframe>
{ {
// raspberry Mackerel // raspberry Datadog
} }
<h2 className="text-2xl text-left font-bold leading-7 sm:text-3xl sm:truncate">raspberry</h2> <h2 className="text-2xl text-left font-bold leading-7 sm:text-3xl sm:truncate">raspberry</h2>
<div className="flex xl:w-2/3 text-center"> <div className="flex xl:w-2/3 text-center">
@ -45,7 +52,7 @@ export default function About(props) {
<div className="flex-1"><p className="font-bold">OS </p>Raspbian GNU/Linux 10 (buster)</div> <div className="flex-1"><p className="font-bold">OS </p>Raspbian GNU/Linux 10 (buster)</div>
<div className="flex-1"><p className="font-bold">{location} </p>{tottori}</div> <div className="flex-1"><p className="font-bold">{location} </p>{tottori}</div>
</div> </div>
<iframe className="w-full h-96" src="https://mackerel.io/embed/public/embed/5HVbQiwuxrMithyrGjmmQCCOVgJ6Ptf94SDA2qWSTsh2rtz7pjePihYzaW5QEml4?period=24h" height="400" className="w-2/3" frameBorder="0" scrolling="no"></iframe> <iframe src="https://mackerel.io/embed/public/embed/5HVbQiwuxrMithyrGjmmQCCOVgJ6Ptf94SDA2qWSTsh2rtz7pjePihYzaW5QEml4?period=24h" height="400" className="w-2/3" frameBorder="0"></iframe>
</div> </div>

View File

@ -1,21 +0,0 @@
import Layout from "./components/Layout"
import useTranslation from 'next-translate/useTranslation'
import { useRouter } from 'next/router'
import React from "react"
import ReactMarkdown from "react-markdown"
import gfm from 'remark-gfm';
import input from '../docs/tos.md'
export default function Tos(props) {
const router = useRouter()
const { locale, locales, defaultLocale, pathname } = router
const { t, lang } = useTranslation("tos")
const tos = t('tos')
return(
<Layout title={tos}>
<div className="mx-9">
<ReactMarkdown plugins={[gfm]} children={input} />
</div>
</Layout>
)
}

View File

@ -1,15 +1,4 @@
@tailwind base; /* Start purging... */
@tailwind components; @tailwind components;
@tailwind utilities; @tailwind utilities;
/* Stop purging. */
@layer base {
h1 {
@apply text-3xl my-3;
}
h2 {
@apply text-xl;
}
ul {
@apply list-disc mx-10
}
}

View File

@ -56,7 +56,6 @@ module.exports = {
plugins: [ plugins: [
require('tailwindcss-filters'), require('tailwindcss-filters'),
require("tailwindcss-responsive-embed"), require("tailwindcss-responsive-embed"),
require("tailwindcss-aspect-ratio"), require("tailwindcss-aspect-ratio")
require('@tailwindcss/typography'),
] ]
} }

29
tsconfig.json Normal file
View File

@ -0,0 +1,29 @@
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"strict": false,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve"
},
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.tsx"
],
"exclude": [
"node_modules"
]
}

2736
yarn.lock

File diff suppressed because it is too large Load Diff