GithubHelp home page GithubHelp logo

chayeoi / blog Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 0.0 16.94 MB

๐Ÿ˜€ My personal blog

Home Page: https://chayeoi.site

License: MIT License

JavaScript 8.82% TypeScript 91.01% HTML 0.06% Shell 0.10%

blog's Introduction

Hi, I'm Chanyeon.

I'm a frontend enginieer in Seoul, interested in building useful and beautiful things.

blog's People

Contributors

chayeoi avatar dependabot[bot] avatar imgbotapp avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

blog's Issues

ํฌ์ŠคํŠธ ์ƒ์„ธ ํ™”๋ฉด์—์„œ ์ œ๋ชฉ ์š”์†Œ ๋งํฌ ํด๋ฆญ ์‹œ ํ—ค๋”์— ์˜ํ•ด ์„ ํƒ๋œ ์ œ๋ชฉ์ด ๊ฐ€๋ ค์ง€๋Š” ํ˜„์ƒ

  • CSS์˜ :target ์„ ํƒ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ URL์— ๋งค์นญ๋œ ์š”์†Œ์— ์˜คํ”„์…‹์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ—ค๋” ์š”์†Œ์˜ ์•„๋žซ ๋ถ€๋ถ„์œผ๋กœ ๋งํฌ์˜ ํฌ์ปค์Šค๊ฐ€ ์ด๋™ํ•˜๋„๋ก ๋ณ€๊ฒฝ

SEO ์ ์šฉ

ํ•˜์œ„ ์ž‘์—…

  • ๊ธฐ๋ณธ meta ํƒœ๊ทธ ์ ์šฉ
    • meta[name="keywords"]
    • meta[name="description"]
    • meta[name="author"]
  • link[rel="canonical"]๋ฅผ ์ ์šฉํ•˜์—ฌ ํ‘œ์ค€ ํŽ˜์ด์ง€ ์„ค์ •
  • ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ์†Œ์…œ meta ํƒœ๊ทธ(og, twitter) ์ ์šฉ
    • meta[property="og:title"]
    • meta[property="og:description"]
    • meta[property="og:image"]: ์ œ๊ณต๋œ ์†Œ์…œ ํ”„๋ฆฌ๋ทฐ ์ด๋ฏธ์ง€๋ฅผ ์ ์šฉํ•˜๋˜, ์—†์„ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์ ์šฉํ•œ๋‹ค.
    • meta[property="og:site_name"]: ์›น ์‚ฌ์ดํŠธ์˜ ์ด๋ฆ„์œผ๋กœ, "CHNY Blog" ์ ์šฉ
    • meta[property="og:url"]: ํŽ˜์ด์ง€ ํ‘œ์ค€ URL๋กœ, https://chny.world ์ ์šฉ
    • meta[property="og:type"]: https://ogp.me/#types ์ฐธ๊ณ 
    • meta[name="twitter:title"]
    • meta[name="twitter:description"]
    • meta[name="twitter:image"]
    • meta[name="twitter:creator"]
  • robots.txt
  • sitemap.xml

์ฐธ๊ณ 

ํฌ์ŠคํŠธ์˜ ์„น์…˜ ์ œ๋ชฉ์— ์ธ๋ผ์ธ ์ฝ”๋“œ ๋ธ”๋ก์„ ์ ์šฉํ•  ๊ฒฝ์šฐ ํฐํŠธ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ž‘๊ฒŒ ๋ณด์ด๋Š” ํ˜„์ƒ

  • ์ธ๋ผ์ธ ์ฝ”๋“œ ๋ธ”๋ก์ด ์ ์šฉ๋œ ์ œ๋ชฉ์— ๋Œ€ํ•ด์„œ๋„ ์ •์ƒ ํฐํŠธ ํฌ๊ธฐ๋กœ ๋ Œ๋”๋งํ•˜๋„๋ก ๋ณ€๊ฒฝ

