Git Product home page Git Product logo

connect-foundation / 2019-12 Goto Github PK

View Code? Open in Web Editor NEW
272.0 7.0 28.0 19.24 MB

๐ŸŽŸ ๊ธ‰์ฆํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์—๋„ ์•ˆ์ •์ ์ธ ์˜ˆ์•ฝ ์„œ๋น„์Šค, Atomic Pattern์„ ์ ์šฉํ•œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ, ์‹ค์šฉ์ ์ธ Testing์„ ์ฃผ์ œ๋กœ ํ•˜๋Š” ์ด๋ฒคํŠธ ์„œ๋น„์Šค

Home Page: https://www.bookus.kr

TypeScript 98.97% JavaScript 0.35% HTML 0.30% CSS 0.10% Dockerfile 0.28%
cypress supertest enzyme storybook docker nodejs express styled-components react atomic

2019-12's Issues

Base Component ์ž‘์„ฑ

Base Component๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ƒˆ๋กœ์šด Component๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ด๋ฅผ ํ™œ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•จ

  • Atom

    • Btn
    • Input
    • Icon
    • Label
    • Divider
  • Molecules

    • Card
    • IconBtn
  • Organisms

    • Footer
    • Header

front example layout ๊ตฌ์„ฑ

  • ๋กœ๊ทธ์ธ / ๋ฉ”์ธ
    • ๋กœ๊ทธ์ธ๊ณผ ๋ฉ”์ธ์˜ ๋ ˆ์ด์•„์›ƒ ๋จผ์ € ๊ตฌ์„ฑ ํ›„์—, ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ด์–ด์„œ ์ž‘์„ฑ.
    • Testing ์— ๋Œ€ํ•œ ๊ธธ๋ผ์žก์ด.

[5/4MD] EventDetailPage (+๋ฆฌํŒฉํ† ๋งing)

Page

์ด๋ฒคํŠธ ์ƒ์„ธ ํŽ˜์ด์ง€

Components

image

  • EventBannerContainer
    • BannerImg
    • DescContainer
      • Title
      • Location
      • Date
      • HostContainer
        • Img
        • Name

image

  • TicketBuyContainer
    • Title
    • Price
    • ParticipantCnt
    • BuyBtn

image

  • EventDesc

image

  • TicketList
    • TicketListLabel
    • TicketContainer
      • Price
      • Name
      • Desc
      • LeftCnt
      • LimitCntPerPerson
      • EndDate
      • ParticipantCnt

image

  • LocationContainer

    • Label
    • Place
    • Address
    • Desc
  • Refactoring

    • template / organisms ๋ถ„๋ฆฌ

LoginBtn (๋กœ๊ทธ์ธ ๋ฒ„ํŠผ)

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2019-11-11 แ„‹แ…ฉแ„’แ…ฎ 1 44 47

LoginBtn (๋กœ๊ทธ์ธ ๋ฒ„ํŠผ)

ํŽ˜์ด์ง€

๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ #17

์„ค๋ช…

  • ํด๋ฆญ ์‹œ, OAuth๊ณผ์ •์„ ๊ฑฐ์นœ ํ›„ ํ•ด๋‹น ์œ ์ €์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—
    • ์žˆ์œผ๋ฉด ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ (๋กœ๊ทธ์ธ)
    • ์—†์œผ๋ฉด ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๋กœ ์ด๋™ (ํšŒ์›๊ฐ€์ž…)

์Šคํ”„๋ฆฐํŠธ 1์ฃผ์ฐจ

์Šคํ”„๋ฆฐํŠธ 1์ฃผ์ฐจ

1์ธ๋‹น ํŽ˜์ด์ง€ ๋‹จ์œ„ ๊ฐœ๋ฐœ

1์ผ์ฐจ

  • Backlog ์ •๋ฆฌ
  • ๋””๋ ‰ํ† ๋ฆฌ / lint ๋“ฑ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ธํŒ…

