diff --git a/public/projects/astroach.png b/public/projects/astroach.png new file mode 100644 index 0000000..908c700 Binary files /dev/null and b/public/projects/astroach.png differ diff --git a/public/projects/dice-3d.png b/public/projects/dice-3d.png new file mode 100644 index 0000000..73ef4ac Binary files /dev/null and b/public/projects/dice-3d.png differ diff --git a/public/projects/finn-the-little-collector.png b/public/projects/finn-the-little-collector.png new file mode 100644 index 0000000..ec386ef Binary files /dev/null and b/public/projects/finn-the-little-collector.png differ diff --git a/public/projects/hwanseheedam.png b/public/projects/hwanseheedam.png new file mode 100644 index 0000000..a181b97 Binary files /dev/null and b/public/projects/hwanseheedam.png differ diff --git a/public/projects/hyper-focus-time.png b/public/projects/hyper-focus-time.png new file mode 100644 index 0000000..192eb6d Binary files /dev/null and b/public/projects/hyper-focus-time.png differ diff --git a/public/projects/lights-out-shot-down.png b/public/projects/lights-out-shot-down.png new file mode 100644 index 0000000..a024517 Binary files /dev/null and b/public/projects/lights-out-shot-down.png differ diff --git a/src/app/components/ProjectCard.tsx b/src/app/components/ProjectCard.tsx new file mode 100644 index 0000000..3ee88ce --- /dev/null +++ b/src/app/components/ProjectCard.tsx @@ -0,0 +1,55 @@ +import Image from 'next/image'; +import Link from 'next/link'; +import React from 'react'; +import BadgeList from './BadgeList'; + +export type ProjectCardProps = { + title: string; + desc: string; + image: string; + tags: string[]; + href: string; + createdAt: string; +}; + +const ProjectCard = ({ + title, + desc, + image, + tags, + href, + createdAt, +}: ProjectCardProps) => { + return ( +
  • + +
    +
    + {title} +
    +
    +

    {title}

    +

    {desc}

    +
    + {tags ? : null} + +
    +
    +
    + +
  • + ); +}; + +export default ProjectCard; diff --git a/src/app/components/ProjectCardList.tsx b/src/app/components/ProjectCardList.tsx new file mode 100644 index 0000000..7c4e92f --- /dev/null +++ b/src/app/components/ProjectCardList.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import ProjectCard, { ProjectCardProps } from './ProjectCard'; + +type ProjectCardListProps = { + projects: ProjectCardProps[]; +}; + +const ProjectCardList = ({ projects }: ProjectCardListProps) => { + if (projects.length === 0) { + return
    No Posts
    ; + } + + return ( + + ); +}; + +export default ProjectCardList; diff --git a/src/app/components/TopBar.tsx b/src/app/components/TopBar.tsx index 3013011..a06809f 100644 --- a/src/app/components/TopBar.tsx +++ b/src/app/components/TopBar.tsx @@ -8,6 +8,10 @@ const PATHS = [ path: '/posts', label: 'Posts', }, + { + path: '/projects', + label: 'Projects', + }, { path: '/sketchbook', label: 'Sketchbook', diff --git a/src/app/projects/page.tsx b/src/app/projects/page.tsx index e69de29..faff3d1 100644 --- a/src/app/projects/page.tsx +++ b/src/app/projects/page.tsx @@ -0,0 +1,91 @@ +import { Metadata } from 'next'; +import Background from '../components/Background'; +import { ProjectCardProps } from '../components/ProjectCard'; +import ProjectCardList from '../components/ProjectCardList'; +import TopBar from '../components/TopBar'; + +const PROJECTS: ProjectCardProps[] = [ + { + title: 'LIGHTS OUT, SHOT DOWN', + desc: '커스텀 셰이더를 적용한 3D 병 슈팅 게임, itch.io 1BIT 제출작', + image: '/projects/lights-out-shot-down.png', + tags: ['Game'], + createdAt: '2023', + href: 'https://shubidumdu.itch.io/lights-out-shot-down', + }, + { + title: '환세희담', + desc: '1995년도 환세 시리즈 첫 작품인 환세희담을 웹으로 이식', + image: '/projects/hwanseheedam.png', + tags: ['Game'], + createdAt: '2023', + href: 'https://shubidumdu.github.io/hwanseheedam/', + }, + { + title: 'Dice 3D', + desc: '물리엔진을 적용한 3D 주사위', + image: '/projects/dice-3d.png', + tags: ['Toy'], + createdAt: '2023', + href: 'https://shubidumdu.github.io/dice-3d/', + }, + { + title: 'Finn: the Little Collector', + desc: '"월리를 찾아라" 컨셉의 캐주얼 게임, 2022년도 JS13KGames 32위 수상작', + image: '/projects/finn-the-little-collector.png', + tags: ['Game'], + createdAt: '2022', + href: 'https://js13kgames.com/games/finn-the-little-collector/index.html', + }, + { + title: 'Astroach', + desc: '4x4 타일 기반의 액션게임, 2021년도 JS13KGames 제출작', + image: '/projects/astroach.png', + tags: ['Game'], + createdAt: '2021', + href: 'https://js13kgames.com/games/astroach/index.html', + }, + { + title: '절대집중시간', + desc: '반복 집중/휴식 타이머', + image: '/projects/hyper-focus-time.png', + tags: ['Tool'], + createdAt: '2020', + href: 'https://shubidumdu.github.io/hyper-focus-time/', + }, +]; + +export const metadata: Metadata = { + metadataBase: new URL('https://shubidumdu.github.io/'), + title: "Shubidumdu's Projects", + description: + '기업 아래 진행한 것들을 제외하고, 지금껏 개인적으로 진행한 프로젝트들의 모음입니다.', + authors: [ + { + name: 'Shubidumdu', + url: 'https://github.com/Shubidumdu', + }, + ], + colorScheme: 'light', + keywords: ['Shubidumdu', 'Devlog', 'Blog', '개발 블로그', '개발', '블로그'], + openGraph: { + title: "Shubidumdu's Projects", + description: + '기업 아래 진행한 것들을 제외하고, 지금껏 개인적으로 진행한 프로젝트들의 모음입니다.', + images: './ogImage.png', + }, +}; + +export default function Projects() { + return ( + <> + + +
    +
    + +
    +
    + + ); +}