๋ฐฉ๋ฌธ์ž๋Š” ๋ชฉ๋ก ํ™”๋ฉด์—์„œ ํŠน์ • ํƒœ๊ทธ๋ฅผ ํด๋ฆญํ•˜์—ฌ ํ•ด๋‹น ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง„ ํฌ์ŠคํŠธ ๋ชฉ๋ก์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ชฉ๋ก ํ™”๋ฉด์—์„œ ๋“ฑ๋ก๋œ ํƒœ๊ทธ ๋ชฉ๋ก ํ™•์ธ
  • ํƒœ๊ทธ ์„ ํƒ ์‹œ ํ•ด๋‹น ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง„ ํฌ์ŠคํŠธ ๋ชฉ๋ก๋งŒ ํ•„ํ„ฐ๋งํ•˜์—ฌ ๋‚˜์—ด
  • ํƒœ๊ทธ๋ฅผ ์ค‘๋ณต ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

ํฌ์ŠคํŠธ ์ƒ์„ธ ํ™”๋ฉด UI ๊ฐœํŽธ

  • ํฌ์ŠคํŠธ ์ƒ์„ธ ํ™”๋ฉด์˜ ์ƒ๋‹จ ํ—ค๋” ์˜์—ญ์˜ ์ปค๋ฒ„ ์ด๋ฏธ์ง€์™€ ์ œ๋ชฉ ์˜์—ญ์„ ๋ถ„๋ฆฌ
  • ์ปค๋ฒ„ ์ด๋ฏธ์ง€ ์–‘ ์˜†์— ๋งˆ์ง„ ์„ค์ •

theme์˜ primary ์ƒ‰์ƒ ๋ณ€๊ฒฝ

  • light, dark ๋ชจ๋“œ์—์„œ ๊ฐ€๋…์„ฑ์ด ๋†’์€ ์ƒ‰์ƒ์œผ๋กœ primary color๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.
    • theme์˜ primary color๋ฅผ ์ข€ ๋” ๋ฐ์€ ํŒŒ๋ž‘์ƒ‰ ๊ณ„์—ด์ธ #2979ff๋กœ ๋ณ€๊ฒฝ
    • light, dark ๋ชจ๋“œ์—์„œ ๋™์ผํ•œ primary ์ƒ‰์ƒ ์ ์šฉ

Progressive Web App ์„ค์ •

  • display ์†์„ฑ์„ standalone์œผ๋กœ ์—…๋ฐ์ดํŠธ
  • ์˜คํ”„๋ผ์ธ ํ™˜๊ฒฝ ์ง€์›

MDX์—์„œ ๋ณด์—ฌ์ง€๋Š” ์ด๋ฏธ์ง€ ์„ค์ • ์ถ”๊ฐ€

  • gatsby-remark-images์— showCaptions: true๋กœ ์„ค์ •
  • figure์™€ figcaption์ด p์˜ ํ›„์† ์š”์†Œ๋กœ ์œ„์น˜ํ•˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝ
  • ์ด๋ฏธ์ง€์˜ max-width ๋ณ€๊ฒฝ
  • ์ด๋ฏธ์ง€ zoom ์„ค์ •
  • 'src/models'์—์„œ ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด๋ณด๋‚ด๊ธฐ ๋ฐฉ์‹ ๋ณ€๊ฒฝ

๋‹คํฌ ๋ชจ๋“œ์—์„œ ํ™”๋ฉด ์ƒˆ๋กœ๊ณ ์นจ ์‹œ ์ผ์‹œ์ ์œผ๋กœ ๊นœ๋นก์ด๋Š” ํ˜„์ƒ

  • ๋‹คํฌ ๋ชจ๋“œ์—์„œ ํ™”๋ฉด ์ƒˆ๋กœ๊ณ ์นจ ์‹œ ์ดˆ๊ธฐ์— light ๋ชจ๋“œ๋กœ ๋ Œ๋”๋ง๋œ ํ›„ ๋‹คํฌ ๋ชจ๋“œ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๊นœ๋นก์ž„ ํ˜„์ƒ ํ•ด๊ฒฐ

