├── .nvmrc ├── .husky ├── pre-commit └── commit-msg ├── README.md ├── .lintstagedrc ├── .vscode ├── extensions.json └── settings.json ├── src ├── app │ ├── icon.png │ ├── opengraph-image.png │ ├── fonts │ │ └── PretendardVariable.woff2 │ ├── page.tsx │ ├── providers.tsx │ ├── post │ │ └── [title] │ │ │ └── page.tsx │ └── layout.tsx ├── styles │ ├── globals.css │ └── markdown.css ├── utils │ ├── cn.ts │ └── getPosts.ts ├── components │ ├── Logo.tsx │ ├── Footer.tsx │ ├── Spacer.tsx │ ├── Markdown.tsx │ ├── layouts │ │ └── Layout.tsx │ ├── icons │ │ └── IconClose.tsx │ ├── Header.tsx │ └── ContactOverlay.tsx └── views │ ├── HomeView │ ├── components │ │ ├── PostList.tsx │ │ ├── Bio.tsx │ │ └── PostCard.tsx │ └── index.tsx │ └── PostView │ ├── components │ ├── PostHeader.tsx │ └── PostUtterances.tsx │ └── index.tsx ├── commitlint.config.js ├── posts └── test.mdx ├── public └── images │ └── test │ └── thumbnail.png ├── postcss.config.mjs ├── next.config.mjs ├── tailwind.config.ts ├── .gitignore ├── tsconfig.json ├── .github └── workflows │ └── ci.yml ├── package.json ├── biome.json └── pnpm-lock.yaml /.nvmrc: -------------------------------------------------------------------------------- 1 | v18.18.2 -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | pnpm lint-staged -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | pnpm commitlint --edit $1 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 저의 다양한 생각, 일상, 회고를 기록하고 정리하는 블로그입니다. 2 | -------------------------------------------------------------------------------- /.lintstagedrc: -------------------------------------------------------------------------------- 1 | { 2 | "*.{ts,tsx}": ["biome format --write ."] 3 | } -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["biomejs.biome"] 3 | } 4 | -------------------------------------------------------------------------------- /src/app/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SEOKKAMONI/blog/HEAD/src/app/icon.png -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { extends: ["@commitlint/config-conventional"] }; 2 | -------------------------------------------------------------------------------- /src/styles/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /src/app/opengraph-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SEOKKAMONI/blog/HEAD/src/app/opengraph-image.png -------------------------------------------------------------------------------- /posts/test.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | title: 테스트 3 | date: 2024-12-01 4 | thumbnail: "/images/test/thumbnail.png" 5 | --- 6 | 7 | 테스트 -------------------------------------------------------------------------------- /public/images/test/thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SEOKKAMONI/blog/HEAD/public/images/test/thumbnail.png -------------------------------------------------------------------------------- /src/app/fonts/PretendardVariable.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SEOKKAMONI/blog/HEAD/src/app/fonts/PretendardVariable.woff2 -------------------------------------------------------------------------------- /src/app/page.tsx: -------------------------------------------------------------------------------- 1 | import HomeView from "@/views/HomeView"; 2 | 3 | const HomePage = () => ; 4 | 5 | export default HomePage; 6 | -------------------------------------------------------------------------------- /postcss.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('postcss-load-config').Config} */ 2 | const config = { 3 | plugins: { 4 | tailwindcss: {}, 5 | }, 6 | }; 7 | 8 | export default config; 9 | -------------------------------------------------------------------------------- /src/utils/cn.ts: -------------------------------------------------------------------------------- 1 | import { type ClassValue, clsx } from "clsx"; 2 | import { twMerge } from "tailwind-merge"; 3 | 4 | export const cn = (...inputs: ClassValue[]) => { 5 | return twMerge(clsx(inputs)); 6 | }; 7 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.defaultFormatter": "biomejs.biome", 3 | "editor.formatOnSave": true, 4 | "editor.codeActionsOnSave": { 5 | "source.fixAll": "always", 6 | "source.organizeImports.biome": "explicit" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/components/Logo.tsx: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | 3 | const Logo = () => { 4 | return ( 5 | 6 | SEOKKAMONI.blog 7 | 8 | ); 9 | }; 10 | 11 | export default Logo; 12 | -------------------------------------------------------------------------------- /next.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: false, 4 | images: { 5 | remotePatterns: [ 6 | { 7 | protocol: "https", 8 | hostname: "github.com", 9 | }, 10 | ], 11 | }, 12 | }; 13 | 14 | export default nextConfig; 15 | -------------------------------------------------------------------------------- /src/app/providers.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { OverlayProvider } from "overlay-kit"; 4 | import type { PropsWithChildren } from "react"; 5 | 6 | const Providers = ({ children }: PropsWithChildren) => { 7 | return {children}; 8 | }; 9 | 10 | export default Providers; 11 | -------------------------------------------------------------------------------- /src/components/Footer.tsx: -------------------------------------------------------------------------------- 1 | const Footer = () => { 2 | return ( 3 | 6 | ); 7 | }; 8 | 9 | export default Footer; 10 | -------------------------------------------------------------------------------- /src/views/HomeView/components/PostList.tsx: -------------------------------------------------------------------------------- 1 | import type { PropsWithChildren } from "react"; 2 | 3 | const PostList = ({ children }: PropsWithChildren) => { 4 | return ( 5 |
6 | {children} 7 |
8 | ); 9 | }; 10 | 11 | export default PostList; 12 | -------------------------------------------------------------------------------- /src/components/Spacer.tsx: -------------------------------------------------------------------------------- 1 | interface SpacerProps { 2 | height?: string | number; 3 | width?: string | number; 4 | } 5 | 6 | const Spacer = ({ height, width }: SpacerProps) => { 7 | return ( 8 |
14 | ); 15 | }; 16 | 17 | export default Spacer; 18 | -------------------------------------------------------------------------------- /src/components/Markdown.tsx: -------------------------------------------------------------------------------- 1 | import { marked } from "marked"; 2 | 3 | import "@/styles/markdown.css"; 4 | 5 | interface MarkdownProps { 6 | html: string; 7 | } 8 | 9 | const Markdown = ({ html }: MarkdownProps) => { 10 | const __html = marked(html, { async: false }); 11 | 12 | return ( 13 |
17 | ); 18 | }; 19 | 20 | export default Markdown; 21 | -------------------------------------------------------------------------------- /src/views/PostView/components/PostHeader.tsx: -------------------------------------------------------------------------------- 1 | interface PostHeaderProps { 2 | title: string; 3 | date: string; 4 | } 5 | 6 | const PostHeader = ({ title, date }: PostHeaderProps) => { 7 | return ( 8 |
9 | {title} 10 | {date} 11 |
12 | ); 13 | }; 14 | 15 | export default PostHeader; 16 | -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from "tailwindcss"; 2 | 3 | const config: Config = { 4 | content: ["./src/**/*.{js,ts,jsx,tsx,mdx}"], 5 | theme: { 6 | extend: { 7 | colors: { 8 | white: "#FFFFFF", 9 | black: "#222222", 10 | gray: "#666666", 11 | lightGray: "#F6F6F6", 12 | mediumGray: "#d9d9d9", 13 | }, 14 | screens: { 15 | "max-1100": { max: "1100px" }, 16 | "max-650": { max: "650px" }, 17 | }, 18 | }, 19 | }, 20 | }; 21 | 22 | export default config; 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # local env files 29 | .env*.local 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /src/components/layouts/Layout.tsx: -------------------------------------------------------------------------------- 1 | import type { PropsWithChildren } from "react"; 2 | import Footer from "../Footer"; 3 | import Header from "../Header"; 4 | 5 | const Layout = ({ children }: PropsWithChildren) => { 6 | return ( 7 | <> 8 |
9 |
10 | {children} 11 |
12 |