Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kesuskim/Front-End-Checklist

๐Ÿ—‚ ์ตœ์‹  ์›น์‚ฌ์ดํŠธ์™€ ๊ผผ๊ผผํ•œ ๊ฐœ๋ฐœ์ž๋“ค์„ ์œ„ํ•œ ์™„๋ฒฝ ํ”„๋ก ํŠธ์—”๋“œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ
https://github.com/kesuskim/Front-End-Checklist

Last synced: about 2 months ago
JSON representation

๐Ÿ—‚ ์ตœ์‹  ์›น์‚ฌ์ดํŠธ์™€ ๊ผผ๊ผผํ•œ ๊ฐœ๋ฐœ์ž๋“ค์„ ์œ„ํ•œ ์™„๋ฒฝ ํ”„๋ก ํŠธ์—”๋“œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

Awesome Lists containing this project

README

        




Front-End Checklist




ย  Front-End Checklist
ย 


ํ”„๋ก ํŠธ์—”๋“œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋Š” ๋‹น์‹ ์˜ HTML ์‚ฌ์ดํŠธ ๋˜๋Š” ํŽ˜์ด์ง€๋ฅผ ํ”„๋กœ๋•์…˜์œผ๋กœ ๋Ÿฐ์นญํ•˜๊ธฐ ์ด์ „์— ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ• , ๋˜ํ•œ ํ…Œ์ŠคํŠธ ๋˜์–ด์•ผ ํ•  ์ „๋ฐ˜์ ์ธ ์š”์†Œ๋“ค์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.




PRs Welcome


Contributors


Frontโ€‘End_Checklist followed


CC0


How To Use โ€ข Contributing โ€ข Website โ€ข Product Hunt



Other Checklists:


๐ŸŽฎ Front-End Performance Checklist โ€ข ๐Ÿ’Ž Front-End Design Checklist

์ด ๋ฆฌ์ŠคํŠธ๋Š” ๋‹ค๋…„๊ฐ„์˜ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋“ค์˜ ๊ฒฝํ—˜์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ๋ช‡๋ช‡ ํ•ญ๋ชฉ๋“ค์€ ํƒ€ ์˜คํ”ˆ์†Œ์Šค ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋“ค์˜ ์ฐธ๊ณ ๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

## ๋ชฉ์ฐจ