๋ฐฉ๋ฌธ์ž๋Š” ํฌ์ŠคํŠธ ์ƒ์„ธ ํ™”๋ฉด์—์„œ ๋” ๋ณด๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํฌ์ŠคํŠธ ๋ชฉ๋ก์„ ๋” ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

infinite ์Šคํฌ๋กค๋กœ ๊ตฌํ˜„ ์‹œ ๋ชจ๋“  ํฌ์ŠคํŠธ ๋ชฉ๋ก์„ ๋ถˆ๋Ÿฌ์™€์•ผ๋งŒ ํ•˜๋‹จ footer ์˜์—ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— '๋” ๋ณด๊ธฐ' ํ˜•ํƒœ๋กœ ๊ตฌํ˜„.

  • ๊ธฐ๋ณธ์ ์œผ๋กœ 10๊ฐœ์˜ ํฌ์ŠคํŠธ๋งŒ ๋…ธ์ถœํ•ด์•ผ ํ•œ๋‹ค.
  • ๋” ๋ณด๊ธฐ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ 10๊ฐœ์˜ ํฌ์ŠคํŠธ ๋ชฉ๋ก์„ ๋” ๋ถˆ๋Ÿฌ์™€์•ผ ํ•œ๋‹ค.
  • ๋ถˆ๋Ÿฌ์˜ฌ ๋ชฉ๋ก์ด ์—†์„ ์‹œ ๋” ๋ณด๊ธฐ ๋ฒ„ํŠผ์„ ๋…ธ์ถœํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
  • ๋” ๋ณด๊ธฐ ๋ฒ„ํŠผ ํด๋ฆญ ํ›„ ํฌ์ŠคํŠธ ๋ชฉ๋ก์„ ๋” ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์ „์˜ ๋งˆ์ง€๋ง‰ ํฌ์ŠคํŠธ๋กœ ํฌ์ปค์‹ฑ์„ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค.

PWA ์ง€์› ์ถ”๊ฐ€ ์„ค์ •

  • apple-mobile-web-app-title
  • apple-mobile-web-app-capable
  • apple-touch-startup-image: ๊ฐ ๋””๋ฐ”์ด์Šค ์‚ฌ์ด์ฆˆ์— ๋งž๋Š” ์Šคํ”Œ๋ž˜์‹œ ์ด๋ฏธ์ง€ ์ถ”๊ฐ€
  • application-name
  • notch ์˜์—ญ์˜ ๊ฒ€์€ ์ƒ‰ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ
  • ์•ฑ ์•„์ด์ฝ˜์˜ ๊ฒ€์€ ์ƒ‰ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ
  • ์•ฑ ์•„์ด์ฝ˜์— ๋‚˜ํƒ€๋‚˜๋Š” ํ…Œ๋‘๋ฆฌ ์„  ์ œ๊ฑฐ๋ฅผ ์œ„ํ•ด ํŒŒ๋น„์ฝ˜ ๋ณ€๊ฒฝ
  • ํ™ˆ ํ™”๋ฉด์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” ์•ฑ ์ด๋ฆ„์„ chny.world๋กœ ๋ณ€๊ฒฝ
[
  {
    name: 'apple-mobile-web-app-capable',
    content: 'yes',
  },
  {
    name: 'apple-mobile-web-app-status-bar-style',
    content: 'default',
  },
]

์ฐธ๊ณ 

๋ฐฉ๋ฌธ์ž๋Š” ๋ธ”๋กœ๊ทธ์— ๋ฐฉ๋ฌธํ–ˆ์„ ๋•Œ ์ œ์ผ ๋จผ์ € ํฌ์ŠคํŠธ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ฐ์Šคํฌํ†ฑ)

  • ํฌ์ŠคํŠธ ๋ชฉ๋ก ํ™”๋ฉด์— ๋ฐ์Šคํฌํ†ฑ ์Šคํฌ๋ฆฐ ๊ตฌ๊ฐ„์—์„œ ๊ณ ์ •ํ˜• ๋ ˆ์ด์•„์›ƒ ์ ์šฉ

