-
Notifications
You must be signed in to change notification settings - Fork 2
Home
- ν΄λΉ νλ‘μ νΈμ 첫 λͺ©νλ λ¨κΈ°κ° μμ μλΉμ€λ₯Ό μ 곡νλ κ²μ λλ€.
- λλ¬Έμ, λ©ν λ§μ νμνλ€κ³ μκ°νλ μ΅μ κΈ°λ₯μ λͺ©νλ‘ν©λλ€.
- μ΅μ κΈ°λ₯ μ΄ν, κΈ°λ₯ νμ₯ λν νμνκΈ° λλ¬Έμ 'νμ₯ κ°λ₯ν ꡬ쑰' λ₯Ό μ€κ³ν΄μΌν©λλ€.
- 첫 κ°λ°μΈλ ₯μΈ @sungjpar @gulee μ΄μΈμ λ€λ₯Έ μΈλ ₯μ΄ μ€λλΌλ
λ체 κ°λ₯ν
νλ‘μ νΈλ₯Ό λ§λ€μ΄μΌν©λλ€.
- λͺ¨λ μ μ λ λ©ν κ° λ μ μμ΅λλ€.
- λ©ν λ κ°μ νλ‘νμ λΆμ¬ λ°μ΅λλ€.
- λ©ν μ νλ‘νμλ κ°μμ λΆμΌλ₯Ό ν΄μνκ·Έλ‘ ννν μ μμ΅λλ€.
- λ©μΈ νμ΄μ§μμ DEVELOP, HOBBY λ μΉ΄ν κ³ λ¦¬λ‘ ν¬κ² λΆλ₯ν μ μμ΅λλ€.
- λ©ν°λ λ©ν μκ² λ©ν λ§μ μμ½ν μ μμ΅λλ€.
- μλλ κ³ λ € μ€μΈ μΆκ° κΈ°λ₯μ¬νλ€μ λλ€.
- λ©ν λ§ μμ½ μλ¦Ό, νΌλλ°± μμ² λ± μλ¦Ό μλΉμ€
- Slack botμ μ΄μ©νλ κ²μ΄ κ°μ₯ ν©λ¦¬μ μ΄λ©°, κΆν νλ μ΄μ μλ emailμ ν΅ν μλ¦Όμ κ³ λ €νκ³ μμ.
- μ΄μ°½κΈ°μ λλ€ μμ λλ μ΄μμκ° μ§μ λ°κ±°λ (μ§μ μ¬λ μλ¦Ό...), λ©ν°κ° λ©ν μκ² slack messageλ‘ μμ²νλλ‘ κΆμ
- λ©ν λ§ μκ° μ§μ
- 42 Polar μμ μ¬μ©νμλ λ©ν λ§ μκ°λλ³ μμ½μ ꡬν (μλ¦Ό μλΉμ€ μ΄νμ λ±μ₯νλ κ²μ΄ μ’μ보μ λλ€.)
- μ΄μ 42 ꡬμ±μ μ μ
- μ΄κΈ°μ ꡬ쑰λ 42 λ΄λΆ ꡬμ±μλ§ μ¬μ©ν μ μλλ‘ μμ±ν κ²μ λλ€.
- μ΄ν, μλΉμ€κ° νμ±νλλ€λ©΄ μ·¨μ μ ν ꡬμ±μλ€κ³Όλ λΏμ μ μλ μλΉμ€λ‘ λ°μ νμμΌλ©΄ ν©λλ€.
- μ΄λ₯Ό μν΄μ 42 κ³μ μ κΆνμ΄ μλ μ μ λν κ°μ μ΄ κ°λ₯νλλ‘ κ΅¬μ‘°λ₯Ό λ³κ²½ν΄μΌν©λλ€.
- μκΈ° μκ° κΈ μλν° μ§μ
- μ΄κΈ° ꡬνμμλ μκΈ° μκ°μ λν΄μ ν μ€νΈλ§ ꡬμ±νλλ‘ κΆμ₯ν κ²μ λλ€. λλ¬Έμ νλ €ν ꡬμ±μ΄ λΆκ°λ₯ν©λλ€.
- μ΄νμλ λ΄λΆμ μλν°λ₯Ό νμ¬νκ³ , κΈ, κ·Έλ¦Ό, μμ λͺ¨λλ₯Ό μμ©ν μ μλλ‘ λ³κ²½ν΄μΌν©λλ€.
- νλ‘ν μ¬μ§ λ³κ²½ κ°λ₯
- μ΄κΈ° ꡬνμμλ intra profile μ νμ©λλ μ΄λ―Έμ§λ₯Ό κ·Έλλ‘ μ¬μ©ν κ²μ λλ€.
- μ΄ν μ¬μ©μκ° μνλ profile image λ₯Ό μ¬μ©ν μ μλλ‘ μ΄λ―Έμ§ μλ² κ΅¬μ± λ° μμ κ°λ₯νλλ‘ λ³κ²½ν΄μΌν©λλ€.
manito 42μ DB ꡬ쑰λ μλ ERD Cloud λ₯Ό ν΅ν΄μ λ³΄μ€ μ μμ΅λλ€.
https://www.erdcloud.com/d/L8n7bayanfnsxNkmm
- λͺ¨λ μ μ μ μ 보λ₯Ό λ΄λ ν μ΄λΈμ λλ€. κ°μ λ μ μ λ λͺ¨λ ν΄λΉ ν μ΄λΈμ λ μ½λλ‘ μΆκ°λ©λλ€.
-
email, nickname, profile_image
μ 42 intraμ λμΌνκ² μ¬μ©λλ©°, μμ ν μ μμ΅λλ€.- λ΄λΆ μλΉμ€μ΄κΈ° λλ¬Έμ λ°μν μ μλ νΌλμ λν΄μ μ€μ΄κΈ° μν¨μ λλ€.
-
profile_image
μ κ²½μ° μΆν μμ κ°λ₯ μ¬λΆμ λν΄ κ²ν ν κ²μ λλ€.
-
is_mentor
λ₯Ό ν΅ν΄ ν΄λΉ μ μ κ° λ©ν μ μν μ νλμ§ μλμ§ νλ³ν©λλ€. is_mentor κ° νμ±νλ μ μ λ λ©ν μ© νλ‘νμ΄ μμ±λ©λλ€. -
mentor_profiles
μ΄ λ³λμ ν μ΄λΈλ‘ ꡬμ±λλ μ΄μ μ€ νλλ, μ κ·ν μ΄μΈμλ μ΄ν λ©ν λ§ μΉ΄ν κ³ λ¦¬λ³ λ©ν° νλ‘νμ μΌλμ λκ³ μκΈ° λλ¬Έμ λλ€. -
role
μ κ²½μ° μ΄μμλ₯Ό νλ³νκΈ° μν μ©λμ λλ€.enum UserRole { ADMIN = 'ADMIN', USER = 'USER', }
- λͺ¨λ μ μ λ λ©ν κ° λ μ μμ΅λλ€. λ©ν κ° λ μ μ λ
mentor_profiles
μ μ λ μ½λκ° μΆκ°λ©λλ€. - λ³ΈμΈμ μ§§κ² μκ°νλ
short_description
(νλ‘ν μΉ΄λ λ ΈμΆμ©) - μ‘°κΈ λ μ₯λ¬ΈμΌλ‘ μκ°ν μ μλ
description
μ΄ μμ΅λλ€.
- λ©ν λ§ μ΄ν λ©ν°κ° λ©ν μκ² μμ±νλ νΌλλ°±μ λλ€.
- λ©ν°λ λ©ν μκ² λ©ν λ§ νκΈ°λ₯Ό μμ±ν μ μμΌλ©°, μ΄λ
content
μ κΈ΄ ν μ€νΈλ‘ μ μ₯λ©λλ€. - λ©ν μ λν νμ λν μ μ₯λλ©°, 0~5 μ μΌλ‘ λΆμ¬ν©λλ€.
- λ©ν λ§ μ΄ν λ©ν κ° λ©ν°μκ² μμ±νλ νΌλλ°±μ λλ€.
- λ©ν λ λ©ν°μκ² λ©ν λ§ νκΈ°λ₯Ό μμ±ν μ μμ΅λλ€.
- λ¨μν ν΄λΉ λ©ν λ§μ λν νμ λ§ λ¨κΉλλ€. λ§μ°¬κ°μ§λ‘ 0~5 μ μΌλ‘ λΆμ¬λ©λλ€.
- λ©ν λ§μ μ±κ²©μ ꡬλΆνκΈ° μν΄ μ‘΄μ¬ν©λλ€.
-
mentor_profiles
,reservations
μ ν΄λΉ νλ‘ν, μμ½μ λν΄μ μ±κ²©μ λΆμ¬νλ μν μ ν©λλ€.
-
λ©ν λ§ μ μ²/μ±μ¬μ νμ©λλ ν μ΄λΈμ λλ€.
-
λ©ν°λ λ©ν μ νλ‘νμ ν΅ν΄μ λ©ν λ§μ μ μ²ν μ μμ΅λλ€.
-
λ©ν λ§μ μκ° μ μ½μ΄ λ°λ‘ μμ΅λλ€.
ReservationStatus { REQUEST = 'REQUEST', //λ©ν°μ μ μ²μν ACCEPT = 'ACCEPT', //λ©ν μ μλ½μν CANCEL = 'CANCEL', //λ©ν μ κ±°μ , λ©ν°μ μ μ²μ·¨μ, MENTEE_FEEDBACK = 'MENTEE_FEEDBACK', //λ©ν°κ° νΌλλ°±μ λ¨κΈ΄ μν DONE = 'DONE' //λ©ν κ° νΌλλ°±λ¨κΈ°κ³ λ©ν λ§μ΄ λλ μν }
-
λ©ν λ§ μμ½μμ μμ² λ©μμ§λ₯Ό μ λ¬ν μ μμΌλ©° μ΄λ
request_message
μ κΈ΄ ν μ€νΈλ‘ μ μ₯λ©λλ€. -
μ΄ν λ°μ΄ν° λΆλ₯λ₯Ό μν΄
category
hashtag
λ₯Ό λ°λμreservation
μμ λͺ μν΄μΌν©λλ€.
- λ°μ΄ν° λΆλ₯λ₯Ό μν ν° λΆλ₯μ λλ€.
- μλΉμ€ μ΄κΈ°μλ DEVELOP, HOBBY λ κ°μ§μ μΉ΄ν κ³ λ¦¬λ§ μ‘΄μ¬ν μμ μ΄λ©°, μ΄ν λ μΆκ°λ μ μμ΅λλ€.
manito 42μ ORMμ Prismaλ₯Ό νμ©νκ³ μμ΅λλ€.
- μ΅κ·Ό TypeORM κ³Ό npm downloadsκ° λΉλ±ν ORM μ΄λ©°, Documentationμ΄ νλ₯νμ¬ λ§€λ ₯μ μΌλ‘ λκΌμ΅λλ€.
- μ΄λ¬ν μ΄μ μμ TypeORM κ³Όμ λΉκ΅λ₯Ό μν΄(νμ΅ μ©λκ° ν½λλ€.) μ±ννμμ΅λλ€.
manito 42μ API-SERVER λ μλ μ 곡λ λͺ μΈλ₯Ό κΈ°λ°μΌλ‘ μμ±λμ΄μμ΅λλ€.
Swagger UI λ₯Ό ν΅ν΄μ νμΈν΄λ³΄μΈμ.
https://manito42.github.io/api-docs/
- κ°λ°μ© VPC, λ°°ν¬μ© VPC ꡬλΆλμ΄μμ΅λλ€.
- κ°λ°μ© VPC μμλ NAT μΈμ€ν΄μ€λ₯Ό μ§μ ꡬμΆνμ¬ μ¬μ©νλ κ² μΈμ λ€λ₯Έ κ²μ μμ (λΉμ© μ κ°μ μν¨μ λλ€.)
- μ£Όμ μΈμ€ν΄μ€λ€μ Private subnet μ μ‘΄μ¬ν©λλ€. λ°λΌμ μΈλΆμμ SSH μ μ λ±μ μν΄μλ Bastion host λ₯Ό κ±°μ³ μ μν΄μΌν©λλ€.
- Github action + CodeDeploy + S3 Bucket μ¬μ© μ€μ λλ€.
- λ°°ν¬ κ³Όμ μ λλ΅ μλμ κ°μ΅λλ€.
- Github action -> S3 Upload -> CodeDeploy -> Blue/Green Deploying..
- κ΄λ ¨ Documentation
- νμ¬λ RDS νλλ§ μ¬μ©νκ³ μμ΅λλ€.(Replication μ΄λ μΆκ° RDS μΈμ€ν΄μ€λ μ‘΄μ¬νμ§ μμ΅λλ€.)
- HTTPS -> HTTP λ° Auto Scaling / μμ μ± / CD μ μν΄μ ALBλ₯Ό μ¬μ©νκ³ μμ΅λλ€.
- API μλ²μ λ‘κ·Έ μμμ μ μ₯μ μν΄ EFS λ₯Ό λ§μ΄νΈνμ¬ μ¬μ©νκ³ μμ΅λλ€.
.
βββ prisma
βββ src
βΒ Β βββ common
βΒ Β βΒ Β βββ decorators
βΒ Β βΒ Β βββ enums
βΒ Β βΒ Β βββ filters
βΒ Β βΒ Β βββ guards
βΒ Β βΒ Β βββ interceptors
βΒ Β βΒ Β βββ interfaces
βΒ Β βΒ Β βββ middlewares
βΒ Β βΒ Β βββ pipes
βΒ Β βββ config
βΒ Β βββ database
βΒ Β βΒ Β βββ factories
βΒ Β βΒ Β βββ seeders
βΒ Β βΒ Β βββ services
βΒ Β βββ models
βΒ Β β βββ category
βΒ Β β βΒ Β βββ dto
βΒ Β β βΒ Β βΒ Β βββ request
βΒ Β β βΒ Β βΒ Β βββ response
βΒ Β β βΒ Β βββ queries
βΒ Β β βββ ...
β βββ modules
βΒ Β β βββ auth
βΒ Β β βββ search
βΒ Β β βββ home
βΒ Β β βββ ...
βββ test
-
common
μλ νλ‘μ νΈ μ λ°μ μ¬μ©λλ μμλ€μ΄ μμΉν©λλ€.
-
config
μλ νλ‘μ νΈ λ΄μμ μ¬μ©λλ environment variable μ κ΄λ¦¬νλ configuration module λ€μ΄ μμΉν©λλ€.
-
database
μλ λ°μ΄ν°λ² μ΄μ€μ κ΄λ ¨λ μμλ€μ΄ μμΉν©λλ€. -
prisma.service
,seeder
factory
λ±μ΄ κ·Έ μμμ λλ€.
-
models
μλ DB model μ μ μΆλ ₯κ³Ό κ΄λ ¨λ μμλ€, μ΄ λͺ¨λΈλ€μ μ μ΄νλservice
μ μΈλΆ api μν μ μ± μμ§λcontroller
κ° μμΉν©λλ€. - λ΄λΆμ μΌλ‘ μ¬μ©νλ
dto
μλrequest
response
λ₯Ό ꡬλΆν©λλ€. μ΄λ controllerμμ λ€μ΄μ€κ³ λκ°λ λ°μ΄ν° νμμ λν΄μ κ·μ ν©λλ€.- μ΄λ ν λͺ¨λμμλ λμΌνκ² μλν©λλ€.
- μ€λ³΅λλ μ½λλ₯Ό λ°©μ§νκΈ° μν΄μ db 쿼리μ μ¬μ©λλ
select
,where
λ±μ μ²λ¦¬νλ λΆλΆμqueries
μ μ μ₯λ©λλ€.
-
modules
μλ μ΄μΈμ λͺ¨λμ΄ μμΉν©λλ€./auth
/search
/home
κ³Ό κ°μ΄ models λ€μ νμ©νμ§λ§ μΈλΆ API μ λ±λ‘λ κ²½μ°μλ μ΄μ κ°μ΄modules
μμ λ³λλ‘ κ΄λ¦¬ν©λλ€.