Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/danpacho/next-your-home
๐ Powerful Nextjs Blog
https://github.com/danpacho/next-your-home
blog mdx nextjs typescript
Last synced: 2 days ago
JSON representation
๐ Powerful Nextjs Blog
- Host: GitHub
- URL: https://github.com/danpacho/next-your-home
- Owner: danpacho
- License: mit
- Created: 2022-01-05T15:15:38.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2022-08-16T08:26:48.000Z (about 2 years ago)
- Last Synced: 2023-03-06T05:19:39.987Z (over 1 year ago)
- Topics: blog, mdx, nextjs, typescript
- Language: TypeScript
- Homepage: https://next-your-home-guide.vercel.app
- Size: 18.8 MB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.ko.md
- License: LICENSE
Awesome Lists containing this project
README
![next your home banner](/public/banner.png)
1. [์ด๊ฑด ๋ฌด์์ธ๊ฐ์?](#์ด๊ฑด-๋ฌด์์ธ๊ฐ์)
- [๐ ๋ธ๋ก๊ทธ](#-๋ธ๋ก๊ทธ)
- [๐ ๋ฌด์์ผ๋ก ๋ง๋ค์ด์ก๋์?](#-๋ฌด์์ผ๋ก-๋ง๋ค์ด์ก๋์)
2. [์ ์ด๊ฑธ ์ฌ์ฉํด์ผํ๋์?](#์-์ด๊ฑธ-์ฌ์ฉํด์ผํ์ฃ )- [๐ ์์ฌ์ด ์์](#-์์ฌ์ด-์์)
- [๐ฅ ์ฑ๋ฅ](#-์ฑ๋ฅ)
- [๐ฒ ์ง๊ด์ ์ธ ๊ธ ์กฐ์ง](#-์ง๊ด์ ์ธ-๊ธ-์กฐ์ง)
- [๐ ์ฌ์ฉ์ ์ค์ฌ์ ์ฝ๊ธฐ ๊ฒฝํ ์ ๊ณต](#-์ฌ์ฉ์-์ค์ฌ์-์ฝ๊ธฐ-๊ฒฝํ-์ ๊ณต)
- [๐จ ์๊ณผ ํจ๊ป ๋๋ง์ ๊ฐ์ฑ ๋ฝ๋ด๊ธฐ](#-์๊ณผ-ํจ๊ป-๋๋ง์-๊ฐ์ฑ-๋ฝ๋ด๊ธฐ)
- [๐ป ํ๋ถํ ๊ธฐ๋ฅ](#-ํ๋ถํ-๊ธฐ๋ฅ)3. [์ด๋ป๊ฒ ์์ํ๋์?](#์ด๋ป๊ฒ-์์ํ๋์)
4. [์ปค์คํฐ๋ง์ด์ฆ ํ๊ณ ์ถ์ด์!](#์ปค์คํฐ๋ง์ด์ฆ-ํ๊ณ -์ถ์ด์)
5. [์ง๊ธ์ฏค ๋ ์ค๋ฅผ ์ง๋ฌธ](#์ง๊ธ์ฏค-๋ ์ค๋ฅผ-์ง๋ฌธ)
6. [์ ์๊ถ](#์ ์๊ถ)
# ์ด๊ฑด ๋ฌด์์ธ๊ฐ์?
## ๐ ๋ธ๋ก๊ทธ
1. **์ฝํ ์ธ ์**
2. **UI/UX์**
3. **์ฑ๋ฅ์**
4. **์ง๊ด์ ์ธ ๋ ์ด์์์**
5. **์ ์ง๋ณด์์ฑ์**
6. **์ปค์คํ ์****์ง์คํ `๋ธ๋ก๊ทธ ํ ํ๋ฆฟ` ์ ๋๋ค**
> ์ ํ ํ๋ฆฟ์ผ๋ก ์ ์๋ [Next Your Home Guide](https://next-your-home-guide.vercel.app)์ ๋ฐฉ๋ฌธํด๋ณด์ธ์
## ๐ ๋ฌด์์ผ๋ก ๋ง๋ค์ด์ก๋์?
1. **์ธ์ด** ๐
- `typescript`
2. **ํ๋ ์์ํฌ** โ๏ธ
- `NextJs`
3. **์คํ์ผ** ๐
- `styled-components`
4. **๋งํฌ์ ** ๐
- `mdx`
- ๐ `markdown` ์ด์์ ํ๋ถํ ๊ธฐ๋ฅ ์ ๊ณตํฉ๋๋ค
- ๐ `JSX`์ `javascript expressions`์ ์ฌ์ฉํด๋ณด์ธ์
- ๐ [๊ณต์ MDX ์ฌ์ดํธ](https://mdxjs.com/table-of-components/)์์ ๋ ๋ง์ ๊ธฐ๋ฅ์ ๋ณผ ์ ์์ต๋๋ค
- `mdx-bundler`
- ๐ฆ ์์ `react component`๋ฅผ `.mdx` ํฌ์คํ ํ์ผ์์ ๋ถ๋ฌ์ฌ ์ ์์ต๋๋ค
- ๐ ์ค์ ์ต์ ์ [mdx-bundler](https://github.com/kentcdodds/mdx-bundler)์์ ์์๋ณด์ธ์
# ์ ์ด๊ฑธ ์ฌ์ฉํด์ผํ๋์?
## ๐ ์์ฌ์ด ์์
- ๐ `React`์ ๋๋ค
- ๐ ํ๊ฒฝ ์ค์ , ํ์ ์์ต๋๋ค
- ๐ `vercel`๊ณผ ํจ๊ป๋ผ๋ฉด ๋ฐฐํฌ๋ ์ผ๋ ์๋์ฃ [(vercel + NextJs์ ๊ฐ๋ ฅํจ ์์๋ณด๊ธฐ ๐)](https://vercel.com/solutions/nextjs)
- ๐ฆ [CLI ํฌ์คํธ ์์ฑ๊ธฐ](https://github.com/danpa725/blog-post-generator)๋ก ํฐ๋ฏธ๋์์ ์ฝ๊ฒ ๊ธ์ ๋ง๋ค์ ์์ต๋๋ค## ๐ฅ ์ฑ๋ฅ
- ๐ Light house, `100`์
- ๐ `next-seo`์ ํจ๊ป SEO๋ ์๋ฒฝํฉ๋๋ค [(next-seo ์์๋ณด๊ธฐ ๐)](https://github.com/garmeeh/next-seo)
- ๐ `bundle size`, ๋์ฑ ์๊ฒ
- ๋น๋ ์ `Preact`๋ก `React`๋ฅผ ๋์ฒดํฉ๋๋ค (`3kb`) [(Preact๊ฐ ๋ฌด์์ธ๊ฐ์? ๐)](https://preactjs.com)
- ๋ฑ๋ฑ...## ๐ฒ ์ง๊ด์ ์ธ ๊ธ ์กฐ์ง
- ๐ ์นดํ ๊ณ ๋ฆฌ๋ก ๊ธ์ ํฐ ๋ฟ๋ฆฌ๋ฅผ ๋๋๋๋ค
- ๋๋ถ์ด ๊ฐ ์นดํ ๊ณ ๋ฆฌ์ ๋ํ ์ค๋ช ์ ์ ์ ์ ์์ต๋๋ค
- ๐ ์นดํ ๊ณ ๋ฆฌ ํ์ด์ง๋ pagination ๋ฉ๋๋ค
- ํ๊ทธ๋ก ํ์ด์ง์ ์๋ ๊ธ์ ๋น ๋ฅด๊ฒ ํ์ํ ์ ์์ต๋๋ค
- ๋ํ `blog.config.ts`๋ก ๋ณด์ฌ์ง ๊ธ์ ๊ฐฏ์๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค
- ๐ ๊ณตํต๋ ํ๋ฆ์ ๊ฐ์ง ๊ธ์ ์๋ฆฌ์ฆ๋ก ๋ฌถ์ ์ ์์ต๋๋ค## ๐ ์ฌ์ฉ์ ์ค์ฌ์ ์ฝ๊ธฐ ๊ฒฝํ ์ ๊ณต
- ๐ UI๋ ์ฝ๊ธฐ์ ์ง๊ด์ ์ด์ฃ
- ๐ `post controller`๋ก ์ฝ๊ฒ ๊ธ์ ํ์ํ ์ ์์ต๋๋ค
- ๐ ๋์ฑ ์ ์ ์์ง ์คํฌ๋กค๋ก ๊ธ์ ์ฐพ๋ ์๊ณ ๋ฅผ ๋ ์ ์์ต๋๋ค
- ๐ ์ฐฝ ํฌ๊ธฐ์๋ฐ๋ผ ์๋์ผ๋ก ๋ง์ค์ํ๊ฐ ์ ์ฉ๋๋ ๋งค์ง## ๐จ ์๊ณผ ํจ๊ป ๋๋ง์ ๊ฐ์ฑ ๋ฝ๋ด๊ธฐ
- ๐ ๊ฐ ์นดํ ๊ณ ๋ฆฌ์ ๊ธ์ ์์ ์ ํ ์ ์์ต๋๋ค
- ๐ `personal color`๋ก ๋ธ๋ก๊ทธ๋ฅผ ๋ฉ์ง๊ฒ ๊พธ๋ฉฐ๋ด ์๋ค
- ๐ ํ์ด์ง๋ง๋ค ์๋ค๋ฅด์ง๋ง, ์ผ๊ด๋ `UI`๋ฅผ ์ ์ฌํฉ๋๋ค## ๐ป ํ๋ถํ ๊ธฐ๋ฅ
- ๐ `Light`/`Dark`๋ชจ๋, ์ด์ ๋ ํ์์ฃ
- ๐ `mdx`์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ๋ค์ ๋๋ค
- ๐ ๊ธ์ ๋ชฉ์ฐจ๋ `desktop`/`mobile` ๋ ์์๊ฒ ํฐ ๋์์ด ๋ฉ๋๋ค! (`mobile` ์ ํ)
- ๐ `next/image`์ ํจ๊ป ์ด๋ฏธ์ง๋ ์๋์ผ๋ก ์ต์ ํ ๋ฉ๋๋ค[(next/image ํฑ์๋ณด๊ธฐ ๐)](https://nextjs.org/docs/api-reference/next/image)
- ๐ ๋ํ `static`/`external` ์ด๋ฏธ์ง๋ ๋ณ ์ค์ ์์ด ์ฌ์ด์ฆ๊ฐ ์กฐ์ ๋ฉ๋๋ค
- ๐ pagination, ๊ธฐ๋ณธ์ด์ฃ
- ๐ ์ด์ ๊ธ๋ก ๋๋์๊ฐ๋ฉด ์คํฌ๋กค ์์น๋ ๊ทธ๋๋ก!
- ๐ `google analytics`๋ก ๋ฐฉ๋ฌธ์ ๊ธฐ๋ก์ ์ดํด๋ด ์๋ค! `partytown๐` ์ค๋ ๋์์ ์คํํ๋ฉด์ ์ฑ๋ฅ๋ ์ก์์ฃ [(partytown ์์๋ณด๊ธฐ ๐)](https://partytown.builder.io)
- ๐ `sitemap`๊ณผ `rss`๋ ๋น๋์ ์์ฑ๋ฉ๋๋ค
- ๐ `katex`์ ํจ๊ป ํ๋ํ ์์๋ ๋ณด์ฌ์ค์๋ค (์ ํ)
- ๐ `dev` ๋ชจ๋์์ ๊ธ์ ์์ ํ๋ฉด ์๋์ผ๋ก ์๋ก๊ณ ์นจํฉ๋๋ค
- ๐ `error`๋ ์ต๋ํ ์์ธํ๊ฒ! ๋ฌด์์ด ์๋ชป๋์๋์ง ์ฝ๊ฒ ์ ์ ์์ต๋๋ค
- ๐ ์ฝ๋ ๋ณต์ฌ๊ธฐ๋ฅ์ ๊ณ๋ค์ธ ์์ `code` ๋ธ๋ญ์ ๊ฐ๋ฐ์์ ๋ญ๋ง์๋์๋์
- ๋ฑ๋ฑ...
# ์ด๋ป๊ฒ ์์ํ๋์?
1. `Use this template` ๋ฒํผ์ **ํด๋ฆญ**ํ์ฌ **`1commit`** ์ผ๋ก ์์ ๋ง์ ๋ธ๋ก๊ทธ `repo`๋ฅผ ๋ง๋ญ๋๋ค
- ๋ธ๋ก๊ทธ `repo` ๋ฅผ ๋์ ์ปดํจํฐ๋ก ๊ฐ์ ธ์ต์๋ค
2. **ํจํค์ง ์ค์น**```bash
pnpm i
```- ์ด ๋ธ๋ก๊ทธ๋ `pnpm`์ ํจํค์ง ๋งค๋์ ๋ก ์ฌ์ฉํฉ๋๋ค
- ๋ง์ฝ `pnpm`์ด ์ค์น๋์ง ์์๋ค๋ฉด, [pnpm ์ค์น ๊ฐ์ด๋](https://pnpm.io/installation)๋ฅผ ๋ณด์ธ์```bash
npm install -g pnpm
```3. **๐ `blog.config.ts`, ๐ `public/robots.txt`** ๋ฅผ ์ ๋ฐ์ดํธ ํด๋ด ์๋ค
1. `blog.config.ts`:
- `authorInfo`
- name
- currentState
- currentGoal
- contacts
- `blogInfo`
- url: deploy url
- siteName
- subtitle
- language
2. `public/robots.txt`:
- `Sitemap`์ ๋ฐฐํฌ url๋ก ๋ฐ๊ฟ์ฃผ์ธ์4. **๊ฐ๋ฐ ํ ์คํธ**
```bash
pnpm dev
```
ํฌํธ `3000`์ด ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค
5. **์ฒซ ๊ธ ์์ฑํด๋ณด๊ธฐ!**
```bash
pnpm post
```
6. **๋น๋ ํ ์คํธ**
```bash
pnpm build
```
๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ `.next`์ ์ ์ฅ๋ฉ๋๋ค
7. **`vercel`** ๊ณผ ํจ๊ป ์ธ์์ผ๋ก **๋ฐฐํฌ**1. [๊ณ์ ๋ง๋ค๊ธฐ](https://vercel.com/login)
2. ๋ธ๋ก๊ทธ `repo`๋ฅผ ์ ํํฉ๋๋ค
3. `vercel`๋ฐฐํฌ ๊ณผ์ ์ ๋ฐ๋ผ๊ฐ๊ฑฐ๋, `deploy` ๋ฒํผ์ ํตํด ์ฝ๊ฒ ์์ํ ์ ์์ต๋๋ค[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/git/external?repository-url=https://github.com/danpa725/next-your-home)
# ์ปค์คํฐ๋ง์ด์ฆ ํ๊ณ ์ถ์ด์!
- `blog.config.ts`์ ์๋ ๋ค์ํ ์ค์ ์ ํ์ธํด๋ณด์ธ์!
- ์ปค์คํฐ๋ง์ด์ฆ๋ ์ฝ์ต๋๋ค
1. ๐ `react`, ์๊ณ ์์ฃ ?
2. ๐ `styled-components`, ์๊ณ ์์ฃ ?
3. ๐ ๋์ฑ ๋ฉ์ง ๋์์ธ์ผ๋ก ์์ ํ ์ ์์ต๋๋ค
- ํ๋ก์ ํธ ํด๋๋ **๊ตฌ์กฐ ์ค๋ช **์ ๊ดํ `README.md`๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค. ๋ง์๊ป ๋ฐ๊ฟ๋ด ์๋ค!
# ์ง๊ธ์ฏค ๋ ์ค๋ฅผ ์ง๋ฌธ
๐ค ์gatsby
๋ฅผ ์ฌ์ฉํ์ง ์์ฃ ?
1.
NextJs
๋ณด๋ค ์ ํ์ ์ ๋๋ค
2. ๊ธ์ ๋ถ๋ฌ์ค๋๋ฐgraphql
์ ์ฌ์ฉํด์ผํฉ๋๋ค-
typescript
๋ง ์ฌ์ฉํฉ์๋ค
-graphql
๋ชฐ๋ผ๋ ์ฝ๊ฒ! (_~~์ ๊ฐ ๋ชจ๋ฅด๋๊ฑด ๋น๐คซ~~_)3. ๋ช๋ช ๊ธฐ๋ฅ์ ๋์ ํ๊ธฐ ์ํด
gatsby
์ปค๋ฎค๋ํฐ์ ์์กดํด์ผ ํ๊ธฐ๋ ํฉ๋๋ค
๐ค ์ผ๋ง๋ ๋น ๋ฅด๋ค๋ ๊ฑฐ์ฃ ?
1. [pagespeed test](https://pagespeed.web.dev)
- `desktop` result: `100` / `100` / `100` / `100`
- `mobile` result: `100` / `97` / `100` / `100`2. [Webpage Test](https://www.pngagetest.org/): **์ข์ ํ๊ฐ๋ฅผ ๋ฐ์์ด์**
3. ๋น๋ `bundle size`๋ฅผ ํ์ธ ํด๋ด ์๋ค
```bash
Page Size First Load JS
โ โ / 1.46 kB 91 kB
โ /_app 0 B 70.7 kB
โ โ /[category] 748 B 90.3 kB
โ โ /[category]/[pageNumber] 832 B 90.4 kB
โ โ /[category]/[pageNumber]/[postTitle] 1.64 kB 96.5 kB
โ โ /404 269 B 71 kB
โ โ /500 269 B 71 kB
โ โ /category 3.23 kB 78.4 kB
โ โ /profile 2.69 kB 89 kB
+ First Load JS shared by all 70.7 kB
โ chunks/main-be00b42900d433cc.js 37.1 kB
โ chunks/pages/_app-764e610a6d9ea0f7.js 32.8 kB
โ chunks/webpack-3373b0f21806983f.js 827 B
โ css/a36597fbcc4c45ff.css 801 B
```
# ์ ์๊ถ
```ts
const LICENSE = "MIT ๐"
const KOR = "๊ฐ์ฌํฉ๋๋ค ๐"
const ENG = "Thanks ๐"
```[MIT](https://github.com/danpa725/next-your-home/blob/main/LICENSE)