1. **[Head](#head)**
2. **[HTML](#html)**
3. **[์›นํฐํŠธ](#์›นํฐํŠธ)**
4. **[CSS](#css)**
5. **[์ด๋ฏธ์ง€](#์ด๋ฏธ์ง€)**
6. **[์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ](#์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ)**
7. **[๋ณด์•ˆ](#๋ณด์•ˆ)**
8. **[์„ฑ๋Šฅ](#์„ฑ๋Šฅ-1)**
9. **[์ ‘๊ทผ์„ฑ](#์ ‘๊ทผ์„ฑ)**
10. **[SEO](#seo)**

## ์ด ๋ฆฌ์ŠคํŠธ๋Š” ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋‚˜์š”?

**ํ”„๋ก ํŠธ์—”๋“œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ**์— ์†ํ•ด์žˆ๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ๋“ค์€ ๋Œ€๋‹ค์ˆ˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ์‚ฌํ•ญ๋“ค์ด์ง€๋งŒ, ๋ช‡๋ช‡ ์š”์†Œ๋“ค์€ ์ƒ๋žต๋˜๊ฑฐ๋‚˜ ํ•„์ˆ˜์ ์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ๋ฅผ ๋“ค๋ฉด ๊ด€๋ฆฌํ˜• ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ RSS ํ”ผ๋“œ๋Š” ํ•„์š” ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค). ์šฐ๋ฆฌ๋Š” ๋”ฐ๋ผ์„œ ๊ฐ๊ฐ์˜ ํ•ญ๋ชฉ๋“ค์„ 3๊ฐ€์ง€์˜ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์˜€์Šต๋‹ˆ๋‹ค:

* ![Low][low_img] ์˜ ๊ฒฝ์šฐ ํ•ด๋‹น ํ•ญ๋ชฉ์ด **๊ถŒ์œ ** ๋˜์ง€๋งŒ, ๋ช‡๋ช‡ ํŠน์ •ํ•œ ์ƒํ™ฉ์—์„œ๋Š” ์ƒ๋žต๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
* ![Medium][medium_img] ์˜ ๊ฒฝ์šฐ ํ•ด๋‹น ํ•ญ๋ชฉ์ด **๊ถŒ๊ณ ** ๋˜์ง€๋งŒ, ๊ต‰์žฅํžˆ ํŠน์ •ํ•œ ์ƒํ™ฉ์—์„œ๋Š” ๊ฒฐ๊ตญ ์ƒ๋žต์ด ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡๋ช‡ ์š”์†Œ์˜ ๊ฒฝ์šฐ, ์ƒ๋žต ์‹œ ์„ฑ๋Šฅ์ด๋‚˜ SEO ์ธก๋ฉด์—์„œ ์•ˆ ์ข‹์€ ์˜ํ–ฅ์„ ๋ผ์น  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
* ![High][high_img] ์˜ ๊ฒฝ์šฐ ํ•ด๋‹น ํ•ญ๋ชฉ์€ ์–ด๋– ํ•œ ์ƒํ™ฉ์—์„œ๋ผ๋„ **์ƒ๋žต๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค**. ์ด๋ฅผ ์ƒ๋žตํ•˜๊ฒŒ ๋˜๋ฉด ๋‹น์‹ ์˜ ํŽ˜์ด์ง€๋Š” ์˜ค๋™์ž‘ํ•˜๊ฑฐ๋‚˜ ์ ‘๊ทผ, ๋˜๋Š” SEO์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์š”์†Œ๋“ค์— ๋Œ€ํ•ด์„œ ์šฐ์„ ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ช‡๋ช‡ ์ถ”๊ฐ€ ๋‚ด์šฉ๋“ค์€ ๊ทธ๊ฒƒ๋“ค์ด ์–ด๋– ํ•œ ์ข…๋ฅ˜์˜ ๋‚ด์šฉ์ธ์ง€ ์ดํ•ดํ•˜๋Š”๋ฐ์— ๋„์›€์„ ์ฃผ๊ธฐ ์œ„ํ•˜์—ฌ ์ด๋ชจํ‹ฐ์ฝ˜์„ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ฒดํฌ๋ฆฌ์ŠคํŠธ์—์„œ ํ•ด๋‹น ํ•ญ๋ชฉ๋“ค์„ ์ดํ•ดํ•˜๋Š” ๋ฐ์— ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค:

* ๐Ÿ“–: ๋ฌธ์„œ ๋˜๋Š” ๊ธฐ์‚ฌ
* ๐Ÿ› : ์˜จ๋ผ์ธ ๋„๊ตฌ / ํ…Œ์ŠคํŠธ ๋„๊ตฌ
* ๐Ÿ“น: ๋ฏธ๋””์–ด ๋˜๋Š” ๋น„๋””์˜ค ์ปจํ…์ธ 

---

## Head

> **๋…ธํŠธ:** [a list of everything](https://github.com/joshbuchea/HEAD) ์—์„œ HTML ๋ฌธ์„œ ๋‚ด์˜ `` ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ฐพ์•„๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

### ๋ฉ”ํƒ€ ํƒœ๊ทธ

* [ ] **Doctype:** ![High][high_img] HTML5 ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, Doctype์ด ๋ชจ๋“  HTML ํŽ˜์ด์ง€์˜ ์ตœ์ƒ๋‹จ์— ์œ„์น˜ํ•จ

```html

```

> ๐Ÿ“– [๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๊ฒฐ์ •ํ•˜๊ธฐ - HTML5 W3C](https://www.w3.org/TR/html5/syntax.html#determining-the-character-encoding)

*๋‹ค์Œ 2๊ฐœ์˜ ๋ฉ”ํƒ€ ํƒœ๊ทธ(Charset and Viewport)๋“ค์€ ๋‹ค๋ฅธ ์š”์†Œ๋“ค์— ๋น„ํ•ด head ์•ˆ์—์„œ๋„ ์ƒ๋‹จ์— ์œ„์น˜ํ•ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.*

* [ ] **Charset:** ![High][high_img] ๋ฌธ์ž์ง‘ํ•ฉ(UTF-8)์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ ์–ธ๋จ

```html

```

* [ ] **Viewport:** ![High][high_img] Viewport๊ฐ€ ์ œ๋Œ€๋กœ ์„ ์–ธ๋จ

```html

```

* [ ] **Title:** ![High][high_img] ๋ชจ๋“  ํŽ˜์ด์ง€์— title์ด ์‚ฌ์šฉ๋จ (SEO ๊ฐ€์ด๋“œ: Google์€ ์ œ๋ชฉ์— ์‚ฌ์šฉ๋œ ๊ธ€์ž๋“ค์˜ ๋„ˆ๋น„์˜ ํ”ฝ์…€ ๊ฐ’์„ ๊ณ„์‚ฐํ•œ ๋’ค, 472~482px ์‚ฌ์ด์˜ ๊ฐ’์œผ๋กœ ์ž˜๋ผ๋ƒ…๋‹ˆ๋‹ค. ํ‰๊ท ์ ์ธ ๊ธ€์ž ๊ธธ์ด์˜ ์ œํ•œ์€ ์•ฝ 55๊ฐœ์˜ ๊ธ€์ž์ž…๋‹ˆ๋‹ค.)

```html

55๊ฐœ ์ดํ•˜์˜ ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋œ ํŽ˜์ด์ง€ ์ œ๋ชฉ
```

> * ๐Ÿ“– [Title - HTML - MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title)
> * ๐Ÿ›  [SERP Snippet Generator](https://www.sistrix.com/serp-snippet-generator/)

* [ ] **Description:** ![High][high_img] description์ด ์ œ๋Œ€๋กœ ๊ธฐ์žฌ๋จ (์„ค๋ช…๊ฐ’์€ ๊ณ ์œ ํ•ด์•ผ ํ•˜๋ฉฐ, 150๊ฐœ ์ดํ•˜์˜ ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•จ)

```html

```

> * ๐Ÿ“– [Meta Description - HTML - MDN](https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML#Adding_an_author_and_description)

* [ ] **ํŒŒ๋น„์ฝ˜:** ![Medium][medium_img] ๊ฐ๊ฐ์˜ ํŒŒ๋น„์ฝ˜์ด ์ œ๋Œ€๋กœ ์ƒ์„ฑ๋˜์—ˆ๊ณ  ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ณด์—ฌ์ง€๋Š”๊ฐ€? ๋งŒ์•ฝ `favicon.ico` ํŒŒ์ผ๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด, ํ•ด๋‹น ๋‚ด์šฉ์„ ํŽ˜์ด์ง€์˜ ์ƒ๋‹จ๋ถ€์— ์ถ”๊ฐ€ํ•˜๋ผ. ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ํ•ด๋‹น ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ, ์•„๋ž˜์˜ ์˜ˆ์‹œ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์Šต๊ด€์ž„. ์˜ค๋Š˜๋‚ ์—๋Š” `.ico` ํฌ๋งท๋ณด๋‹ค **PNG ํฌ๋งท์˜ ์•„์ด์ฝ˜ ์‚ฌ์šฉ์„ ์ถ”์ฒœ**ํ•จ(ํฌ๊ธฐ: 32x32px).

```html

```

> * ๐Ÿ›  [ํŒŒ๋น„์ฝ˜ ์ƒ์„ฑ๊ธฐ](https://www.favicon-generator.org/)
> * ๐Ÿ›  [์ง„์งœํŒŒ๋น„์ฝ˜์ƒ์„ฑ๊ธฐ](https://realfavicongenerator.net/)
> * ๐Ÿ“– [ํŒŒ๋น„์ฝ˜ ์•ˆ๋‚ด์„œ](https://github.com/audreyr/favicon-cheat-sheet)
> * ๐Ÿ“– [ํŒŒ๋น„์ฝ˜, ํ„ฐ์น˜ ์•„์ด์ฝ˜, ํƒ€์ผ ์•„์ด์ฝ˜. ๋‚˜ํ•œํ…Œ ํ•„์š”ํ•œ ๊ฒƒ์€? - CSS Tricks](https://css-tricks.com/favicon-quiz/)
> * ๐Ÿ“– [PNG ํŒŒ๋น„์ฝ˜ - caniuse](https://caniuse.com/#feat=link-icon-png)

* [ ] **Apple ์›น ์•ฑ ๋ฉ”ํƒ€ ํƒœ๊ทธ ์„ค์ •:** [![Low](https://github.com/thedaviddias/Front-End-Checklist/raw/master/data/images/priority/low.svg)](https://github.com/thedaviddias/Front-End-Checklist/blob/master/data/images/priority/low.svg) Apple ์˜ ๋ฉ”ํƒ€ ํƒœ๊ทธ๊ฐ€ ์ œ๋Œ€๋กœ ์„ค์ •๋˜์—ˆ์Œ

```html

```

> * ๐Ÿ“– [์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋“œ ์„ค์ •ํ•˜๊ธฐ](https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html)
> * ๐Ÿ“– [์ง€์›ํ•˜๋Š” ๋ฉ”ํƒ€ ํƒœ๊ทธ ๋ชฉ๋ก](https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html)

- [ ] **์œˆ๋„์šฐ ํƒ€์ผ:** ![Low][low_img] ์œˆ๋„์šฐ์˜ ํƒ€์ผ ๊ด€๋ จ ์ •๋ณด๋ฅผ ์„ค์ •ํ•˜์˜€๊ณ  ์ œ๋Œ€๋กœ ์—ฐ๊ฒฐํ•˜์˜€์Œ

```html

```

browserconfig.xml ํŒŒ์ผ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ตœ์†Œํ•œ์˜ XML ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

```xml








```

> * ๐Ÿ“– [๋ธŒ๋ผ์šฐ์ € ์„ค์ • ์Šคํ‚ค๋งˆ ๋ ˆํผ๋Ÿฐ์Šค](https://msdn.microsoft.com/en-us/library/dn320426(v=vs.85).aspx)

* [ ] **Canonical:** ![Medium][medium_img] ์ปจํ…์ธ ์˜ ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•˜์—ฌ `rel="canonical"` ์„ ์‚ฌ์šฉํ•จ

```html

```

> * ๐Ÿ“– [ํ‘œ์ค€ URL์„ ์‚ฌ์šฉํ•˜๊ธฐ - Search Console Help - Google Support](https://support.google.com/webmasters/answer/139066?hl=en)
> * ๐Ÿ“– [rel=canonical์„ ์‚ฌ์šฉํ•  ๋•Œ ํ”ํžˆ ๊ฒช๋Š” 5๊ฐ€์ง€ ์‹ค์ˆ˜ - Google Webmaster Blog](https://webmasters.googleblog.com/2013/04/5-common-mistakes-with-relcanonical.html)

### HTML ํƒœ๊ทธ
* [ ] **์–ธ์–ด ์†์„ฑ:** ![High][high_img] ํ˜„์žฌ ํŽ˜์ด์ง€ ๋‚ด์˜ ์–ธ์–ด์— ์•Œ๋งž๊ฒŒ ์†์„ฑ ๊ฐ’์ด ๋ถ€์—ฌ๋จ
```html

```

* [ ] **๊ธ€์ž ๋ฐฉํ–ฅ ์†์„ฑ:** ![Medium][medium_img] ๊ธ€์ž๋“ค์˜ ๋ฐฉํ–ฅ์ด ์ œ๋Œ€๋กœ ์„ค์ •๋จ (์šฐ๋ฆฌ๋‚˜๋ผ์—์„œ๋Š” ์ขŒ์—์„œ ์šฐ๋กœ ๊ธ€์”จ๋ฅผ ์ฝ๊ณ  ์“ฐ์ง€๋งŒ ๋ช‡๋ช‡ ๋‚˜๋ผ์—์„œ๋Š” ์šฐ์—์„œ ์ขŒ๋กœ ์ฝ๊ณ  ์“ฐ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ)

```html

```

> * ๐Ÿ“– [dir - HTML - MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir)

* [ ] **๋Œ€์ฒด ์–ธ์–ด:** ![Low][low_img] ํ˜„์žฌ ํŽ˜์ด์ง€๋ฅผ ์–ธ์–ด์— ๋งž๊ฒŒ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ํƒœ๊ทธ ์†์„ฑ ๊ฐ’์„ ์‚ฌ์šฉํ•จ

```html

```

* [ ] **x-default:** ![Low][low_img] ์šด์˜ํ•˜์ง€ ์•Š๋Š” ์–ธ์–ด์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•ด ๋””ํดํŠธ ํŽ˜์ด์ง€๋ฅผ ์ •ํ•ด์ฃผ๋Š” ์†์„ฑ

```html

```

> - ๐Ÿ“– [x-default - Google](https://webmasters.googleblog.com/2013/04/x-default-hreflang-for-international-pages.html)

* [ ] **์กฐ๊ฑด๋ถ€ ์ฃผ์„:** ![Low][low_img] Internet Explorer ๋ฅผ ์œ„ํ•œ ์กฐ๊ฑด๋ถ€ ์ฃผ์„์„ ์‚ฌ์šฉํ•จ

> * ๐Ÿ“– [์กฐ๊ฑด๋ถ€ ์ฃผ์„์— ๊ด€ํ•˜์—ฌ (Internet Explorer) - MSDN - Microsoft](https://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx)

* [ ] **RSS ํ”ผ๋“œ:** ![Low][low_img] ๋งŒ์ผ ํŽ˜์ด์ง€๊ฐ€ ๋ธ”๋กœ๊ทธ์ด๊ฑฐ๋‚˜ ๊ธฐ์‚ฌ๊ฐ€ ์žˆ๋‹ค๋ฉด, RSS ๋งํฌ์— ๋Œ€ํ•ด ํ™•์ธํ•˜์‹œ์˜ค

* [ ] **CSS Critical:** ![Medium][medium_img] ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋”ฉ๋˜๋Š” ์ฆ‰์‹œ(ํŽผ์ณ์ง€๋Š” ๊ทธ ์ˆœ๊ฐ„) ์ปจํ…์ธ ์— ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” CSS๋ฅผ "critical CSS" ๋ผ๊ณ  ํ•จ. ์ด๋Š” ๋‹น์‹ ์˜ ์‹ค์งˆ์ ์ธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ CSS ๊ฐ€ ๋กœ๋”ฉ๋˜๊ธฐ ์ด์ „์— `` ํƒœ๊ทธ ์‚ฌ์ด์— ์ตœ์†Œํ™” ๋œ ์ƒํƒœ๋กœ ํ•œ ์ค„๋กœ ์ถ”๊ฐ€๋˜์–ด ์ž„๋ฒ ๋”ฉ ๋จ

> * ๐Ÿ›  [Critical by Addy Osmani on Github](https://github.com/addyosmani/critical) ์ด ๋ ˆํฌ๋Š” CSS Critical์„ ์ž๋™ํ™” ํ•˜๋Š”๋ฐ์— ๋„์›€์„ ์ค๋‹ˆ๋‹ค.

* [ ] **CSS์˜ ์ˆœ์„œ:** ![High][high_img] ๋ชจ๋“  CSS ํŒŒ์ผ์ด `` ๋‚ด์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋ณด๋‹ค ์ด์ „์— ๋กœ๋”ฉ์ด ์™„๋ฃŒ๋จ (์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋กœ๋”ฉ๋˜๋Š” ํŠน์ •ํ•œ ๊ฒฝ์šฐ๋Š” ์ œ์™ธํ•จ).

### ์†Œ์…œ๋ฏธ๋””์–ด ๊ด€๋ จ ๋ฉ”ํƒ€ ํƒœ๊ทธ

[Meta Tags](https://metatags.io/) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”ํƒ€ ํƒœ๊ทธ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ณ  ์ƒ์„ฑํ•˜์„ธ์š”.

๊ธฐ๋ณธ์ ์œผ๋กœ ***Facebook ์˜ Open Graph*** ์™€ ***Twitter ์˜ Card*** ๋Š” ๋ฐ˜๋“œ์‹œ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์†Œ์…œ๋ฏธ๋””์–ด ํƒœ๊ทธ๋“ค์€ ํŠน์ •ํ•œ ์ƒ๋Œ€๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ๊ฒฝ์šฐ์— ๊ณ ๋ คํ•ด๋ณด์„ธ์š”.

* [ ] **Facebook Open Graph:** ![Low][low_img] ๋ชจ๋“  Facebook์˜ Open Graph (OG) ๊ฐ€ ํ…Œ์ŠคํŠธ ๋˜์—ˆ์œผ๋ฉฐ, ๊ทธ๊ฒƒ๋“ค ์ค‘์— ๋ˆ„๋ฝ๋œ ์ •๋ณด๋‚˜ ์ž˜๋ชป๋œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋Š” ์•Š๋‚˜? (์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ ์ตœ์†Œํ•œ 600 x 315 ํ”ฝ์…€์€ ๋˜์–ด์•ผ ํ•˜๋ฉฐ, 1200 x 630 ํ”ฝ์…€ ํฌ๊ธฐ๋ฅผ ๊ถŒ์žฅํ•จ)

> **๋…ธํŠธ:** `og:image:width`์™€ `og:image:height` ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ์›น ํฌ๋กค๋Ÿฌ์—๊ฒŒ ์•Œ๋ ค์ฃผ์–ด์„œ, ์ด๋ฏธ์ง€๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ํ•„์š” ์—†์ด ์ฆ‰์‹œ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

```html

```

> * ๐Ÿ“– [์›น๋งˆ์Šคํ„ฐ๋ฅผ ์œ„ํ•œ ์‰์–ด๋ง ๊ฐ€์ด๋“œ](https://developers.facebook.com/docs/sharing/webmasters/)
> * ๐Ÿ“– [์‰์–ด๋ง - ๋ชจ๋ฒ” ์‚ฌ๋ก€](https://developers.facebook.com/docs/sharing/best-practices/)
> * ๐Ÿ›  [Facebook OG testing](https://developers.facebook.com/tools/debug/) ๋„๊ตฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹น์‹ ์˜ ํŽ˜์ด์ง€ ํ…Œ์ŠคํŠธํ•˜๊ธฐ

* [ ] **Twitter Card:** ![Low][low_img]

```html

```

> * ๐Ÿ“– [Twitter cards ์‹œ์ž‘ํ•˜๊ธฐ โ€” Twitter Developers](https://developer.twitter.com/en/docs/tweets/optimize-with-cards/guides/getting-started)
> * ๐Ÿ›  [Twitter card ๊ฒ€์‚ฌ๊ธฐ](https://cards-dev.twitter.com/validator) ๋„๊ตฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹น์‹ ์˜ ํŽ˜์ด์ง€ ํ…Œ์ŠคํŠธํ•˜๊ธฐ

**[โฌ† ๋ชฉ์ฐจ๋กœ](#๋ชฉ์ฐจ)**

---

## HTML

### ๋ชจ๋ฒ” ์‚ฌ๋ก€

* [ ] **HTML5 ์‹œ๋งจํ‹ฑ ์—˜๋ฆฌ๋จผํŠธ:** ![High][high_img] HTML5์˜ ์‹œ๋งจํ‹ฑ ์—˜๋ฆฌ๋จผํŠธ๋“ค์ด ์ ์ ˆํžˆ ์‚ฌ์šฉ๋จ (header, section, footer, main... ๋“ฑ).

> * ๐Ÿ“– [HTML ๋ ˆํผ๋Ÿฐ์Šค](http://htmlreference.io/)

* [ ] **์—๋Ÿฌ ํŽ˜์ด์ง€:** ![High][high_img] ์—๋Ÿฌ๋ฅผ ์œ„ํ•œ 404 ํŽ˜์ด์ง€์™€ 5xx ํŽ˜์ด์ง€๊ฐ€ ์กด์žฌํ•˜๋Š”๊ฐ€? 5xx ํŽ˜์ด์ง€๋Š” ์„œ๋ฒ„ ์—๋Ÿฌ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ์˜ ๋ณ„๋„์˜ ์ถ”๊ฐ€์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก๋ฐ›์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์ธ ์ž์ฒด CSS๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•จ์„ ๊ธฐ์–ตํ•จ

* [ ] **Noopener:** ![Medium][medium_img] ์™ธ๋ถ€ ๋งํฌ๋ฅผ `target="_blank"`๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฐ ๊ฒฝ์šฐ, [tab nabbing ํ”ผ์‹ฑ ๊ณต๊ฒฉ](https://blog.coderifleman.com/2017/05/30/tabnabbing_attack_and_noopener/)์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ `rel="noopener"` ์†์„ฑ์„ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ•จ. ๋งŒ์•ฝ Firefox ์˜› ๋ฒ„์ „์„ ์ง€์›ํ•ด์•ผ๋งŒ ํ•œ๋‹ค๋ฉด, `rel="noopener noreferrer"` ์„ ์‚ฌ์šฉํ•จ

> * ๐Ÿ“– [rel=noopener์— ๋Œ€ํ•˜์—ฌ](https://mathiasbynens.github.io/rel-noopener/)

* [ ] **์ฃผ์„ ์ง€์šฐ๊ธฐ:** ![Low][low_img] ์›น์‚ฌ์ดํŠธ๋ฅผ ํ”„๋กœ๋•์…˜ ํ•˜๊ธฐ ์ด์ „์— ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋Š” ์ œ๊ฑฐํ•˜์˜€๋Š”์ง€, ์ฃผ์„์€ ์ œ๊ฑฐํ•˜์˜€๋Š”์ง€ ์ ๊ฒ€ํ•จ

### HTML testing

* [ ] **W3C ๊ทœ๊ฒฉ:** ![High][high_img] ํŽ˜์ด์ง€ ๋‚ด์˜ ๋ชจ๋“  HTML ์ด ํ‘œ์ค€์— ๋งž๊ฒŒ ์ •์ƒ์ ์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ๋Š”์ง€ W3C ์˜ validator๋ฅผ ์ด์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ•จ

> * ๐Ÿ›  [W3C ๊ฒ€์‚ฌ๊ธฐ](https://validator.w3.org/)

* [ ] **HTML Lint:** ![High][high_img] Lint ๋„๊ตฌ๋ฅผ ์ด์šฉํ•˜์—ฌ HTML ์ฝ”๋“œ ๋‚ด์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ์ƒ์˜ ๋ฌธ์ œ๋“ค์„ ๋ถ„์„ํ•จ

> * ๐Ÿ›  [Dirty markup](https://dirtymarkup.com/): HTML ์ฝ”๋“œ๋ฅผ ์ •๋ˆํ•ด์ฃผ๋Š” ์˜จ๋ผ์ธ ๋„๊ตฌ

> * ๐Ÿ›  [Sonar a linting tool for the web](https://sonarwhal.com/)
* [ ] **Link checker:** ![High][high_img] ํŽ˜์ด์ง€ ๋‚ด์— ๊นจ์ง„ ๋งํฌ๋Š” ์—†๋Š”์ง€, 404 ์—๋Ÿฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”์ง€ ๋‹ค์‹œ ํ•œ๋ฒˆ ํ™•์ธํ•˜๋„๋ก ํ•จ

> * ๐Ÿ›  [W3C Link Checker](https://validator.w3.org/checklink)

* [ ] **๊ด‘๊ณ ์ฐจ๋‹จ๊ธฐ ํ…Œ์ŠคํŠธ:** ![Medium][medium_img] ๊ด‘๊ณ ์ฐจ๋‹จ๊ธฐ๊ฐ€ ํ™œ์„ฑํ™” ๋œ ์ƒํƒœ์—์„œ๋„ ์ปจํ…์ธ ๊ฐ€ ์ œ๋Œ€๋กœ ๋ณด์—ฌ์ง (์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ด‘๊ณ ์ฐจ๋‹จ๊ธฐ๋ฅผ ๋น„ํ™œ์„ฑํ™” ํ•ด๋‹ฌ๋ผ๊ณ  ๋ฉ”์„ธ์ง€๋ฅผ ์•Œ๋ฆด์ˆ˜๋„ ์žˆ์Œ)

> - ๐Ÿ“– [๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๊ด‘๊ณ ์ฐจ๋‹จ๊ธฐ ์‚ฌ์šฉํ•˜๊ธฐ](https://andreicioara.com/use-adblocking-in-your-dev-environment-48db500d9b86)

**[โฌ† ๋ชฉ์ฐจ๋กœ](#๋ชฉ์ฐจ)**

---

## ์›นํฐํŠธ

> **๋…ธํŠธ:** ์›นํฐํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํƒ€์ผ๋ง ๋˜์ง€ ์•Š์€ ๊ธ€์ž๋‚˜ ๋ณด์ด์ง€ ์•Š๋Š” ๊ธ€์ž๋“ค์ด ๊นœ๋นก์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹คํŒจํ–ˆ์„ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•œ ๋Œ€์ฒด์šฉ ํฐํŠธ๋ฅผ ํฌํ•จํ•˜๊ฑฐ๋‚˜, ์›นํฐํŠธ ๋กœ๋”๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋™์ž‘๋“ค์„ ์ œ์–ดํ•˜์„ธ์š”.
>
> * ๐Ÿ“– [๊ตฌ๊ธ€์˜ ์›นํฐํŠธ์— ๋Œ€ํ•œ ๊ธฐ์ˆ ์  ๊ณ ๋ ค์‚ฌํ•ญ](https://developers.google.com/fonts/docs/technical_considerations)

* [ ] **์›นํฐํŠธ ํฌ๋งท:** ![High][high_img] WOFF, WOFF2 ์™€ TTF๋Š” ๋ชจ๋“  ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›๋จ

> * ๐Ÿ“– [WOFF - ์›น ์˜คํ”ˆ ํฐํŠธ ํฌ๋งท- Caniuse](https://caniuse.com/#feat=woff).
> * ๐Ÿ“– [WOFF 2.0 - ์›น ์˜คํ”ˆ ํฐํŠธ ํฌ๋งท - Caniuse](https://caniuse.com/#feat=woff2).
> * ๐Ÿ“– [TTF/OTF - ํŠธ๋ฃจํƒ€์ž… ํฐํŠธ์™€ ์˜คํ”ˆํƒ€์ž… ํฐํŠธ ์ง€์› ์—ฌ๋ถ€ - Caniuse](https://caniuse.com/#feat=ttf)
> * ๐Ÿ“– [@font-face ์‚ฌ์šฉํ•˜๊ธฐ - CSS-Tricks](https://css-tricks.com/snippets/css/using-font-face/)

* [ ] **์›นํฐํŠธ ํฌ๊ธฐ:** ![High][high_img] ๋ชจ๋“  ์ข…๋ฅ˜(์ดํƒค๋ฆญ, ๋ณผ๋“œ์ฒด ๋“ฑ๋“ฑ์„ ํฌํ•จ)์˜ ์›นํฐํŠธ ํฌ๊ธฐ์˜ ์ด ํ•ฉ๊ณ„๋Š” 2 MB๋ฅผ ๋„˜์ง€ ์•Š๋„๋ก ํ•จ

* [ ] **์›นํฐํŠธ ๋กœ๋”:** ![Low][low_img] ์›นํฐํŠธ ๋กœ๋”๋ฅผ ์ด์šฉํ•˜์—ฌ ํฐํŠธ๊ฐ€ ๋กœ๋”ฉ๋˜๋Š” ๋™์ž‘์„ ์ œ์–ดํ•จ

> * ๐Ÿ›  [Typekit ์›นํฐํŠธ ๋กœ๋”](https://github.com/typekit/webfontloader)

**[โฌ† ๋ชฉ์ฐจ๋กœ](#๋ชฉ์ฐจ)**

## CSS

> **๋…ธํŠธ:** ๋Œ€๋‹ค์ˆ˜์˜ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋”ฐ๋ฅด๋Š” [CSS ๊ฐ€์ด๋“œ๋ผ์ธ](https://cssguidelin.es/)๊ณผ [Sass ๊ฐ€์ด๋“œ๋ผ์ธ](https://sass-guidelin.es/) ์„ ์‚ดํŽด๋ณด์„ธ์š”. ๋งŒ์•ฝ ๋ชจ๋ฅด๋Š” CSS ์†์„ฑ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด, [CSS ๋ ˆํผ๋Ÿฐ์Šค](http://cssreference.io/)๋ฅผ ์ฐธ์กฐํ•˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋˜ํ•œ CSS์˜ ์ผ๊ด€์„ฑ์„ ์œ„ํ•œ [์ฝ”๋“œ ๊ฐ€์ด๋“œ](http://codeguide.co/)๋„ ์ฝ์–ด๋ณด๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

* [ ] **๋ฐ˜์‘ํ˜• ์›น ๋””์ž์ธ:** ![High][high_img] ์›น์‚ฌ์ดํŠธ๊ฐ€ ๋ฐ˜์‘ํ˜•์œผ๋กœ ๋””์ž์ธ ๋จ
* [ ] **CSS Print:** ![Medium][medium_img] ํ”„๋ฆฐํ„ฐ๊ฐ€ ์‚ฌ์šฉํ•  print ์Šคํƒ€์ผ์‹œํŠธ ๊ฐ’์ด ์„ค์ •๋˜์—ˆ๊ณ , ๊ฐ๊ฐ์˜ ํŽ˜์ด์ง€๋งˆ๋‹ค ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋จ
* [ ] **CSS ์ „์ฒ˜๋ฆฌ๊ธฐ:** [![Low](https://github.com/thedaviddias/Front-End-Checklist/raw/master/data/images/priority/low.svg)](https://github.com/thedaviddias/Front-End-Checklist/blob/master/data/images/priority/low.svg) ๋””์ž์ธ์— CSS ์ „์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์ด์šฉํ•จ (์ถ”์ฒœ: [Sass](http://sass-lang.com/), [Less](http://lesscss.org/), [Stylus](http://stylus-lang.com/)).
* [ ] **๊ณ ์œ  ID๊ฐ’:** ![High][high_img] ์—ฌ๋Ÿฌ ๊ฐœ์˜ ID ๊ฐ’์ด ์‚ฌ์šฉ๋œ ๊ฒฝ์šฐ, ๊ฐ๊ฐ์˜ ID ๊ฐ’์€ ํŽ˜์ด์ง€ ๋‚ด์—์„œ ๊ณ ์œ ํ•ด์•ผํ•จ
* [ ] **Reset CSS:** ![High][high_img] ์ตœ์‹ ์˜ Reset CSS (reset, normalize ํ˜น์€ reboot) ์ด ์‚ฌ์šฉ๋จ *(Bootstrap์ด๋‚˜ Foundation ๊ฐ™์€ CSS ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์•„๋งˆ๋„ Normalize๊ฐ€ ์ด๋ฏธ ํฌํ•จ๋˜์–ด ์žˆ์„ ๊ฒƒ์ž„)*

> * ๐Ÿ“– [Reset.css](https://meyerweb.com/eric/tools/css/reset/)
> * ๐Ÿ“– [Normalize.css](https://necolas.github.io/normalize.css/)
> * ๐Ÿ“– [Reboot](https://getbootstrap.com/docs/4.0/content/reboot/)

* [ ] **JS ์ ‘๋‘์‚ฌ:** ![Low][low_img] **js**-๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ๋‚ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ํด๋ž˜์Šค๋‚˜ ID๋Š” CSS ํŒŒ์ผ์—์„œ ์Šคํƒ€์ผ๋ง ๋˜์ง€ ์•Š๋„๋ก ํ•จ

```html


```

* [ ] **CSS ์ž„๋ฒ ๋”ฉ ๋˜๋Š” ์ธ๋ผ์ธ:** ![High][high_img] ์–ด๋– ํ•œ ๊ฒฝ์šฐ์—๋„ CSS๋ฅผ ์ง์ ‘ ์ž„๋ฒ ๋”ฉํ•˜๊ฑฐ๋‚˜ ์ธ๋ผ์ธ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ. ํƒ€๋‹นํ•œ ์ด์œ ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ (์˜ˆ: ์Šฌ๋ผ์ด๋” ๋‚ด์˜ background-image, ํ˜น์€ critical CSS)
* [ ] **๋ฒค๋” ํ”„๋ฆฌํ”ฝ์Šค:** ![High][high_img] CSS ๋ฒค๋” ํ”„๋ฆฌํ”ฝ์Šค๋“ค์ด ์‚ฌ์šฉ๋˜์—ˆ๊ณ  ๋ธŒ๋ผ์šฐ์ € ์ง€์› ํ˜ธํ™˜์„ฑ์— ๋”ฐ๋ผ ์•Œ๋งž๊ฒŒ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ

> * ๐Ÿ›  [Autoprefixer CSS online](https://autoprefixer.github.io/)

### ์„ฑ๋Šฅ

- [ ] **ํŒŒ์ผ ๋‹จ์ผํ™”:** ![High][high_img] CSS ํŒŒ์ผ๋“ค์ด ํ•˜๋‚˜์˜ CSS ํŒŒ์ผ๋กœ ๋‹จ์ผํ™” ๋˜์—ˆ์Œ *(HTTP/2์˜ ๊ฒฝ์šฐ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์„ฑ๋Šฅ์— ์ข‹์Œ)*
- [ ] **์ตœ์†Œํ™”:** ![High][high_img] ๋ชจ๋“  CSS ํŒŒ์ผ๋“ค์ด ์ตœ์†Œํ™” ๋จ
- [ ] **๋…ผ ๋ธ”๋กœํ‚น:** ![Medium][medium_img] CSS ํŒŒ์ผ๋“ค์€ DOM์ด ๋กœ๋”ฉํ•˜๋Š”๋ฐ์— ๋ฐฉํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋„๋ก ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋กœ๋“œ ๋˜์–ด์•ผ ํ•จ

> * ๐Ÿ“– [๋น„๋™๊ธฐ๋กœ ๋กœ๋“œํ•˜๋Š” CSS (loadCSS)](https://github.com/filamentgroup/loadCSS)
> * ๐Ÿ“– [loadCSS ๋ฅผ ์ด์šฉํ•œ CSS preload ์˜ˆ์‹œ](https://gist.github.com/thedaviddias/c24763b82b9991e53928e66a0bafc9bf)

- [ ] **์‚ฌ์šฉํ•˜์ง€ ์•Š์€ CSS:** ![Low][low_img] ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ CSS๋Š” ์ œ๊ฑฐํ•จ

> * ๐Ÿ›  [UnCSS Online](https://uncss-online.com/)
> * ๐Ÿ›  [PurifyCSS](https://github.com/purifycss/purifycss)
> * ๐Ÿ›  [ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์ปค๋ฒ„๋ฆฌ์ง€](https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage)

### CSS ํ…Œ์ŠคํŠธ

* [ ] **Stylelint:** ![High][high_img] ๋ชจ๋“  CSS์™€ SCSS ํŒŒ์ผ๋“ค์— ์•„๋ฌด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธ

> * ๐Ÿ›  [stylelint, a CSS ๋ฆฐํ„ฐ](https://stylelint.io/)
> * ๐Ÿ“– [Sass ๊ฐ€์ด๋“œ๋ผ์ธ](https://sass-guidelin.es/)

* [ ] **๋ฐ˜์‘ํ˜• ์›น ๋””์ž์ธ:** ![High][high_img] ๋ชจ๋“  ํŽ˜์ด์ง€๊ฐ€ ๋‹ค์Œ ์ง€์ ์—์„œ ํ…Œ์ŠคํŠธ ์™„๋ฃŒ๋˜์—ˆ์Œ: 320px, 768px, 1024px (๊ทธ ์™ธ ๋‹น์‹ ์ด ํ•„์š”ํ•œ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ)

**Responsive Checker -**

> - ๐Ÿ›  [Am I Responsive?](http://ami.responsivedesign.is/)
> - ๐Ÿ›  [Mobile Friendly Test](https://search.google.com/test/mobile-friendly)
> - ๐Ÿ›  [Responsive Website Design Tester](https://responsivedesignchecker.com/)
> - ๐Ÿ›  [Responsinator](https://www.responsinator.com/)
> - ๐Ÿ›  [XRespond](https://xrespond.com/)

* [ ] **CSS ๊ฒ€์‚ฌ๊ธฐ:** ![Medium][medium_img] CSS๊ฐ€ ์ œ๋Œ€๋กœ ํ…Œ์ŠคํŠธ ๋˜์—ˆ๊ณ , ์˜ค๋ฅ˜๋“ค์ด ์•Œ๋งž๊ฒŒ ์ˆ˜์ •๋˜์—ˆ์Œ

> * ๐Ÿ›  [CSS ๊ฒ€์‚ฌ๊ธฐ](https://jigsaw.w3.org/css-validator/)

* [ ] **๋ฐ์Šคํฌํƒ‘ ๋ธŒ๋ผ์šฐ์ €:** ![High][high_img] ๋ชจ๋“  ํŽ˜์ด์ง€๊ฐ€ ๋ชจ๋“  ํ˜„์กดํ•˜๋Š” ๋ฐ์Šคํฌํƒ‘ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ…Œ์ŠคํŠธ ๋จ (Safari, Firefox, Chrome, Internet Explorer, EDGE... ๋“ฑ).
* [ ] **๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €:** ![High][high_img] ๋ชจ๋“  ํŽ˜์ด์ง€๊ฐ€ ๋ชจ๋“  ํ˜„์กดํ•˜๋Š” ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ…Œ์ŠคํŠธ ๋จ (Native browser, Chrome, Safari... ๋“ฑ).
* [ ] **์šด์˜์ฒด์ œ:** ![High][high_img] ๋ชจ๋“  ํŽ˜์ด์ง€๊ฐ€ ๋ชจ๋“  ํ˜„์กดํ•˜๋Š” ์šด์˜์ฒด์ œ์—์„œ ํ…Œ์ŠคํŠธ ๋จ (Windows, Android, iOS, Mac... ๋“ฑ).

- [ ] **๋””์ž์ธ๊ณผ์˜ ์ •ํ™•๋„:** [![Low](https://github.com/thedaviddias/Front-End-Checklist/raw/master/data/images/priority/low.svg)](https://github.com/thedaviddias/Front-End-Checklist/blob/master/data/images/priority/low.svg) ํ”„๋กœ์ ํŠธ์— ๋”ฐ๋ผ ์›๋ž˜ ์˜๋„ํ–ˆ๋˜ ๋””์ž์ธ๋Œ€๋กœ ํ™”๋ฉด์— ๋ณด์—ฌ์ง€๋Š”์ง€ ์ •ํ™•๋„๊ฐ€ ์š”๊ตฌ๋  ์ˆ˜ ์žˆ์Œ. ๋„๊ตฌ๋“ค์„ ์‚ฌ์šฉํ•ด์„œ ์‹คํ–‰๋œ ์ฝ”๋“œ์™€ ๋น„๊ตํ•˜๊ณ  ์ผ๊ด€์„ฑ์„ ์œ ์ง€.

> [Pixel Perfect - Chrome ํ™•์žฅ๋„๊ตฌ](https://chrome.google.com/webstore/detail/perfectpixel-by-welldonec/dkaagdgjmgdmbnecmcefdhjekcoceebi?hl=en)

* [ ] **๊ธ€์ž ๋ฐฉํ–ฅ:** ![High][high_img] ๋‹ค๊ตญ์–ด๋ฅผ ์ง€์›ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ, ๊ธ€์ž ๋ฐฉํ–ฅ์— ๋งž๊ฒŒ ๋ชจ๋“  ํŽ˜์ด์ง€๊ฐ€ ์ •์ƒ ๋™์ž‘ํ•จ (LTR / RTL)

> * ๐Ÿ“– [Building RTL-Aware Web Apps & Websites: Part 1 - Mozilla Hacks](https://hacks.mozilla.org/2015/09/building-rtl-aware-web-apps-and-websites-part-1/)
> * ๐Ÿ“– [Building RTL-Aware Web Apps & Websites: Part 2 - Mozilla Hacks](https://hacks.mozilla.org/2015/10/building-rtl-aware-web-apps-websites-part-2/)

**[โฌ† ๋ชฉ์ฐจ๋กœ](#๋ชฉ์ฐจ)**

---

## ์ด๋ฏธ์ง€

> **๋…ธํŠธ:** ์ด๋ฏธ์ง€ ์ตœ์ ํ™”์˜ ์™„์ „ํ•œ ์ดํ•ด๋ฅผ ์œ„ํ•ด์„œ๋Š”, Addy Osmani๊ฐ€ ์“ด ๋ฌด๋ฃŒ ebook **[Essential Image Optimization](https://images.guide/)** ์„ ํ™•์ธํ•˜์„ธ์š”.

### ๋ชจ๋ฒ” ์‚ฌ๋ก€

* [ ] **์ตœ์ ํ™”:** ![High][high_img] ๋ชจ๋“  ์ด๋ฏธ์ง€๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ๋ Œ๋”๋ง ๋  ์ˆ˜ ์žˆ๋„๋ก ์ตœ์ ํ™” ๋˜์—ˆ๋‚˜? ํ™ˆํŽ˜์ด์ง€ ๊ฐ™์ด ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ํŽ˜์ด์ง€์—๋Š” WebP ํฌ๋งท์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Œ

> * ๐Ÿ›  [Imagemin](https://github.com/imagemin/imagemin)
> * ๐Ÿ›  [ImageOptim](https://imageoptim.com/)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹น์‹ ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ฌด๋ฃŒ๋กœ ์ตœ์ ํ™”ํ•˜์„ธ์š”
> * ๐Ÿ›  [Kraken.io](https://kraken.io/web-interface)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ png์™€ jpg์„ ๊ฝค๋‚˜ ๋Œ€๋‹จํ•˜๊ฒŒ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ๋‹น 1MB์— ๋Œ€ํ•ด์„œ๋Š” ๋ฌด๋ฃŒ์ž…๋‹ˆ๋‹ค.
> * ๐Ÿ›  [KeyCDN Image Processing](https://www.keycdn.com/support/image-processing) ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ด๋ฏธ์ง€ ์ตœ์ ํ™”
> * ๐Ÿ›  [TinyPNG](https://tinypng.com/) png, apng (animated png), jpg images๋ฅผ ๋ฌด์†์‹ค ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ ๋ฒ„์ „๊ณผ ์œ ๋ฃŒ ๋ฒ„์ „์ด ์กด์žฌ
> * ๐Ÿ›  [SVGO](https://github.com/svg/svgo) SVG ๋ฒกํ„ฐ ๊ทธ๋ž˜ํ”ฝ ํŒŒ์ผ๋“ค์„ ์ตœ์ ํ™”ํ•˜๋Š” Nodejs ๊ธฐ๋ฐ˜ ๋„๊ตฌ
> * ๐Ÿ›  [SVGOMG](https://jakearchibald.github.io/svgomg/) SVGO์˜ ์›น ๋ฒ„์ „

* [ ] **Picture/Srcset:** ![Medium][medium_img] picture์™€ srcset์„ ์ด์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ํ˜„์žฌ ๋ทฐํฌํŠธ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ณตํ•˜์˜€์Œ

> * ๐Ÿ“– [srcset์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜์‘ํ˜• ์ด๋ฏธ์ง€ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•](https://www.sitepoint.com/how-to-build-responsive-images-with-srcset/)

* [ ] **๋ ˆํ‹ฐ๋‚˜ ๋””์Šคํ”Œ๋ ˆ์ด ์ง€์›:** ![Low][low_img] ๋ ˆํ‹ฐ๋‚˜ ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋‹น์‹ ์˜ ํ˜„ ๋ ˆ์ด์•„์›ƒ์— ํ•ด๋‹นํ•˜๋Š” 2๋ฐฐ, ๋˜๋Š” 3๋ฐฐ ์ด์ƒ ํฐ ์ด๋ฏธ์ง€๋ฅผ ์ง€์›ํ•จ
* [ ] **[์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ](https://www.w3schools.com/css/css_image_sprites.asp):** ![Medium][medium_img] ์ž‘์€ ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ ์Šคํ”„๋ผ์ดํŠธ ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์ ธ ์žˆ์Œ (์•„์ด์ฝ˜์˜ ๊ฒฝ์šฐ, SVG ์Šคํ”„๋ผ์ดํŠธ ์ด๋ฏธ์ง€ ์ผ ์ˆ˜๋„ ์žˆ์Œ)
* [ ] **๋„ˆ๋น„์™€ ๋†’์ด:** ![High][high_img] ๋ชจ๋“  `` ํƒœ๊ทธ์— ๋„ˆ๋น„์™€ ๋†’์ด๊ฐ€ ์„ค์ •๋˜์—ˆ์Œ (px์ด๋‚˜ %๋กœ ์ง€์ •ํ•˜์ง€ ๋งˆ์‹œ์˜ค)
* [ ] **๋Œ€์ฒด ํ…์ŠคํŠธ:** ![High][high_img] ๋ชจ๋“  `` ํƒœ๊ทธ๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ์ž˜ ์„œ์ˆ ํ•˜๋Š” ๋Œ€์ฒด ํ…์ŠคํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ (`alt` ์†์„ฑ์œผ๋กœ ๋ถ€์—ฌ)

> * ๐Ÿ“– [๋Œ€์ฒด ํ…์ŠคํŠธ: ์ตœ๊ณ ์˜ ๊ฐ€์ด๋“œ](https://axesslab.com/alt-texts/)

* [ ] **Lazy ๋กœ๋”ฉ:** ![Medium][medium_img] ์ด๋ฏธ์ง€๋“ค์ด lazy ๋กœ๋“œ ๋จ (์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฏธ์ง€์›์— ๋Œ€ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ํ•ญ์ƒ ์ œ๊ณต ๋˜์–ด์•ผ ํ•จ)

> - ๐Ÿ›  [๋„ค์ดํ‹ฐ๋ธŒ ๋ ˆ์ด์ง€ ๋กœ๋”ฉ ํด๋ฆฌํ•„](https://github.com/mfranzke/loading-attribute-polyfill/)

**[โฌ† ๋ชฉ์ฐจ๋กœ](#๋ชฉ์ฐจ)**

---

## ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

### ๋ชจ๋ฒ” ์‚ฌ๋ก€

* [ ] **์ธ๋ผ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ:** ![High][high_img] HTML ์ฝ”๋“œ์™€ ์„ž์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ธ๋ผ์ธ์œผ๋กœ ํฌํ•จํ•˜์ง€ ์•Š๋„๋ก ํ•˜์‹œ์˜ค
* [ ] **ํŒŒ์ผ ๋‹จ์ผํ™”:** ![High][high_img] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋“ค์ด ํ•˜๋‚˜์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋กœ ๋‹จ์ผํ™” ๋˜์—ˆ์Œ
* [ ] **์ตœ์†Œํ™”:** ![High][high_img] ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์ด ์ตœ์†Œํ™” ๋˜์—ˆ์Œ(๋’ค์— `.min` ์ ‘๋ฏธ์‚ฌ๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ์„ ์ถ”์ฒœ)

> * [๋ฆฌ์†Œ์Šค(HTML, CSS, and JavaScript) ์ตœ์†Œํ™”ํ•˜๊ธฐ](https://developers.google.com/speed/docs/insights/MinifyResources)

* [ ] **์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ณด์•ˆ: ![High][high_img]**

> * [์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ณด์•ˆ์— ์•ˆ์ „ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ](https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet#Guidelines_for_Developing_Secure_Applications_Utilizing_JavaScript)

* [ ] **`noscript` ํƒœ๊ทธ:** ![Medium][medium_img] ๋ธŒ๋ผ์šฐ์ € ๋‚ด์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๊บผ์ ธ ์žˆ์„ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ HTML ๋‚ด์— `` ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์‹œ์˜ค. ์ด๋Š” React.js ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ฒ˜๋Ÿผ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ์— ๋ Œ๋”๋ง์ด ๊ต‰์žฅํžˆ ๋ฌด๊ฑฐ์šด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ ๊ต‰์žฅํžˆ ์œ ์šฉํ•จ. ๋‹ค์Œ์˜ [์˜ˆ์ œ](https://webdesign.tutsplus.com/tutorials/quick-tip-dont-forget-the-noscript-element--cms-25498) ๋ฅผ ์‚ดํŽด๋ณด์‹œ์˜ค

```html

์ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์„ฑํ™” ์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

```

* [ ] **๋…ผ ๋ธ”๋กœํ‚น:** ![Medium][medium_img] JavaScript ํŒŒ์ผ๋“ค์€ `async`์™€ `defer` ์†์„ฑ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋กœ๋“œ ๋˜์–ด์•ผ ํ•จ

> * ๐Ÿ“– [๋ Œ๋”๋ง์„ ๋ง‰๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ œ๊ฑฐํ•˜๊ธฐ](https://developers.google.com/speed/docs/insights/BlockingJS)

* [ ] **์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ตœ์ ํ™”ํ•˜๊ธฐ:** [![Medium](https://github.com/thedaviddias/Front-End-Checklist/raw/master/data/images/priority/medium.svg)](https://github.com/thedaviddias/Front-End-Checklist/blob/master/data/images/priority/medium.svg) ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์ˆ˜์ ์ธ ๊ฒƒ๋“ค์ž„ (๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด์„œ๋Š” ๊ธฐ๋ณธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋งŒ์„ ์“ฐ๋„๋ก ํ•˜์ž). ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ–ˆ์œผ๋ฉฐ, ํ•˜๋‚˜์˜ ์ž‘์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ณผ๋„ํ•˜๊ฒŒ ํฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์Œ (๊ฐ€๋ น debounce ํ•˜๋‚˜๋ฅผ ์“ฐ๊ธฐ ์œ„ํ•ด lodash ์ „์ฒด๋ฅผ ํฌํ•จํ•˜์ง€ ๋ง๊ธฐ)

> - ๐Ÿ“– [You may not need jQuery](http://youmightnotneedjquery.com/)
> - ๐Ÿ“– [Vanilla JavaScript for building powerful web applications](https://plainjs.com/)

* [ ] **Modernizr:** ![Low][low_img] ํŠน์ •ํ•œ ๊ธฐ๋Šฅ์„ ์ง€์นญํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๋œ Modernizr๋ฅผ ์ด์šฉํ•˜์—ฌ `` ํƒœ๊ทธ ๋‚ด์— ํด๋ž˜์Šค๋“ค์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ

> * ๐Ÿ›  [๋‹น์‹ ์˜ Modernizr ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•˜๊ธฐ](https://modernizr.com/download?setclasses)

### ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ…Œ์ŠคํŠธ

* [ ] **ESLint:** ![High][high_img] ํ‘œ์ค€ ๊ทœ์น™์ด๋‚˜ ๋‹น์‹ ์˜ ์„ค์ •์— ๋”ฐ๋ผ ESLint๋ฅผ ์—๋Ÿฌ ์—†์ด ํ†ต๊ณผํ•จ

> * ๐Ÿ“– [ESLint - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ JSX๋ฅผ ์œ„ํ•œ, ์–ธ์ œ๋“ ์ง€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฐํŒ… ์œ ํ‹ธ๋ฆฌํ‹ฐ](https://eslint.org/)

**[โฌ† ๋ชฉ์ฐจ๋กœ](#๋ชฉ์ฐจ)**

---

## ๋ณด์•ˆ

### ๋‹น์‹ ์˜ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฏธ๋ฆฌ ๊ฒ€ํ† ํ•˜๊ณ  ํ™•์ธํ•˜์„ธ์š”

> * [securityheaders.io](https://securityheaders.io/)
> * [Observatory by Mozilla](https://observatory.mozilla.org/)

### ๋ชจ๋ฒ” ์‚ฌ๋ก€

* [ ] **HTTPS:** ![High][high_img] ํŽ˜์ด์ง€ ๋‚ด์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ์™ธ๋ถ€ ์ปจํ…์ธ (ํ”Œ๋Ÿฌ๊ทธ์ธ, ์ด๋ฏธ์ง€...)์— ๋Œ€ํ•ด์„œ๋„ HTTPS ๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ์Œ.

> * ๐Ÿ›  [Let's Encrypt - Free SSL/TLS Certificates](https://letsencrypt.org/)
> * ๐Ÿ›  [Free SSL Server Test](https://www.ssllabs.com/ssltest/index.html)
> * ๐Ÿ“– [Strict Transport Security](http://caniuse.com/#feat=stricttransportsecurity)

* [ ] **HTTP Strict Transport Security (HSTS):** ![Medium][medium_img] HTTP ํ—ค๋” ๊ฐ’์œผ๋กœ 'Strict-Transport-Security'๊ฐ€ ์„ค์ •๋จ.

> * ๐Ÿ›  [Check HSTS preload status and eligibility](https://hstspreload.org/)
> * ๐Ÿ“– [HSTS ์ฐธ์กฐ์„œ - OWASP](https://www.owasp.org/index.php/HTTP_Strict_Transport_Security_Cheat_Sheet)
> * ๐Ÿ“– [์ „์†ก ๊ณ„์ธต ๋ณด์•ˆ ์ฐธ์กฐ์„œ - OWASP](https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet)

* [ ] **์‚ฌ์ดํŠธ ๊ฐ„ ์š”์ฒญ ์œ„์กฐ(CSRF; Cross Site Request Forgery):** ![High][high_img] CSRF ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์œ„ํ•˜์—ฌ ๋‹น์‹ ์˜ ์„œ๋ฒ„ ์ชฝ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  HTTP ์š”์ฒญ์ด ํ•ฉ๋ฒ•์ ์ด๊ณ  ๋‹น์‹ ์˜ ์›น์‚ฌ์ดํŠธ๋‚˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ๋ถ€ํ„ฐ ๋ฐœ์ƒํ•œ ๊ฒƒ์ž„์„ ํ™•์‹ ํ•จ

> * ๐Ÿ“– [CSRF ์˜ˆ๋ฐฉ ์ฐธ์กฐ์„œ - OWASP](https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet)

* [ ] **์‚ฌ์ดํŠธ ๊ฐ„ ์Šคํฌ๋ฆฝํŒ…(XSS; Cross Site Scripting):** ![High][high_img] ๋‹น์‹ ์˜ ํŽ˜์ด์ง€๋‚˜ ์›น์‚ฌ์ดํŠธ๊ฐ€ ์‚ฌ์ดํŠธ ๊ฐ„ ์Šคํฌ๋ฆฝํŒ…์ด ๋ฐœ์ƒํ•  ์—ฌ์ง€๊ฐ€ ์ „ํ˜€ ์—†์Œ

> * ๐Ÿ“– [XSS ์˜ˆ๋ฐฉ ์ฐธ์กฐ์„œ - OWASP](https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet)
> * ๐Ÿ“– [DOM ๊ธฐ๋ฐ˜ XSS ์˜ˆ๋ฐฉ ์ฐธ์กฐ์„œ - OWASP](https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet)

* [ ] **Content Type Options:** ![Medium][medium_img] ์„œ๋ฒ„์—์„œ ์„ค์ •ํ•œ ํƒ€์ž…๊ณผ ๋‹ค๋ฅธ ์‘๋‹ต์ด ์˜ฌ ๊ฒฝ์šฐ mime-sniffing์„ ํ•˜์ง€ ์•Š๋„๋ก ํ•จ

> * ๐Ÿ“– [X-Content-Type-Options - Scott Helme](https://scotthelme.co.uk/hardening-your-http-response-headers/#x-content-type-options)

* [ ] **X-Frame-Options (XFO)** ![Medium][medium_img] ๋ฐฉ๋ฌธ์ž๋ฅผ ํด๋ฆญ์žฌํ‚น ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•จ

> * ๐Ÿ“– [X-Frame-Options - Scott Helme](https://scotthelme.co.uk/hardening-your-http-response-headers/#x-frame-options)
> * ๐Ÿ“– [RFC7034 - HTTP Header Field X-Frame-Options](https://tools.ietf.org/html/rfc7034)

* [ ] **์ปจํ…์ธ  ๋ณด์•ˆ ์ •์ฑ…(CSP; Content Security Policy)** ![Medium][medium_img] ์‚ฌ์ดํŠธ ๋‚ด์˜ ์ปจํ…์ธ ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋กœ๋”ฉ๋˜๊ณ , ์–ด๋””์„œ ๋กœ๋”ฉ๋˜๋„๋ก ํ—ˆ๊ฐ€๋ฐ›์•˜๋Š”์ง€๋ฅผ ํ™•์ธ. ์ด๋ฅผ ์ ์šฉํ•จ์œผ๋กœ์จ ํด๋ฆญ์žฌํ‚น ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Œ

> * ๐Ÿ“– [์ปจํ…์ธ  ๋ณด์•ˆ ์ •์ฑ… ์†Œ๊ฐœ - Scott Helme](https://scotthelme.co.uk/content-security-policy-an-introduction/)
> * ๐Ÿ“– [์ปจํ…์ธ  ๋ณด์•ˆ ์ •์ฑ… ๊ฐ€์ด๋“œ๋ผ์ธ - Scott Helme](https://scotthelme.co.uk/csp-cheat-sheet/)
> * ๐Ÿ“– [์ปจํ…์ธ  ๋ณด์•ˆ ์ •์ฑ… ๊ฐ€์ด๋“œ๋ผ์ธ - OWASP](https://www.owasp.org/index.php/Content_Security_Policy_Cheat_Sheet)
> * ๐Ÿ“– [์ปจํ…์ธ  ๋ณด์•ˆ ์ •์ฑ… ๋ ˆํผ๋Ÿฐ์Šค](https://content-security-policy.com/)

**[โฌ† ๋ชฉ์ฐจ๋กœ](#๋ชฉ์ฐจ)**

---

## ์„ฑ๋Šฅ

### ๋ชจ๋ฒ” ์‚ฌ๋ก€

- [ ] **์„ฑ์ทจ ๋ชฉํ‘œ:** [![Medium](https://github.com/thedaviddias/Front-End-Checklist/raw/master/data/images/priority/medium.svg)](https://github.com/thedaviddias/Front-End-Checklist/blob/master/data/images/priority/medium.svg) ํŽ˜์ด์ง€๊ฐ€ ์ด ๋ชฉํ‘œ์— ๋„๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ:
- First Meaningful Paint (์‚ฌ์šฉ์ž์—๊ฒŒ ์˜๋ฏธ ์žˆ๋Š” ์ปจํ…์ธ ๊ฐ€ ๊ทธ๋ ค์ง€๋Š” ์ฒซ ์ˆœ๊ฐ„)์€ 1์ดˆ ์ดํ•˜์—ฌ์•ผ ํ•œ๋‹ค
- 3G ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ €๊ฐ€ํ˜• ์•ˆ๋“œ๋กœ์ด๋“œ ํฐ, 400kbps ์ „์†ก ์†๋„์™€ 400ms ์˜ ๋„คํŠธ์›Œํฌ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๊ธฐ์ค€์œผ๋กœ, ํŽ˜์ด์ง€๊ฐ€ ํ™œ์„ฑํ™” ๋˜๊ธฐ๊นŒ์ง€์˜ ์‘๋‹ต ์†๋„๋Š” ์ตœ๋Œ€ 5์ดˆ ์ดํ•˜์—ฌ์•ผ ํ•˜๋ฉฐ, ์žฌ์ ‘์†์˜ ๊ฒฝ์šฐ ์ตœ๋Œ€ 2์ดˆ ์ดํ•˜์—ฌ์•ผ ํ•จ
- ํ•ต์‹ฌ์ ์ธ ํŒŒ์ผ๋“ค์€ GZIP ์••์ถ• ์‹œ 170Kb ์ดํ•˜์—ฌ์•ผ ํ•จ

> * ๐Ÿ›  [์›น์‚ฌ์ดํŠธ ํŽ˜์ด์ง€ ๋ถ„์„](https://tools.pingdom.com)
> * ๐Ÿ›  [WebPageTest](https://www.webpagetest.org/)
> * ๐Ÿ“– [ํŽ˜์ด์ง€ ์šฉ๋Ÿ‰์„ ์ œํ•œํ•จ์œผ๋กœ์จ ์›น์„ ๋”์šฑ ๊ฐ€๋ณ๊ฒŒ ๋งŒ๋“œ์„ธ์š”](https://evilmartians.com/chronicles/size-limit-make-the-web-lighter)

- [ ] **์ตœ์†Œํ™”:** ![Medium][medium_img] HTML์ด ์ตœ์†Œํ™”๊ฐ€ ๋˜์—ˆ์Œ

* [ ] **Lazy ๋กœ๋”ฉ:** ![Medium][medium_img] ์ด๋ฏธ์ง€, ์Šคํฌ๋ฆฝํŠธ, CSS ํŒŒ์ผ๋“ค์ด lazy ๋กœ๋“œ ๋˜์–ด์„œ ํ˜„ ํŽ˜์ด์ง€์˜ ์‘๋‹ต์‹œ๊ฐ„์„ ํ–ฅ์ƒ์‹œํ‚ด (๊ฐ ์„น์…˜์˜ ์ž์„ธํ•œ ๋ถ€๋ถ„์„ ์ฐธ์กฐํ•˜์‹œ์˜ค)

* [ ] **์ฟ ํ‚ค ํฌ๊ธฐ:** ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ๊ฐ ์ฟ ํ‚ค์˜ ํฌ๊ธฐ๊ฐ€ 4096 ๋ฐ”์ดํŠธ๋ฅผ ๋„˜์ง€ ์•Š๊ณ , ๋„๋ฉ”์ธ ๋‚ด์— 20๊ฐœ ์ด์ƒ์˜ ์ฟ ํ‚ค๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜์‹œ์˜ค

> * ๐Ÿ“– [์ฟ ํ‚ค ์‚ฌ์–‘: RFC 6265](https://tools.ietf.org/html/rfc6265)
> * ๐Ÿ“– [์ฟ ํ‚ค](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)
> * ๐Ÿ›  [๋ธŒ๋ผ์šฐ์ € ์ฟ ํ‚ค์˜ ์ œํ•œ์ ](http://browsercookielimits.squawky.net/)

* [ ] **์„œ๋“œ ํŒŒํ‹ฐ ์ปดํฌ๋„ŒํŠธ:** ![Medium][medium_img] ๊ณต์œ ํ•˜๊ธฐ ๋ฒ„ํŠผ์ฒ˜๋Ÿผ ์™ธ๋ถ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์— ์˜์กดํ•˜๋Š” ์„œ๋“œํŒŒํ‹ฐ iframe์ด๋‚˜ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ์šฐ, ๊ฐ€๊ธ‰์  ์ •์ ์ธ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ต์ฒดํ•˜์—ฌ์„œ ์™ธ๋ถ€ API ํ˜ธ์ถœ์„ ์ œํ•œํ•˜๊ณ  ์‚ฌ์šฉ์ž๋“ค์˜ ํ™œ๋™๋“ค์„ ์™ธ๋ถ€๋กœ ์œ ์ถœ๋˜์ง€ ์•Š๋„๋ก ํ•˜์‹œ์˜ค

> * ๐Ÿ›  [๊ฐ„๋‹จํ•œ ๊ณต์œ ํ•˜๊ธฐ ๋ฒ„ํŠผ ์ƒ์„ฑ๊ธฐ](https://simplesharingbuttons.com/)

### ๋‹ค์Œ์— ๋ฐœ์ƒํ•  HTTP ์š”์ฒญ์„ ๋ฏธ๋ฆฌ ์ค€๋น„ํ•˜๊ธฐ

> * ๐Ÿ“– [๋‹ค์Œ ๊ธฐ์ˆ ๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…](https://css-tricks.com/prefetching-preloading-prebrowsing/)

* [ ] **DNS resolution:** ![Low][low_img] `dns-prefetch` ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋“œํŒŒํ‹ฐ ์„œ๋น„์Šค์˜ DNS ๊ฐ€ ์œ ํœด ์‹œ๊ฐ„์— ๋ฏธ๋ฆฌ resolve ๋˜๋„๋ก ํ•จ

```html

```

* [ ] **Preconnect:** ![Low][low_img] `preconnect` ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ”๋กœ ํ•„์š”ํ•œ ์„œ๋น„์Šค์˜ DNS ์˜ ๋ฃฉ์—…, TCP ํ•ธ๋“œ์…ฐ์ดํฌ์™€ TLS ํ˜‘์ƒ์„ ์œ ํœด ์‹œ๊ฐ„์— ๋ฏธ๋ฆฌ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•จ

```html

```

* [ ] **Prefetching:** ![Low][low_img] `prefetch` ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ”๋กœ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋“ค(์˜ˆ์‹œ: ๋ ˆ์ด์ง€ ๋กœ๋“œ ๋˜๋Š” ์ด๋ฏธ์ง€) ์„ ์œ ํœด ์‹œ๊ฐ„์— ๋ฏธ๋ฆฌ ์š”์ฒญํ•˜๋„๋ก ํ•จ

```html

```

* [ ] **Preloading:** ![Low][low_img] `preload` ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ํœด ์‹œ๊ฐ„์— ํ˜„์žฌ ํŽ˜์ด์ง€ ๋‚ด์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋“ค (์˜ˆ์‹œ: body ํ•˜๋‹จ์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋“ค) ์„ ์œ ํœด ์‹œ๊ฐ„์— ๋ฏธ๋ฆฌ ์š”์ฒญํ•˜๋„๋ก ํ•จ

```html

```

> * ๐Ÿ“– [prefetch์™€ preload์˜ ์ฐจ์ด์ ](https://medium.com/reloading/preload-prefetch-and-priorities-in-chrome-776165961bbf)

### ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ

* [ ] **Google PageSpeed:** ![High][high_img] ํ™ˆํŽ˜์ด์ง€ ๋ฟ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ํŽ˜์ด์ง€๊ฐ€ ํ…Œ์ŠคํŠธ ์™„๋ฃŒ ๋˜์—ˆ๊ณ  ์ตœ์†Œํ•œ 100์  ๋งŒ์  90์ ์€ ํš๋“ํ•˜์˜€์Œ

> * ๐Ÿ›  [Google PageSpeed](https://developers.google.com/speed/pagespeed/insights/)
> * ๐Ÿ›  [Google์—์„œ ๋ชจ๋ฐ”์ผ ์†๋„๋ฅผ ์ธก์ •ํ•ด๋ณด์„ธ์š”](https://testmysite.withgoogle.com)
> * ๐Ÿ›  [WebPagetest - ์›น์‚ฌ์ดํŠธ ์„ฑ๋Šฅ ๋ฐ ์ตœ์ ํ™” ํ…Œ์ŠคํŠธ](https://www.webpagetest.org/)
> * ๐Ÿ›  [GTmetrix - ์›น์‚ฌ์ดํŠธ ์†๋„ ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”](https://gtmetrix.com/)
> * ๐Ÿ›  [Speedrank - ์›น์‚ฌ์ดํŠธ์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•ด๋ณด์„ธ์š”](https://speedrank.app/)

**[โฌ† ๋ชฉ์ฐจ๋กœ](#๋ชฉ์ฐจ)**

---

## ์ ‘๊ทผ์„ฑ

> **๋…ธํŠธ:** ์œ ํŠœ๋ธŒ์˜ ์žฌ์ƒ ๋ชฉ๋ก์„ ํ™•์ธํ•ด๋ณด์„ธ์š” [A11ycasts with Rob Dodson](https://www.youtube.com/playlist?list=PLNYkxOF6rcICWx0C9LVWWVqvHlYJyqw7g) ๐Ÿ“น

### ๋ชจ๋ฒ” ์‚ฌ๋ก€

- [ ] **Progressive enhancement:** ![Medium][medium_img] ๋ฉ”์ธ ๋„ค๋น„๊ฒŒ์ด์…˜์ด๋‚˜ ๊ฒ€์ƒ‰๊ณผ ๊ฐ™์€ ๋Œ€๋‹ค์ˆ˜์˜ ๊ธฐ๋Šฅ๋“ค์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ ๋„ ๋™์ž‘ํ•ด์•ผ ํ•จ

> * ๐Ÿ“– [Chrome ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‚ค๊ณ  ๋„๊ธฐ](https://www.youtube.com/watch?v=kBmvq2cE0D8)

- [ ] **์ƒ‰์ƒ ๋Œ€๋น„:** ![Medium][medium_img] ์ƒ‰์ƒ ๋Œ€๋น„ ๊ธฐ์ค€์ด ์ตœ์†Œํ•œ WCAG AA๋ฅผ ํ†ต๊ณผํ•ด์•ผ ํ•จ (๋ชจ๋ฐ”์ผ์˜ ๊ฒฝ์šฐ AAA๋ฅผ ํ†ต๊ณผํ•ด์•ผ ํ•จ)

> * ๐Ÿ›  [๋Œ€๋น„์œจ](https://leaverou.github.io/contrast-ratio/)

#### ํ—ค๋”ฉ

* [ ] **H1:** ![High][high_img] ๋ชจ๋“  ํŽ˜์ด์ง€ ๋‚ด์— ์›น์‚ฌ์ดํŠธ์˜ ํƒ€์ดํ‹€๊ณผ ๋‹ค๋ฅธ H1 ํƒœ๊ทธ๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•จ
* [ ] **ํ—ค๋”ฉ:** ![High][high_img] ํ—ค๋”ฉ์ด ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ(H1๋ถ€ํ„ฐ H6๊นŒ์ง€)๋กœ ์ ์ ˆํžˆ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•จ

> * ๐Ÿ“น [ํ—ค๋”ฉ๊ณผ ๋žœ๋“œ๋งˆํฌ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ์ค‘์š”ํ•œ ์ด์œ  -- A11ycasts #18](https://www.youtube.com/watch?v=vAAzdi1xuUY&index=9&list=PLNYkxOF6rcICWx0C9LVWWVqvHlYJyqw7g)

### ์‹œ๋งจํ‹ฑ

- [ ] **ํŠน์ •ํ•œ HTML5์˜ input ํƒ€์ž…๋“ค์˜ ์‚ฌ์šฉ:** ![Medium][medium_img] ์ด ํ•ญ๋ชฉ์€ ๊ฐ๊ฐ ๋‹ค๋ฅธ input ํƒ€์ž…์— ๋Œ€ํ•˜์—ฌ ๊ฐœ๋ณ„์ ์ธ ํ‚คํŒจ๋“œ๋‚˜ ์œ„์ ฏ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ชจ๋ฐ”์ผ ์žฅ์น˜๋“ค์— ๋Œ€ํ•ด ํŠนํžˆ ๋”์šฑ ์ค‘์š”ํ•จ

> * ๐Ÿ“– [๋ชจ๋ฐ”์ผ Input ํƒ€์ž…](http://mobileinputtypes.com/)

### ํผ

* [ ] **๋ ˆ์ด๋ธ”:** ![High][high_img] ๋ ˆ์ด๋ธ”์€ ๊ฐ๊ฐ์˜ ์ž…๋ ฅ ํผ ์—˜๋ฆฌ๋จผํŠธ์™€ ์—ฐ๊ด€๋จ. ๋ ˆ์ด๋ธ”์ด ๋ณด์—ฌ์งˆ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ `aria-label` ์„ ๋Œ€์‹  ์‚ฌ์šฉํ•˜์‹œ์˜ค

> * ๐Ÿ“– [aria-label ์†์„ฑ ์‚ฌ์šฉํ•˜๊ธฐ - MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute)

### ์ ‘๊ทผ์„ฑ ํ…Œ์ŠคํŠธ

* [ ] **์ ‘๊ทผ์„ฑ ํ‘œ์ค€ ํ…Œ์ŠคํŠธ:** ![High][high_img] WAVE ๋„๊ตฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹น์‹ ์˜ ํŽ˜์ด์ง€๊ฐ€ ์ ‘๊ทผ์„ฑ ํ‘œ์ค€์„ ๋งŒ์กฑํ•˜์˜€๋Š”์ง€ ํ…Œ์ŠคํŠธ ํ•ด๋ณด์„ธ์š”

> * ๐Ÿ›  [Wave ํ…Œ์ŠคํŠธ](http://wave.webaim.org/)

* [ ] **ํ‚ค๋ณด๋“œ ๋„ค๋น„๊ฒŒ์ด์…˜:** ![High][high_img] ํ‚ค๋ณด๋“œ๋งŒ์„ ์ด์šฉํ•˜์—ฌ ์›น์‚ฌ์ดํŠธ๋ฅผ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๋„๋ก ์›€์ง์ผ ์ˆ˜ ์žˆ๋Š”์ง€ ํ…Œ์ŠคํŠธ ํ•˜์‹œ์˜ค. ๋ชจ๋“  ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์—˜๋ฆฌ๋จผํŠธ๋“ค์€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ
* [ ] **์Šคํฌ๋ฆฐ ๋ฆฌ๋”:** ![Medium][medium_img] ๋ชจ๋“  ํŽ˜์ด์ง€๋“ค์ด ์Šคํฌ๋ฆฐ ๋ฆฌ๋” (VoiceOver, ChromeVox, NVDA or Lynx) ํ…Œ์ŠคํŠธ๋ฅผ ์™„๋ฃŒํ•จ
* [ ] **ํฌ์ปค์Šค ์Šคํƒ€์ผ๋ง:** ![High][high_img] ํฌ์ปค์Šค ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ๋ˆˆ์— ๋ณด์ด๋Š” ์ƒํƒœ์˜ CSS๋กœ ๋Œ€์ฒด๋˜์–ด์•ผ ํ•จ

> * ๐Ÿ“น [ํฌ์ปค์Šค ๊ด€๋ฆฌํ•˜๊ธฐ - A11ycasts #22](https://www.youtube.com/watch?v=srLRSQg6Jgg&index=5&list=PLNYkxOF6rcICWx0C9LVWWVqvHlYJyqw7g)

**[โฌ† ๋ชฉ์ฐจ๋กœ](#๋ชฉ์ฐจ)**

---

## SEO

* [ ] **๊ตฌ๊ธ€ ์• ๋„๋ฆฌํ‹ฑ์Šค:** ![Low][low_img] ๊ตฌ๊ธ€ ์• ๋„๋ฆฌํ‹ฑ์Šค๊ฐ€ ์„ค์น˜๋˜์—ˆ๊ณ  ์ œ๋Œ€๋กœ ์„ค์ •๋˜์—ˆ์Œ

> * ๐Ÿ›  [๊ตฌ๊ธ€ ์• ๋„๋ฆฌํ‹ฑ์Šค](https://analytics.google.com/analytics/web/)
> * ๐Ÿ›  [๊ตฌ๊ธ€ ์• ๋„๋ฆฌํ‹ฑ์Šค ์ฒด์ปค (๋ฐ...)](http://www.gachecker.com/)

* [ ] **Search Console:** [![Low](https://github.com/thedaviddias/Front-End-Checklist/raw/master/data/images/priority/low.svg)](https://github.com/thedaviddias/Front-End-Checklist/blob/master/data/images/priority/low.svg) Search Console์€ google์ด ์ œ๊ณตํ•˜๋Š” ๋ฌด๋ฃŒ ์„œ๋น„์Šค์ด๋ฉฐ ์‚ฌ์ดํŠธ์˜ ๊ฒ€์ƒ‰ ํŠธ๋ž˜ํ”ฝ ๋ฐ ์‹ค์ ์„ ์ธก์ •ํ•˜๊ณ , ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉฐ, Google ๊ฒ€์ƒ‰๊ฒฐ๊ณผ์—์„œ ์‚ฌ์ดํŠธ๊ฐ€ ๋‹๋ณด์ด๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

> - ๐Ÿ›  [Search Console](https://search.google.com/search-console/about)

* [ ] **์ ์ ˆํ•œ ์ œ๋ชฉ ๋ฐฐ์น˜:** ![Medium][medium_img] ์ œ๋ชฉ์€ ํ˜„ ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ์— ๋„์›€์„ ์คŒ

> * ๐Ÿ›  [Tota11y, tab Headings](http://khan.github.io/tota11y/#Try-it)

* [ ] **sitemap.xml:** ![High][high_img] sitemap.xml ํŒŒ์ผ์ด ์กด์žฌํ•˜๊ณ  Google Search Console(์˜ˆ์ „ ์ด๋ฆ„: Google Webmaster Tools)์œผ๋กœ ์ œ์ถœ๋˜์—ˆ์Œ

> * ๐Ÿ›  [Sitemap ์ƒ์„ฑ๊ธฐ](https://websiteseochecker.com/html-sitemap-generator/)

* [ ] **robots.txt:** ![High][high_img] robots.txt ํŒŒ์ผ์ด ์›นํŽ˜์ด์ง€๋ฅผ ๋ธ”๋กํ‚น ํ•˜์ง€ ์•Š์Œ

> * ๐Ÿ“– [The robots.txt file](https://varvy.com/robottxt.html)
> * ๐Ÿ›  [Google Robots ํ…Œ์ŠคํŠธ ๋„๊ตฌ](https://www.google.com/webmasters/tools/robots-testing-tool)๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹น์‹ ์˜ robots.txt ํŒŒ์ผ์„ ํ…Œ์ŠคํŠธ ํ•ด๋ณด์„ธ์š”

* [ ] **๊ตฌ์กฐํ™” ๋œ ๋ฐ์ดํ„ฐ:** ![High][high_img] ๊ตฌ์กฐํ™” ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€๊ฐ€ ํ…Œ์ŠคํŠธ๋˜์—ˆ๊ณ  ์—๋Ÿฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๊ฐ€? ๊ตฌ์กฐํ™” ๋œ ๋ฐ์ดํ„ฐ๋Š” ์›น ํฌ๋กค๋Ÿฌ๊ฐ€ ํ˜„ ํŽ˜์ด์ง€ ๋‚ด์˜ ์ปจํ…์ธ ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ์— ๋„์›€์ด ๋จ

> * ๐Ÿ“– [๊ตฌ์กฐํ™” ๋œ ๋ฐ์ดํ„ฐ ์†Œ๊ฐœ - Search - Google Developers](https://developers.google.com/search/docs/guides/intro-structured-data)
> * ๐Ÿ“– [JSON-LD](https://json-ld.org/)
> * ๐Ÿ“– [Microdata](https://www.w3.org/TR/microdata/)
> * ๐Ÿ› Test your page with the [Rich Restults Test](https://search.google.com/test/rich-results)
> * ๐Ÿ›  ๊ตฌ์กฐํ™” ๋œ ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๋‹จ์–ด๋“ค์˜ ๋ชฉ๋ก์„ ๋งŒ๋“ค์–ด๋ณด์„ธ์š” [Schema.org Full Heirarchy](http://schema.org/docs/full.html)

* [ ] **HTML ์‚ฌ์ดํŠธ๋งต:** ![Medium][medium_img] HTML ์‚ฌ์ดํŠธ๋งต์ด ์ œ๊ณต๋˜์—ˆ์œผ๋ฉฐ ์›น์‚ฌ์ดํŠธ์˜ ํ‘ธํ„ฐ ๋‚ด์— ์กด์žฌํ•˜๋Š” ๋งํฌ๋ฅผ ํ†ตํ•˜์—ฌ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•จ

> * ๐Ÿ“– [์‚ฌ์ดํŠธ๋งต ๊ฐ€์ด๋“œ๋ผ์ธ - Google Support](https://support.google.com/webmasters/answer/183668?hl=ko)
* [ ] **ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋งํฌ ํƒœ๊ทธ:** ![Medium][medium_img] ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋œ ์ปจํ…์ธ ์ž„์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•˜์—ฌ `rel="prev"` ์™€ `rel="next"` ํƒœ๊ทธ๋ฅผ ์ œ๊ณตํ•จ

> * ๐Ÿ›  [ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋งํฌ ํƒœ๊ทธ (rel="prev/next") ํ…Œ์ŠคํŠธ ๋„๊ตฌ](https://technicalseo.com/seo-tools/rel-prev-next/)

> * ๐Ÿ“– [ํŽ˜์ด์ง€๋„ค์ด์…˜ ๊ฐ€์ด๋“œ๋ผ์ธ - Google Support](https://support.google.com/webmasters/answer/1663744?hl=en)

```html

```

**[โฌ† ๋ชฉ์ฐจ๋กœ](#๋ชฉ์ฐจ)**

---

## ๋ฒˆ์—ญ

ํ”„๋ก ํŠธ์—”๋“œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋Š” ๋‹ค๋ฅธ ์–ธ์–ด๋กœ๋„ ์ด์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฒˆ์—ญ์ž๋“ค๊ณผ ๊ทธ๋“ค์˜ ๋ฉ‹์ง„ ๋…ธ๋ ฅ์— ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

* ๐Ÿ‡ฏ๐Ÿ‡ต Japanese: [miya0001/Front-End-Checklist](https://github.com/miya0001/Front-End-Checklist)
* ๐Ÿ‡ช๐Ÿ‡ธ Spanish: [eoasakura/Front-End-Checklist-ES](https://github.com/eoasakura/Front-End-Checklist-ES)
* ๐Ÿ‡จ๐Ÿ‡ณ Chinese: [JohnsenZhou/Front-End-Checklist](https://github.com/JohnsenZhou/Front-End-Checklist)
* ๐Ÿ‡ฐ๐Ÿ‡ท Korean: [kesuskim/Front-End-Checklist](https://github.com/kesuskim/Front-End-Checklist)
* ๐Ÿ‡ง๐Ÿ‡ท Portuguese: [jcezarms/Front-End-Checklist](https://github.com/jcezarms/Front-End-Checklist)
* ๐Ÿ‡ป๐Ÿ‡ณ Vietnamese: [euclid1990/Front-End-Checklist](https://github.com/euclid1990/Front-End-Checklist)
* ๐Ÿ‡น๐Ÿ‡ผ Traditional Chinese: [EngineLin/Front-End-Checklist](https://github.com/EngineLin/Front-End-Checklist)
* ๐Ÿ‡ซ๐Ÿ‡ท French: [ynizon/Front-End-Checklist](https://github.com/ynizon/Front-End-Checklist)
* ๐Ÿ‡ท๐Ÿ‡บ Russian: [ungear/Front-End-Checklist](https://github.com/ungear/Front-End-Checklist)
* ๐Ÿ‡น๐Ÿ‡ท Turkish: [eraycetinay/Front-End-Checklist](https://github.com/eraycetinay/Front-End-Checklist)
* ๐Ÿ‡ฉ๐Ÿ‡ช German: [xfuture603/Front-End-Checklist](https://github.com/xFuture603/Front-End-Checklist)
* ๐Ÿ‡ต๐Ÿ‡ฑ Polish: [mbiesiad/Front-End-Checklist](https://github.com/mbiesiad/Front-End-Checklist)

---

## ํ”„๋ก ํŠธ์—”๋“œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋ฐฐ์ง€

๋งŒ์•ฝ ๋‹น์‹ ์ด ํ”„๋ก ํŠธ์—”๋“œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ์˜ ๊ทœ์น™์„ ๋”ฐ๋ฅด๊ณ  ์žˆ๋‹ค๊ณ  ๋ณด์—ฌ์ฃผ๊ธธ ์›ํ•œ๋‹ค๋ฉด, ํ•˜๋‹จ์˜ ๋ฐฐ์ง€๋ฅผ README ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜์„ธ์š”!

โž” [![Frontโ€‘End_Checklist followed](https://img.shields.io/badge/Frontโ€‘End_Checklist-followed-brightgreen.svg)](https://github.com/thedaviddias/Front-End-Checklist/)

```md
[![Frontโ€‘End_Checklist followed](https://img.shields.io/badge/Frontโ€‘End_Checklist-followed-brightgreen.svg)](https://github.com/thedaviddias/Front-End-Checklist/)
```

**[โฌ† ๋ชฉ์ฐจ๋กœ](#๋ชฉ์ฐจ)**

---

## ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌ

**์ด์Šˆ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ PR์„ ๋‚ ๋ ค์„œ ์ˆ˜์ • ์‚ฌํ•ญ์ด๋‚˜ ์ถ”๊ฐ€ํ•  ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์•Œ๋ ค์ฃผ์„ธ์š”.**

### ๊ฐ€์ด๋“œ

**ํ”„๋ก ํŠธ์—”๋“œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ** ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋Š” 2๊ฐœ์˜ ๋ธŒ๋žœ์น˜๋กœ ๊ตฌ์„ฑ๋˜์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค:

#### 1. `master`

์ด ๋ธŒ๋žœ์น˜๋Š” [ํ”„๋ก ํŠธ์—”๋“œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ](http://frontendchecklist.com/) ์›น์‚ฌ์ดํŠธ์— ๋ฐ˜์˜๋˜๋Š” `README.md`ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

#### 2. `develop`

์ด ๋ธŒ๋žœ์น˜๋Š” ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ตฌ์กฐ๋‚˜ ์ปจํ…์ธ ์— ์ƒ๋‹นํ•œ ๋ณ€ํ™”๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์—๋Ÿฌ ์ˆ˜์ •์„ ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ, master ๋ธŒ๋žœ์น˜์— ์ง์ ‘ ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

## support

์งˆ๋ฌธ์ด๋‚˜ ์ œ์•ˆ์ด ์žˆ๋‹ค๋ฉด, ์ฃผ์ €ํ•˜์ง€ ๋ง๊ณ  Gitter๋‚˜ Twitter๋ฅผ ์ด์šฉํ•˜์„ธ์š”:

* [Chat on Gitter](https://gitter.im/Front-End-Checklist/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link)
* [Facebook](https://www.facebook.com/frontendchecklist/)
* [Twitter](https://twitter.com/thedaviddias)

## ์ €์ž

**[David Dias](https://github.com/thedaviddias/Front-End-Checklist)**

## contributors

This project exists thanks to all the people who contribute. [[Contribute]](CONTRIBUTING.md).

## backers

Thank you to all our backers! ๐Ÿ™ [[Become a backer](https://opencollective.com/front-end-checklist#backer)]

## sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/front-end-checklist#sponsor)]










## ๋ผ์ด์„ผ์Šค

[![CC0](https://i.creativecommons.org/p/zero/1.0/88x31.png)](https://creativecommons.org/publicdomain/zero/1.0/)

**[โฌ† ๋ชฉ์ฐจ๋กœ](#๋ชฉ์ฐจ)**

[low_img]: data/images/priority/low.svg
[medium_img]:data/images/priority/medium.svg
[high_img]: data/images/priority/high.svg