aws Route53 & SSL ์„ค์ •

  • Route53 ๋„๋ฉ”์ธ ๊ตฌ๋งค ๋ฐ ์—ฐ๊ฒฐ
  • Netlify๋ฅผ ํ†ตํ•œ SSL ์„ค์ •

๋ฐฉ๋ฌธ์ž๋Š” ๋‚ด์šฉ์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํฌ์ŠคํŠธ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ชฉ๋ก ํ™”๋ฉด์— ๊ฒ€์ƒ‰ ํ•„๋“œ ์ถ”๊ฐ€
  • Algolia๋ฅผ ์ด์šฉํ•œ Full text search ์ ์šฉ
  • ๊ฒ€์ƒ‰์–ด ์ž…๋ ฅ์— debouncing ์ ์šฉ
  • ๋งค์นญ๋œ ๊ฐ€์ •ํ†ต์‹ ๋ฌธ ๋ชฉ๋ก์„ ๋‚˜์—ด

theme ์Šคํƒ€์ผ ๋ณ€๊ฒฝ

  • ๋ณ€๊ฒฝ๋œ Code syntax highlighting ์Šคํƒ€์ผ ์ ์šฉ
  • ๋‹คํฌ ๋ชจ๋“œ์—์„œ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•œ ๋ณ€๊ฒฝ๋œ primary ์ƒ‰์ƒ ์ ์šฉ
  • ์„ ํƒ๋œ ํ…์ŠคํŠธ ์˜์—ญ์— ๋Œ€ํ•ด primary.light ์ƒ‰์ƒ ์ ์šฉ

Google Analytics ์—ฐ๋™

  • GA ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์•ฑ ์ƒ์„ฑ
  • gatsby.config.js์— ga ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ด์šฉํ•˜์—ฌ Tracking ID ์ถ”๊ฐ€
    • .env.* ํŒŒ์ผ์„ ์ด์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •. git์—์„œ trackingํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•  ๊ฒƒ
    • dotenv ์„ค์ •์„ ํ†ตํ•˜์—ฌ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •
    • Netlify์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฐ’ ์ž…๋ ฅ

๋ฐฉ๋ฌธ์ž๋Š” ํฌ์ŠคํŠธ๊ฐ€ ๋๋‚˜๋Š” ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์—์„œ ๊ธ€ ์ž‘์„ฑ์ž์˜ ๊ฐ„๋žตํ•œ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํฌ์ŠคํŠธ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ๊ธ€ ์ž‘์„ฑ์ž ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์ ‘์† ์‹œ PWA ์ „ํ™˜ ์œ ๋„

  • Javascript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PWA๊ฐ€ ์•„๋‹Œ ํ˜•ํƒœ๋กœ ์ ‘์†ํ•œ ์œ ์ €์— ๋Œ€ํ•˜์—ฌ ์•ฑ ์„ค์น˜ ํ”„๋กฌํ”„ํŠธ ๋…ธ์ถœ

์ฐธ๊ณ 

๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ ํ™”๋ฉด ์ด๋™ ์‹œ ์ƒˆ๋กœ๊ณ ์นจ์ด ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ

ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ผ์šฐํŒ… ๋ฐฉ์‹์œผ๋กœ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ ํ™”๋ฉด ์‹œ์—๋„ ์ƒˆ๋กœ๊ณ ์นจ์ด ๋ฐœ์ƒํ•˜์—ฌ ๋‹คํฌ ๋ชจ๋“œ์—์„œ ๋ผ์ดํŠธ ๋ชจ๋“œ์˜ ์ž”์ƒ์ด ๋ณด์ด๋Š” ๋“ฑ์˜ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•จ

