μμ μ΄μλΆν° νμ κ΄λ¦¬κΉμ§ SSam Bμμ νλ²μ μ΄μνμΈμ
-
URL | www.ssambee.com
- β€οΈ νλ‘μ νΈ κ°μ
- β¨ μ£Όμ κΈ°λ₯
- π κΈ°μ μ€ν
- πΈ ν μκ°
- π λΉ λ₯Έ μμ
- π νλ‘μ νΈ κ΅¬μ‘°
- π κΆν λ° μΈμ¦
- π μ€ν¬λ¦½νΈ κ°μ΄λ
- π’ λ°°ν¬ λ° μ΄μ
"κ°μ¬μ 1μκ°μ 10λΆμΌλ‘" ννΈνλ λꡬλ₯Ό νλλ‘ ν΅ν©ν κ°μ¬ μ μ© μ¬μΈμ μ΄μ μ루μ
SsamBλ μ μλ κ³μμ μμ μΈμ λͺ¨λ μΌμ 묡묡ν λμμ£Όλ κ°μ₯ μ±μ€ν μ‘°λ ₯μ, κΏλ²(Bee) κ°μ μλΉμ€μ λλ€.
κ°μ¬κ° μμ μ€λΉ, μΆκ²°, μ±μ κ΄λ¦¬, μν΅μ μλͺ¨νλ 물리μ μκ°μ μ΅μννκ³ κ΅μ‘ λ³Έμ°μ κ°μΉμ μ§μ€ν μ μλλ‘ λλ κ°μ¬ μ μ© μ΄μ(Admin) μ루μ μ λλ€.
κΈ°μ‘΄μ ννΈνλ λꡬ(μμ , μΉ΄μΉ΄μ€ν‘, λ Έμ , κ΅¬κΈ μΊλ¦°λ λ±)λ₯Ό νλλ‘ ν΅ν©νμ¬ [μμ μμ± β μΆκ²° β μν/μ±μ β 곡μ§/μν΅] μΌλ‘ μ΄μ΄μ§λ κ°μ¬μ λ°μΌλ¦¬ μν¬νλ‘μ°λ₯Ό μ΅μ νν©λλ€.
- π 1μΈ κ°μ¬: λͺ¨λ κ΄λ¦¬λ₯Ό νΌμ ν΄μΌ νλ ν¨μ¨ μ€μ¬ κ°μ¬
- π« λν νμ ν: 체κ³μ μΈ μ 무 λΆλ΄κ³Ό κΈ°λ‘ κ³΅μ κ° νμν ν
- π μ΄μ μ‘°κ΅: λΉ λ₯΄κ³ μ νν μ 무 μνκ³Ό λ³΄κ³ κ° νμν μ‘°κ΅
| β‘ Fast | π Integrated | π‘οΈ Reliable |
|---|---|---|
| λΉ λ₯Έ μ λ ₯κ³Ό νμΈ | λΆμ°λ λ°μ΄ν°μ ν΅ν© | μ ννκ³ ν¬λͺ ν κΈ°λ‘ |
| 1~2νμ ν΄λ¦μΌλ‘ μ€λμ λͺ¨λ μ΄μ μ²λ¦¬ |
λ°-νμ-νλΆλͺ¨ μ 보λ₯Ό νλμ νλ¦μΌλ‘ μ°κ²° |
μλ΄ λ° ν΄λ μ λμμ μν λ°μ΄ν° λ¬΄κ²°μ± ν보 |
- λ°(Class) & μΌμ : μμΌ/μκ° μ€μ μ μμ μΈμ μλ μμ±
- μΆκ²° κ΄λ¦¬: μμ μ΄λ ₯μ΄ λ¨λ ν¬λͺ ν μΆκ²° μμ€ν
- μν/μ±μ : μ μ κΈ°λ° μ¬μν(ν΄λ¦¬λ) λμμ μλ λΆλ₯
- 곡μ§/μν΅: λμλ³ λ°μ‘ κΈ°λ‘ κ΄λ¦¬ λ° νμλΌμΈ κΈ°λ° Q&A
- λ©μΈ λλ©:
/
κ°μ¬/μ‘°κ΅ (Educators)
- λ‘κ·ΈμΈ:
/educators/login - κ°μ¬ νμκ°μ
:
/educators/instructor-register - μ‘°κ΅ νμκ°μ
:
/educators/assistant-register
νμ/νλΆλͺ¨ (Learners)
- λ‘κ·ΈμΈ:
/learners/login - νμκ°μ
:
/learners/register
| κΈ°λ₯ | λΌμ°νΈ | μ€λͺ |
|---|---|---|
| π§© ν | /educators |
λ©μΈ λμ보λ |
| π€ νλ‘ν | /educators/profile |
κ°μΈ μ 보 κ΄λ¦¬ |
| π₯ νμ κ΄λ¦¬ | /educators/students |
μκ°μ μ 보 λ° μΆκ²° κ΄λ¦¬ |
| π μμ κ΄λ¦¬ | /educators/lectures |
κ°μ μμ±, μμ , μ‘°ν |
| π μΌμ κ΄λ¦¬ | /educators/schedules |
μμ μΌμ λ° μΊλ¦°λ |
| π¬ μν΅ | /educators/communication |
곡μ§μ¬ν μμ±, λ¬Έμ λ΅λ³ |
| π€ μ‘°κ΅ κ΄λ¦¬ | /educators/assistants |
μ‘°κ΅ κΆν λ° μ 무 κ΄λ¦¬ |
| π μν/리ν¬νΈ | /educators/exams |
νκ° λ° μ±μ κ΄λ¦¬ |
| π μλ£μ€ | /educators/materials |
νμ΅ μλ£ μ λ‘λ λ° κ³΅μ |
| κΈ°λ₯ | λΌμ°νΈ | μ€λͺ |
|---|---|---|
| π§© λ©μΈ λμ보λ | /learners |
λ©μΈ λμ보λ |
| π€ νλ‘ν | /learners/profile |
κ°μΈ μ 보 κ΄λ¦¬ |
| π λμ κ°μ | /learners/lectures |
μκ° μ€μΈ κ°μ λ° μμΈ μ 보 |
| π¬ μν΅ | /learners/communication |
곡μ§μ¬ν νμΈ, λ¬ΈμκΈ μμ± |
- μ‘°κ΅ μΉμΈ λκΈ°:
/pending-approval
| π λ°μ°½κΈ° | μ΄μ 리 | μκ²½λ―Ό | κΉμ€κΈ° |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| PM & νλ‘ νΈ | νλ‘ νΈ | λ°±μλ | λ°±μλ & λ°°ν¬ |
νλ‘μ νΈ μ€νμ μν΄ λ€μ λ²μ μ΄ νμν©λλ€:
| λꡬ | λ²μ | μ€μ νμΌ |
|---|---|---|
| Node.js | 24.13.0 |
.nvmrc, package.json#engines |
| pnpm | 10.28.0 |
package.json#packageManager |
# 1. μμ‘΄μ± μ€μΉ
pnpm install
# 2. νκ²½ λ³μ μ€μ
cp .env.example .env.local
# 3. Git hooks μ€μ
pnpm run prepare
# 4. κ°λ° μλ² μ€ν
pnpm devκ°λ° μλ²κ° μ€νλλ©΄ http://localhost:3000μμ νμΈν μ μμ΅λλ€.
.env.local νμΌμ λ€μ νκ²½ λ³μλ₯Ό μ€μ ν΄μ£ΌμΈμ:
# API μλν¬μΈνΈ
NEXT_PUBLIC_API_BASE_URL= # κ°μ¬/μ‘°κ΅μ© API
NEXT_PUBLIC_API_BASE_URL_SVC= # νμ/νλΆλͺ¨μ© API
# Sentry (μ νμ¬ν)
NEXT_PUBLIC_SENTRY_DSN=
SENTRY_AUTH_TOKEN=src/
βββ app/ # Next.js App Router
β βββ (auth)/ # μΈμ¦ κ΄λ ¨ λΌμ°νΈ
β βββ educators/ # κ°μ¬/μ‘°κ΅ λΌμ°νΈ
β βββ learners/ # νμ/νλΆλͺ¨ λΌμ°νΈ
β βββ _components/ # νμ΄μ§λ³ μ»΄ν¬λνΈ
βββ components/ # κ³΅μ© μ»΄ν¬λνΈ
β βββ ui/ # shadcn/ui μ»΄ν¬λνΈ
βββ services/ # API ν΄λΌμ΄μΈνΈ λ° λλ©μΈ λ‘μ§
βββ providers/ # React Context Providers
βββ stores/ # Zustand μν κ΄λ¦¬
βββ hooks/ # 컀μ€ν
ν
βββ types/ # TypeScript νμ
μ μ
βββ validation/ # Zod μ€ν€λ§
βββ utils/ # μ νΈλ¦¬ν° ν¨μ
βββ constants/ # μμ μ μ
| λλ ν 리 | μν |
|---|---|
src/app |
λΌμ°ν , νμ΄μ§, λ μ΄μμ, λ©νλ°μ΄ν°, μλ¬ μ²λ¦¬ |
src/components |
μ¬μ¬μ© κ°λ₯ν UI μ»΄ν¬λνΈ |
src/services |
Axios ν΄λΌμ΄μΈνΈ + λλ©μΈλ³ API νΈμΆ + Mapper |
src/providers |
React Query, Auth, Modal, Breadcrumb λ± Provider |
src/stores |
Zustand κΈ°λ° ν΄λΌμ΄μΈνΈ μν κ΄λ¦¬ |
src/hooks |
μ¬μ¬μ© κ°λ₯ν 컀μ€ν ν |
src/types |
κ³΅ν΅ νμ μ μ |
src/validation |
Zod μ€ν€λ§ λ° νΌ κ²μ¦ |
SSam Bλ URL κΈ°λ°μΌλ‘ μ¬μ©μ μν μ ꡬλΆν©λλ€:
| URL ν¨ν΄ | μν | μ€λͺ |
|---|---|---|
/educators/* |
MGMT |
κ°μ¬(INSTRUCTOR) λ° μ‘°κ΅(ASSISTANT) |
/learners/* |
SVC |
νμ(STUDENT) λ° νλΆλͺ¨(PARENT) |
- μΈμ κ΄λ¦¬: μΏ ν€ κΈ°λ° μΈμ
- API ν΅μ : μν λ³ λ€λ₯Έ Base URL μ¬μ©
- κ°μ¬/μ‘°κ΅:
NEXT_PUBLIC_API_BASE_URL - νμ/νλΆλͺ¨:
NEXT_PUBLIC_API_BASE_URL_SVC
- κ°μ¬/μ‘°κ΅:
μ‘°κ΅(ASSISTANT)λ κ°μ ν λ€μ 쑰건μ λ§μ‘±ν΄μΌ λμ보λμ μ κ·Όν μ μμ΅λλ€:
signStatusκ°SIGNEDμνμ¬μΌ ν¨- 쑰건 λ―ΈμΆ©μ‘± μ
/pending-approvalνμ΄μ§λ‘ μλ 리λ€μ΄λ νΈ
pnpm dev # κ°λ° μλ² μ€ν (http://localhost:3000)
pnpm build # νλ‘λμ
λΉλ
pnpm start # νλ‘λμ
μλ² μ€ν# Linting
pnpm lint # ESLint μ€ν
pnpm lint:fix # ESLint μλ μμ
# Formatting
pnpm format # Prettier ν¬λ§·ν
μ μ©
pnpm format:check # Prettier 체ν¬λ§ μν
# Type Checking
pnpm type-check # TypeScript νμ
체ν¬pnpm test # Jest ν
μ€νΈ μ€νμ΄ νλ‘μ νΈλ Vercel λ°°ν¬λ₯Ό μ μ λ‘ κ΅¬μ±λμ΄ μμ΅λλ€.
μλ¬ λͺ¨λν°λ§μ μν΄ Sentryκ° ν΅ν©λμ΄ μμ΅λλ€:
- μ€μ νμΌ:
next.config.tsμμwithSentryConfigμ¬μ© - ν΄λΌμ΄μΈνΈ μ΄κΈ°ν:
src/instrumentation-client.ts - Tunnel Route:
/monitoring(κ΄κ³ μ°¨λ¨ μ°ν)
Vercel λμ보λμμ λ€μ νκ²½ λ³μλ₯Ό μ€μ ν΄μ£ΌμΈμ:
NEXT_PUBLIC_API_BASE_URL
NEXT_PUBLIC_API_BASE_URL_SVC
NEXT_PUBLIC_SENTRY_DSN
SENTRY_AUTH_TOKEN
SENTRY_ORG
SENTRY_PROJECTMade with β€οΈ by SSam B Team





