Skip to content
Open
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
1 change: 1 addition & 0 deletions apps/nextjs/public/locales/ja/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"works_description": "メイン時間にフロントエンド (Node.js/React) のサービス開発、それに付随するアクセシビリティ改善提案、開発環境刷新など行っています。余暇時間を使ってオープンソースへのコントリビュート活動も積極的に行っています。",
"tech_blog": "2018年10月より運営の当ブログを始め、Vue.jsやNuxtを使ったフロントエンドを中心に設計・開発しています。",
"eventin": "2021年06月よりジョインさせていただいているプロジェクトで、NestJS (Express) や WebSocket を利用したサービスの機能開発を中心にコントリビュートしています。",
"pos": "2019年07月よりジョインさせていただいているプロジェクトで、CakePHP (PHP) を利用したサービスの機能開発を中心にコントリビュートしています。",
"portrait": "ポートレート",
"portrait_description": "技術カンファレンスなどのオフラインイベントでは、イベント T シャツをよく着ています。これまで私は Vue Fes、JSConf、及びフロントエンドカンファレンスに参加していました。基本的にオンラインにおける見た目の公開は NG ですが、ご気軽にお問い合わせください。"
}
15 changes: 14 additions & 1 deletion apps/nextjs/src/data/works.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,34 @@
type Status = 'enabled' | 'archived'
type Image = 'webneko-blog' | 'eventin' | 'pos' | 'agentbank' | 'battlecats'

export interface WorkItem {
title: string
description: string
status: Status
url: string
image: string
image: Image
}

export const works: WorkItem[] = [
{
title: 'Tech Blog',
description: 'tech_blog',
status: 'enabled',
url: 'https://webneko.dev/',
image: 'webneko-blog',
},
{
title: 'EventIn',
description: 'eventin',
status: 'enabled',
url: 'https://jp.vcube.com/eventdx/eventin',
image: 'eventin',
},
{
title: 'Smaregi POS',
description: 'pos',
status: 'enabled',
url: 'https://jp.vcube.com/eventdx/eventin',
image: 'pos',
},
]
5 changes: 4 additions & 1 deletion apps/nextjs/src/sections/WorksSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@ import styles from 'css/link-preview.module.scss'
import { works } from '../data/works'

const WorksSection = () => {
const showWorks = React.useMemo(() => {
return works.filter((work) => work.status === 'enabled')
}, [])
return (
<section id="works">
<h1 className="section__title">{i18next.t('works')}</h1>
<p>{i18next.t('works_description')}</p>
<div>
{works.map((work, index) => {
{showWorks.map((work, index) => {
return (
<div key={index}>
<h2>{work.title}</h2>
Expand Down
18 changes: 18 additions & 0 deletions libs/og-gen/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,24 @@ async function captureOgImage(
title: "",
description: "",
},
{
slug: 'pos',
url: 'https://smaregi.jp/',
title: "",
description: "",
},
{
slug: 'agentbank',
url: 'https://agent-bank.com/',
title: "",
description: "",
},
{
slug: 'battlecats',
url: 'https://battlecats.club/en/series/battlecats/',
title: "",
description: "",
},
];

const browser = await puppeteer.launch();
Expand Down