ํ™”๋ฉด ์ƒˆ๋กœ๊ณ ์นจ ์‹œ ์Šคํฌ๋กค ์œ„์น˜๋ฅผ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ดˆ๊ธฐํ™”๋˜๋Š” ํ˜„์ƒ

  • ํ™”๋ฉด์ด ์ƒˆ๋กœ๊ณ ์นจ๋˜์—ˆ์„ ๋•Œ ์Šคํฌ๋กค ์œ„์น˜๋ฅผ ๊ธฐ์–ตํ•˜๋„๋ก ๋ณ€๊ฒฝ

์ฐธ๊ณ 

  • gatsby-plugin-offline ์‚ฌ์šฉ ์œ ๋ฌด์— ๋”ฐ๋ผ ์ƒˆ๋กœ๊ณ ์นจ ๋™์ž‘์— ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒ
  • gatsbyjs/gatsby#12560 (gatsby๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์˜์กดํ•˜๊ณ  ์žˆ๋Š” scroll-behavior์™€ ์—ฐ๊ด€. gatsby-plugin-offline ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋„ ํ™”๋ฉด ์ƒˆ๋กœ๊ณ ์นจ์„ ๋น ๋ฅด๊ฒŒ ์žฌ์‹คํ–‰ํ•  ๊ฒฝ์šฐ ํ™”๋ฉด ์ตœ์ƒ๋‹จ์œผ๋กœ ์ด๋™๋˜๋Š” ํ˜„์ƒ ๋ฐœ์ƒ)

์ž์ž˜ํ•œ ์ˆ˜์ •

  • 'src/components/mdx/index.tsx'์˜ ํ™•์žฅ์ž๋ฅผ '.ts'๋กœ ๋ณ€๊ฒฝ
  • 'asynchronous-javascript.mdx'์— ์‚ฌ์šฉ๋œ ์ปค๋ฒ„ ์ด๋ฏธ์ง€ ๊ต์ฒด
  • 'gatsby-config.js'์—์„œ polyfill ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ indentation ์ˆ˜์ •
  • README ์—…๋ฐ์ดํŠธ
  • frontmatter์—์„œ createdAt โ†’ publishedAt์œผ๋กœ ๋ณ€๊ฒฝ
  • ๋ชจ๋ฐ”์ผ ๋ทฐํฌํŠธ UI ์ˆ˜์ •
    • ํ—ค๋” ์˜์—ญ์˜ ์ œ๋ชฉ ํฐํŠธ ํฌ๊ธฐ๋ฅผ 1.875rem์œผ๋กœ ๋ณ€๊ฒฝ
    • ์†Œ๊ฐœ ํ™”๋ฉด์—์„œ ๋ถ€์ œ๋ชฉ ํฐํŠธ ํฌ๊ธฐ๋ฅผ 1.75rem์œผ๋กœ ๋ณ€๊ฒฝ
    • ์†Œ๊ฐœ ํ™”๋ฉด์—์„œ ์ด๋ฆ„ ํฐํŠธ ํฌ๊ธฐ๋ฅผ 1.5rem์œผ๋กœ ๋ณ€๊ฒฝ
  • post-header.tsx โ†’ headline.tsx๋กœ ๋ณ€๊ฒฝ

๋ธ”๋กœ๊ทธ meta ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ

  • SNS ๊ณต์œ  ๋ฐ ๋ธŒ๋ผ์šฐ์ € ์ƒ๋‹จ ํƒ€์ดํ‹€์„ ๋‹ค์Œ ํ˜•์‹์— ๋”ฐ๋ผ ๋ณด์—ฌ์ง€๋„๋ก ๋ณ€๊ฒฝ
    • ํ™ˆ ํ™”๋ฉด: CHNY.WORLD
    • ๊ทธ ์™ธ: {์ œ๋ชฉ} | CHNY.WORLD

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.