2์ผ์ฐจ

  • DB ๊ตฌ์กฐ ์ž‘์„ฑ (migration + modeling)
  • API ๋ฌธ์„œ ์ž‘์„ฑ (Swagger.io)
  • Infra ํ™•์ • (์˜ˆ์•ฝ ์„œ๋ฒ„์— ๋Œ€ํ•œ redis ๊ฒ€์ฆ / FE ๋ฐฐํฌ ์ธํ”„๋ผ ํ™•์ •)
  • TEST ๊ตฌ์„ฑ
    • BE, FE ์— ๋Œ€ํ•œ ๋””๋ ‰ํ† ๋ฆฌ / branch ๋ณ„ ํ…Œ์ŠคํŒ…์— ๋Œ€ํ•œ config ์„ค์ •ํ•ด์•ผํ•จ
    • DB ํ…Œ์ŠคํŒ…์„ ์œ„ํ•œ Travis - BE ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ์กฐ์„ฑํ•ด์•ผํ•จ
  • front ๊ฐœ๋ฐœ ์‹œ์ž‘
    • ๋กœ๊ทธ์ธ / ๋ฉ”์ธ
      • ๋กœ๊ทธ์ธ๊ณผ ๋ฉ”์ธ์˜ ๋ ˆ์ด์•„์›ƒ ๋จผ์ € ๊ตฌ์„ฑ ํ›„์—, ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ด์–ด์„œ ์ž‘์„ฑ.
      • Testing ์— ๋Œ€ํ•œ ๊ธธ๋ผ์žก์ด.

3์ผ์ฐจ

  • 2์ผ์ฐจ ํ”„๋กœ์ ํŠธ ๋ฆฌ๋ทฐ
    • ๋ฏธํกํ•œ ๋ถ€๋ถ„ ์ถ”์ถœ / TEST ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ณต๋ถ€ ๋ฐ ๊ฒ€์ฆ
  • 2์ผ์ฐจ์—์„œ ๋ฏธ๋น„ํ–ˆ๋˜ Feature ์ด์–ด์„œ ๊ฐœ๋ฐœ
    • FE ๋ ˆ์ด์•„์›ƒ ์ž‘์„ฑ ์ด์–ด์„œ ์‹œ์ž‘
    • Backend API / DB ์ž‘์„ฑ ์™„๋ฃŒ์‹œ, ๊ฐœ๋ฐœ์‹œ์ž‘๊ณผ ํ•จ๊ป˜ Test ๊ฒ€์ฆํ•ด์•ผํ•จ.
  • backend ๊ฐœ๋ฐœ ์‹œ์ž‘
    • Frontend ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์šฐ์„  (๋กœ๊ทธ์ธ๊ณผ ๋ฉ”์ธํŽ˜์ด์ง€)
    • Oauth ๊ณต๋ถ€ feature ๋ฝ‘์•„๋‚ด๊ธฐ;

4์ผ์ฐจ: 19์‹œ ์ฝ”๋“œ ํ”„๋ฆฌ์ง•

  • 3์ผ์ฐจ ํ”„๋กœ์ ํŠธ ๋ฆฌ๋ทฐ
    • BE, FE ์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ฝ”๋“œ ๊ฒ€์ฆ
  • 3์ผ์ฐจ Feature ์ด์–ด์„œ ๊ฐœ๋ฐœ
    • ์ปดํฌ๋„ŒํŠธ์™€ ํ…Œ์ŠคํŒ…์— ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ๋“ค ๊ฐ€์ ธ์˜ค๊ธฐ
  • ๋ฐฐํฌ
    • Server-Master, Client-Master ์— PR ๋ฐ ๋ฐฐํฌ
    • CD ๊ตฌ์„ฑ์€ ์•„์ง ์•ˆ๋˜์–ด์žˆ๊ธฐ์— ์ผ๋‹จ ์ˆ˜๋™ ๋ฐฐํฌ

