Altsis νκ΅ μ 보 μμ€ν
(School Information System)μ κ°λ°μλ₯Ό μν μ’
ν© κ°μ΄λμ
λλ€. μ΄ λ¬Έμλ νλ‘μ νΈμ μλ‘ ν©λ₯νλ κ°λ°μλΆν° κΈ°μ‘΄ κ°λ°μκΉμ§ λͺ¨λλ₯Ό λμμΌλ‘ ν©λλ€.
λ¬Έμ
μ€λͺ
κ°λ° νκ²½ μ€μ
νμ λꡬ μ€μΉ, μ μ₯μ ν΄λ‘ , νκ²½ λ³μ μ€μ , λ‘컬 μλ² μ€ν
νλ‘μ νΈ κ΅¬μ‘°
μ 체 λλ ν 리 νΈλ¦¬, λ°±μλ/νλ‘ νΈμλ ꡬ쑰 μμΈ μ€λͺ
νλ‘ νΈμλ κ°λ° κ°μ΄λ
React + TypeScript κΈ°λ° νλ‘ νΈμλ μν€ν
μ², λΌμ°ν
, μν κ΄λ¦¬, API νΈμΆ, ν
λ§ μμ€ν
λ°±μλ κ°λ° κ°μ΄λ
Express.js REST API, κ³μΈ΅ ꡬ쑰, λͺ¨λΈ/컨νΈλ‘€λ¬/μλΉμ€ μμ±λ², λλ²κΉ
νλ‘μΈμ€
μ½λ© μ€νμΌ κ°μ΄λ
λͺ
λͺ
κ·μΉ, TypeScript κ·μΉ, Prettier/Linter μ€μ , Airbnb Style Guide
ν
μ€νΈ
Jest κΈ°λ° ν
μ€νΈ μ€ν, μμ± κ°μ΄λ, λλ²κΉ
λ°©λ²
곡μ κ°μ΄λμ ν¬ν¨λκΈ° μ Β·λ°μ μ€κ³ λ¬Έμμ
λλ€.
κΈ°μ
λ²μ
μ©λ
React
18.3.x
UI λΌμ΄λΈλ¬λ¦¬
TypeScript
4.9.x
μ μ νμ
κ²μ¬
React Router
6.x
SPA λΌμ°ν
Zustand
4.x
κ²½λ μν κ΄λ¦¬ (μλν°)
SCSS Modules
-
μ»΄ν¬λνΈ μ€μ½ν μ€νμΌλ§
Axios
0.27.x
HTTP ν΄λΌμ΄μΈνΈ
Socket.IO Client
4.x
μ€μκ° ν΅μ
κΈ°μ
λ²μ
μ©λ
Express.js
4.21.x
REST API μλ²
Mongoose
6.x
MongoDB ODM
Passport
0.6.x
μΈμ¦ (Local, Google)
Redis
4.x
μΈμ
μ μ₯μ
Socket.IO
4.x
WebSocket μλ²
AWS S3
-
νμΌ μ μ₯μ
Winston
3.x
λ‘κΉ
Jest
29.x
ν
μ€νΈ νλ μμν¬
κΈ°μ
μ©λ
MongoDB
λ©μΈ λ°μ΄ν°λ² μ΄μ€ (λ©ν° λ°μ΄ν°λ² μ΄μ€ ꡬ쑰)
Redis
μΈμ
μ μ₯μ, μΊμ±
μμ€ν
μν€ν
μ² κ°μ
[ν΄λΌμ΄μΈνΈ (React SPA)]
|
| HTTP / WebSocket
v
[Express.js μλ²]
| | |
v v v
[MongoDB] [Redis] [AWS S3]
(λ°μ΄ν°) (μΈμ
) (νμΌ)
Altsisλ λ©ν° ν
λμ(Multi-Tenancy) ꡬ쑰λ₯Ό μ¬μ©ν©λλ€. κ° μμΉ΄λ°λ―Έ(νμ/κ΅μ‘κΈ°κ΄)λ λ
립λ MongoDB λ°μ΄ν°λ² μ΄μ€λ₯Ό κ°μ§λ©°, conn[academyId].model() ν¨ν΄μΌλ‘ μ κ·Όν©λλ€.
μμ€ν
μ λ€μκ³Ό κ°μ κΆν λ 벨μ μ§μν©λλ€:
κΆν
μ€λͺ
μ κ·Ό λ²μ
owner
μμ€ν
μμ μ
μ 체 μμΉ΄λ°λ―Έ κ΄λ¦¬
admin
μμΉ΄λ°λ―Έ κ΄λ¦¬μ
μμΉ΄λ°λ―Έ λ΄ μ 체 κ΄λ¦¬
manager
λ§€λμ
νκ΅/νκΈ° κ΄λ¦¬
teacher
κ΅μ¬
μμ
κ°μ€, κ°μκ³νμ, νκ°
student
νμ
μκ°μ μ², μμ
μ°Έμ¬
μμΉ΄λ°λ―Έ(Academy) : μ΅μμ μ‘°μ§ λ¨μ (νμ/κ΅μ‘κΈ°κ΄)
νκ΅(School) : μμΉ΄λ°λ―Έ νμμ νκ΅ λ¨μ
νκΈ°(Season) : νκ΅μ νλ
λ/νκΈ° λ¨μ, κ΅κ³Όλͺ©/μκ°ν/μμ/κΆν μ€μ ν¬ν¨
λ±λ‘(Registration) : μ¬μ©μμ νκΈ°μ μ°κ²° (μν : teacher/student)
κ°μκ³νμ(Syllabus) : κ΅μ¬κ° κ°μ€νλ μμ
μ 보
μκ°(Enrollment) : νμμ μμ
μκ° κΈ°λ‘
μμ(Form) : κ΄λ¦¬μκ° μ μνλ λ¬Έμ μμ (μκ°ν, κ°μκ³νμ, νκ° λ±)
μΊλ¦°λ(Calendar) : νμ¬ μΌμ κ΄λ¦¬ (μλ μ
λ ₯ + μλ λκΈ°ν)
κ²μν(Board) : νκ΅ λ¨μ 곡μ§/μμ κ²μν
μ±ν
(Chat) : μ€μκ° λ©μμ§
κ°λ° νκ²½ μ€μ λΆν° μμνμ¬ λ‘컬 κ°λ° νκ²½μ ꡬμΆν©λλ€.
νλ‘μ νΈ κ΅¬μ‘° λ₯Ό μ°Έκ³ νμ¬ μ½λλ² μ΄μ€μ μ 체μ μΈ λ μ΄μμμ νμ
ν©λλ€.
λ΄λΉ μμμ λ°λΌ νλ‘ νΈμλ λλ λ°±μλ κ°μ΄λλ₯Ό μμ§ν©λλ€.
μ½λ© μ€νμΌ μ μ€μνμ¬ μΌκ΄λ μ½λλ₯Ό μμ±ν©λλ€.
ν
μ€νΈ κ°μ΄λμ λ°λΌ λ³κ²½ μ¬νμ κ²μ¦ν©λλ€.
λ¬Έμ μ μ§λ³΄μ 체ν¬λ¦¬μ€νΈ
κΈ°λ₯Β·APIΒ·UXλ₯Ό λ°κΏ λ 곡μ λ¬Έμ(documentation/)κ° μ½λμ μ΄κΈλμ§ μλλ‘ μλλ₯Ό νμΈν©λλ€.