UMC 9th Demoday ์๋ฐ๋ก๊ทธ BE ํ ๋ ํฌ์งํ ๋ฆฌ์ ๋๋ค.
- ์ฝ๋/์กฐํฌ์น - ์ธํ๋ 9th Node.js
- ์ง๋ค์ปค/๊น์ง - ์ธํ๋ 9th Node.js
- ์ค๋ฌด์ง/๊น์ฐฝ์ - ํ์๋ Erica 9th Node.js
- ์ธ๋ /ํ์ํ - ๋์๋ฏธ๋๋ 9th Node.js
- ์ง/์ต์์ฐ - ํ์ฑ๋ 9th Node.js
- Node.js & Express
- TypeScript
- Tsoa & OpenAPI 3.0
- MySQL
- Docker
- NginX
- Github Actions
- Git & Github
- Figma
- Notion
- Discord
- Postman
--dist //์ปดํ์ผ ๋ js ํ์ผ ํด๋
--src //์์ค์ฝ๋ ํด๋
--config //์๋ฒ ์ค์ ํ์ผ ํด๋
--middleware //์๋ฒ ๋ฏธ๋ค์จ์ด ํด๋
--controller //์ปจํธ๋กค๋ฌ ํด๋
--service //์๋น์ค ํด๋
--repository //๋ ํฌ์งํ ๋ฆฌ(DB ์ฐ๊ฒฐ) ํด๋
--routes //๋ผ์ฐํฐ ํด๋
--util //๊ธฐํ ์ ํธ ํ์ผ ํด๋
app.ts //๋ฉ์ธ ์๋ฒ ํ์ผ
๋ ํฌ์งํ ๋ฆฌ Git๊ณผ Github ์ฌ์ฉ์ ๋ํ ๊ท์น์ ๋๋ค.
- ์ปค๋ฐ ์ ๋์ฌ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ฌธ๊ตฌ ๋ช ์
- feat - ์ ๊ท ๊ธฐ๋ฅ ์ถ๊ฐ
- refactor - ์ฝ๋ ๋ฆฌํฉํ ๋ง
- fix - ๋ฒ๊ทธ ์์
- docs - ๋ฌธ์ ์์ ๋ฐ ์ถ๊ฐ
- ๊ดํธ ์์ ๋ณ๊ฒฝ๋๊ฑฐ๋ ์ถ๊ฐ๋ ํ์ผ ๋ช ์
- ์ปค๋ฐ ๋ฉ์ธ์ง๋ก ์์ธํ ์์ ๋ด์ฉ ์ค๋ช
//์์์
๋๋ค.
feat(app.ts): ๋ผ์ฐํฐ ์ค์ ์ถ๊ฐ
refactor(user.controller.ts): ํ์๊ฐ์
์ฝ๋ ๋ฆฌํฉํ ๋ง
fix(user.repository.ts): ํ์๊ฐ์
db ๋ก์ง ์์
docs(README.md): ๊น ๊ท์น ๋ด์ฉ ์ถ๊ฐ
1. ์๋ณธ ๋ ํฌ์งํ ๋ฆฌ ํฌํฌ
2. ํฌํฌ ๋ ํฌ์งํ ๋ฆฌ pull
3. ์๋ก์ด ์์
์ ๋ํ ์ด์ ์์ฑ
4. ์ด์์ ๋ํ ๋ธ๋์น ์์ฑ
5. ๋ก์ปฌ ๋ ํฌ์งํ ๋ฆฌ์์ ์์
ํ commit
6. ๋ก์ปฌ ๋ ํฌ์งํ ๋ฆฌ์์ ์๊ฒฉ ๋ ํฌ์งํ ๋ฆฌ๋ก push
7. pull request ์์ฑ
8. ๋ฆฌ๋ทฐ ํ ๋จธ์ง
- ๋ธ๋์น๋ช ์ ๋ค์๊ณผ ๊ฐ์ ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ๋ค.
- feat
- refactor
- fix
- docs
- ๋ธ๋์น๋ช ์ ํ์ฌ ์ด์๋ฒํธ๋ก ํ๋ค.
//์์์
๋๋ค.
feat/ALBA_5
refactor/ALBA_11
fix/ALBA_13
docs/ALBA_1
- Assignee๋ ์๊ธฐ ์์ , ๋ฆฌ๋ทฐ์ด๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๋ก ์ค์
- ํ์ฅ์ ์น์ธ ํน์ ๋ค๋ฅธ ์ฌ๋๋ค์ ๋ฆฌ๋ทฐ ์์ด ๊ฐ์ ๋จธ์ง ๊ธ์ง
- ๋ฐ๋์ ๋ชจ๋ ์ฌ๋๋ค์ Approve๋ฅผ ๋ฐ์ ํ์ ๋จธ์ง
- Pull Request ํ ํ๋ฆฟ์ ์์ธํ ์์ ๋ด์ฉ ๋ช ์
- Postman, Swagger ๋ฑ์ผ๋ก API ํ ์คํธํ ๋ด์ฉ ์คํฌ๋ฆฐ์ท ์ฒจ๋ถ
Google TypeScript Sytle Guide ์ฐธ๊ณ
https://google.github.io/styleguide/tsguide.html
- ํ์ผ๋ช ์ ์ ๋ถ ์๋ฌธ์๋ก ์ค์ . snake_case๋ก ์์ฑํ ๊ฒ
- ํจ์๋ช ์ smallCamelCase๋ก ์์ฑํ ๊ฒ
- ํด๋์ค๋ช ์ PascalCase๋ก ์์ฑํ ๊ฒ
- ์ธํฐํ์ด์ค, ํ์ ๋ช ์ PascalCase๋ก ์์ฑํ ๊ฒ
- ์์๋ช ์ UPPER_SNAKE_CASE๋ก ์์ฑํ ๊ฒ
- ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ์ ์ํ ๋์๋ ํด๋์ค๊ฐ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ ๊ฒ
interface Foo {
a: number;
b: string;
}
const foo: Foo = {
a: 123,
b: 'abc',
}
- any ํ์ ์ ๊ฐ๊ธ์ ์ด๋ฉด ์ฌ์ฉํ์ง ๋ง ๊ฒ.
- undefined๋ ๊ฐ๊ธ์ ์ด๋ฉด type์ ๋ช ์ํ์ง ๋ง ๊ฒ. ์ค์ ํ ๋น๋๋ ๊ณณ์ ์ถ๊ฐํ ๊ฒ.
- ๋ณ์, ์์ ์ ์ธ์ const, let ์ฌ์ฉ. var์ ์ฌ์ฉ ๊ธ์ง.
- ์ ๊ฐ ๊ตฌ๋ฌธ์ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ ๊ฒ(๊ฐ์ฒด/๋ฐฐ์ด ๋ณต์ฌ, ํฉ์ฒด ๋ฑ)
const foo = {
num: 1,
};
const foo2 = {
...foo,
num: 5,
};
const foo3 = {
num: 5,
...foo,
}
foo2.num === 5;
foo3.num === 1;
- ๊ฐ์ฒด ๋ถํด ํ ๋น์ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ ๊ฒ. ๊ธฐ๋ณธ๊ฐ๊ณผ ๊ฐ์ฒด ์์๋ left side์ ๋ช ์ํ ๊ฒ.
interface Options {
/** The number of times to do something. */
num?: number;
/** A string to do stuff to. */
str?: string;
}
function destructured({num, str = 'default'}: Options = {}) {}
- private static ๋ฉ์๋๋ ์ง์ํ ๊ฒ. ๊ฐ์ ํ์ผ์์ ๋ก์ปฌ ํจ์๋ก ๊ตฌํํ ๊ฒ.
- primitive ํ์ ์ wrapper ๊ฐ์ฒด๋ก ์ ์ธํ์ง ์์ ๊ฒ. (String, Number ๋ฑ)