5์ผ์ฐจ: ๋ฐฐํฌ

  • ์ฝ”๋“œ๋ฆฌ๋ทฐ ๋ฐ›์„ ์ฝ”๋“œ ์ •๋ฆฌ
    • ์ด์•ผ๊ธฐํ•˜๊ธฐ (๊ทธ๋•Œ ๋ฝ‘ํžŒ๊ฑฐ ๋ณด๊ณ  ใ„ฑ)

๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ž‘์„ฑ

Logo (๋กœ๊ณ )

ํŽ˜์ด์ง€

๋กœ๊ทธ์ธ

์„ค๋ช…

  • BookUs! ๋กœ๊ณ 
  • ๋‹จ์ˆœ ๋กœ๊ณ 

LoginBtn (๋กœ๊ทธ์ธ ๋ฒ„ํŠผ)

ํŽ˜์ด์ง€

๋กœ๊ทธ์ธ ํŽ˜์ด์ง€

์„ค๋ช…

  • ํด๋ฆญ ์‹œ, OAuth๊ณผ์ •์„ ๊ฑฐ์นœ ํ›„ ํ•ด๋‹น ์œ ์ €์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—
  • ์žˆ์œผ๋ฉด ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ (๋กœ๊ทธ์ธ)
  • ์—†์œผ๋ฉด ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๋กœ ์ด๋™ (ํšŒ์›๊ฐ€์ž…)

๋„ค์ด๋ฒ„ ์ง€๋„ API

Component

NaverMapContainer (๋„ค์ด๋ฒ„ ์ง€๋„ API)

Screenshot

์Šคํฌ๋ฆฐ์ƒท 2019-11-18 ์˜ค์ „ 11 01 00

Page

#61

Explanation

์ฃผ์†Œ๋ฅผ ํ†ตํ•ด์„œ ๋„ค์ด๋ฒ„ ์ง€๋„์— ์œ„์น˜๋ฅผ ๋ณด์—ฌ์คŒ

์ „์—ญ ์Šคํƒ€์ผ ๋ฐ Theme ์„ค์ •

Explanation

  • Nomalize : CSS ์ดˆ๊ธฐํ™”
  • GlobalStyles : (*, body ... )์— ์ „์—ญ์ ์ธ ์Šคํƒ€์ผ ์„ค์ •
  • Theme : ์‚ฌ์ดํŠธ์— ์ ์šฉ๋˜๋Š” ํ…Œ๋งˆ ์Šคํƒ€์ผ

React App, Storybook์— ์ ์šฉ

HeaderContainer (๊ณตํ†ต ํ—ค๋”)

Component

HeaderContainer (๊ณตํ†ต ํ—ค๋”)

Screenshot

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2019-11-14 แ„‹แ…ฉแ„’แ…ฎ 3 24 03

Page

๊ณตํ†ต ํ—ค๋”

Explanation

  • ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ž‘์„ฑ
  • ๋กœ๊ทธ์ธ ์ƒํƒœ์— ๋”ฐ๋ฅธ ๋ถ„๊ธฐ๋Š” ๋˜์ง€ ์•Š๊ณ  ๋ ˆ์ด์•„์›ƒ๋งŒ ์กด์žฌ

[3/5MD]MainPage

Page

๋ฉ”์ธ ํŽ˜์ด์ง€

Components

image

  • MainBannerContainer
    • MainBannerBtn

image

  • EventCardGrid
  • EventCard
    • Img
    • Date
    • Title
    • HostName
    • Price

SignUpBtn (ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผ)

์Šคํฌ๋ฆฐ์ƒท 2019-11-11 ์˜คํ›„ 2 05 45

SignUpBtn (๋กœ๊ทธ์ธ ๋ฒ„ํŠผ)

ํŽ˜์ด์ง€

#19 SignUpPage

์„ค๋ช…

ํด๋ฆญ ์‹œ, SignUpPage ์— ์ž…๋ ฅ๋œ ๊ฐ’๋“ค์ด Validation ๋˜๋ฉด์„œ ํšŒ์›๊ฐ€์ž… api ๋ฅผ ํ˜ธ์ถœํ•จ.

์Šคํ† ๋ฆฌ๋ถ์—์„œ LogoBtn ์ปดํฌ๋„ŒํŠธ์˜ ์ด๋ฆ„์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ

์ˆ˜ํ–‰ ์ ˆ์ฐจ

์˜ค๋ฅ˜ ๋‚ด์šฉ

์Šคํ† ๋ฆฌ๋ถ ์ƒ์—์„œ LogoBtn ์ปดํฌ๋„ŒํŠธ์˜ ์ด๋ฆ„์ด Logo๋กœ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.
ํ™•์ธ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ธฐ๋Œ€ ๊ฒฐ๊ณผ

image

์ฐธ๊ณ (์Šคํฌ๋ฆฐ์ƒท ๋“ฑ)

image

์ปค๋ฐ‹์‹œ lint-staged ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ

Local

์ˆ˜ํ–‰ ์ ˆ์ฐจ

??

์˜ค๋ฅ˜ ๋‚ด์šฉ

commit ์‹œ lint ๋ฐ ํƒ€์ž… ์ฒดํฌ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (husky, lint-staged)
yarn lint ๋กœ ํ™•์ธํ•˜๋ฉด ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•จ์—๋„ ์ปค๋ฐ‹์ด ์ž‘๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Œ€ ๊ฒฐ๊ณผ

commit ์‹œ commitlint, eslint, prettier, ts type check ๊ฐ€ ๋ชจ๋‘ ์ž˜ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

์ฐธ๊ณ (์Šคํฌ๋ฆฐ์ƒท ๋“ฑ)

ModifyFormContainer (ํšŒ์›๊ฐ€์ž… ์ถ”๊ฐ€์ž…๋ ฅ ํผ)

์Šคํฌ๋ฆฐ์ƒท 2019-11-11 ์˜คํ›„ 2 07 52

ModifyFormContainer (๋กœ๊ทธ์ธ ๋ฒ„ํŠผ)

ํŽ˜์ด์ง€

#19 ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€

์„ค๋ช…

  • Lable ๊ณผ Inputbox๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ
  • ์ด๋ฉ”์ผ, ์„ฑ, ์ด๋ฆ„, ํœด๋Œ€ํฐ ๋ฒˆํ˜ธ ๋„ค๊ฐ€์ง€๊ฐ€ ๋งŒ๋“ค์–ด์ ธ์•ผ ํ•˜๋ฉฐ, ์ด๋ฉ”์ผ์˜ ๊ฒฝ์šฐ, Oauth ์—์„œ ๋„˜์–ด์˜จ ์ด๋ฉ”์ผ๋กœ ์“ฐ์—ฌ์ง€๊ณ , input์ด disabled ๋œ๋‹ค

Decorator ์‚ฌ์šฉ์‹œ typecheck๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•จ

ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ

๋กœ์ปฌ

์ˆ˜ํ–‰ ์ ˆ์ฐจ

Decorator ์— ๋Œ€ํ•œ ํŒŒ์ผ์„ ์ปค๋ฐ‹

์˜ค๋ฅ˜ ๋‚ด์šฉ

์ปค๋ฐ‹์‹œ type check ํ†ต๊ณผ ์‹คํŒจ
type check ๋ฅผ ํ•˜๋Š” tsc options ์— experimentalDecorators ๊ฐ€ ์—†์–ด์„œ ๋‚˜๋Š” ๊ฒƒ ๊ฐ™์Œ

๊ธฐ๋Œ€ ๊ฒฐ๊ณผ

์ปค๋ฐ‹์ด ์ž˜ ์ž‘๋™ํ•ด์•ผ ํ•จ

์ฐธ๊ณ (์Šคํฌ๋ฆฐ์ƒท ๋“ฑ)

์Šคํ† ๋ฆฌ๋ถ ํ™˜๊ฒฝ์„ค์ • (๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ ๋ณ€๊ฒฝ ๋ฐ ๋ถˆํ•„์š”ํ•œ addon ์ œ๊ฑฐ)

Explanation

  • ์Šคํ† ๋ฆฌ๋ถ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝ
    (BEFORE) sub directory stories ์— ์กด์žฌํ–ˆ์Œ
    (AFTER) ๊ฐ ์ปดํฌ๋„ŒํŠธ์™€ siblingํ•˜๊ฒŒ ์กด์žฌํ•˜๋„๋ก ์ˆ˜์ •
    แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2019-11-17 แ„‹แ…ฉแ„’แ…ฎ 6 51 08

  • addon

    • info์™€ ๊ธฐ๋Šฅ์ด ์ค‘๋ณต๋˜๋Š” story-source์ œ๊ฑฐ

Webpack alias ์„ค์ •ํ•˜๊ธฐ

Explanation

์ง€๊ธˆ Frontend ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ์ƒ ๋Ž์Šค๊ฐ€ ๋งค์šฐ ๊นŠ์Šต๋‹ˆ๋‹ค.
์•ž์œผ๋กœ๋„ ๊ณ„์†ํ•ด์„œ ๊นŠ์–ด์งˆ ๊ฒƒ ๊ฐ™์€๋ฐ,
์ด๋ฅผ Webpack์˜ alias ๊ฐ™์€ ์„ค์ •์„ ์ฐพ์•„์„œ ์„ค์ •ํ•˜๋ฉด
์ฝ”๋“œ์˜ ๊น”๋”ํ•จ๊ณผ ํŽธ๋ฆฌํ•จ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

GET /events ์ด๋ฒคํŠธ๋“ค ๊ฐ€์ ธ์˜ค๊ธฐ

Explanation

๋ฉ”์ธํŽ˜์ด์ง€์—์„œ ์ด๋ฒคํŠธ๋ฅผ ๋ณด์—ฌ์ค„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” API์ž„.

์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด์„œ Lazyloading(pagination) ๋˜ํ•œ ์ด API์—์„œ ๋™์ผํ•˜๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผํ•จ.

Logo (๋กœ๊ณ )

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2019-11-11 แ„‹แ…ฉแ„’แ…ฎ 1 43 58

Logo (๋กœ๊ณ )

ํŽ˜์ด์ง€

๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ #17

์„ค๋ช…

BookUs! ๋กœ๊ณ 
๋‹จ์ˆœ ๋กœ๊ณ 

Mock Data ๊ตฌ์„ฑ

Explanation

Festa ํด๋ก  ํ”„๋กœ์ ํŠธ์— ์“ฐ์ผ Mock Data๋ฅผ ๋งŒ๋“ฆ

Infra 1์ฐจ ํ™•์ •

(์˜ˆ์•ฝ ์„œ๋ฒ„์— ๋Œ€ํ•œ redis ๊ฒ€์ฆ / FE ๋ฐฐํฌ ์ธํ”„๋ผ ํ™•์ •)

TEST ํ™˜๊ฒฝ ๊ตฌ์„ฑ

Backend

  • BE, FE ์— ๋Œ€ํ•œ ๋””๋ ‰ํ† ๋ฆฌ / branch ๋ณ„ ํ…Œ์ŠคํŒ…์— ๋Œ€ํ•œ config ์„ค์ •ํ•ด์•ผํ•จ
  • DB ํ…Œ์ŠคํŒ…์„ ์œ„ํ•œ Travis - BE ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ์กฐ์„ฑํ•ด์•ผํ•จ

Frontend

  • Cypress script (React App์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ, Storybook์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ)

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.