Skip to content

hkjang/jacal

Repository files navigation

Jacal

ν”„λ‘œμ νŠΈ κ°œμš”

Jacal은 일정, 할일, μŠ΅κ΄€ 좔적, νŒ€ ν˜‘μ—…, 생산성 뢄석을 ν•˜λ‚˜λ‘œ ν†΅ν•©ν•œ μ˜¬μΈμ› 생산성 ν”Œλž«νΌμž…λ‹ˆλ‹€.

핡심 κΈ°λŠ₯

  • πŸ—£οΈ μžμ—°μ–΄ μž…λ ₯: ν•œ μ€„λ‘œ 일정/할일 μžλ™ λΆ„λ₯˜ 및 생성
  • πŸ€– AI νŒŒμ‹±: OpenAI/Ollamaλ₯Ό ν™œμš©ν•œ 슀마트 μžμ—°μ–΄ 처리
  • πŸ“… μΊ˜λ¦°λ” λ·°: μ›”κ°„/μ£Όκ°„ μΊ˜λ¦°λ” 보기 지원
  • βœ… 할일 관리: μš°μ„ μˆœμœ„, μ˜ˆμƒ μ†Œμš” μ‹œκ°„, μƒνƒœ 관리
  • 🎯 μŠ΅κ΄€ 좔적: 일일/μ£Όκ°„ μŠ΅κ΄€ 관리 및 μ™„λ£Œ 기둝
  • πŸ‘₯ νŒ€ ν˜‘μ—…: νŒ€λ³„ 곡유 일정 및 λŒ“κΈ€ κΈ°λŠ₯
  • ⚑ 집쀑 타이머: 포λͺ¨λ„λ‘œ νƒ€μ΄λ¨Έλ‘œ 집쀑λ ₯ ν–₯상
  • πŸ“Š 생산성 뢄석: 일일 생산성 좔적 및 μ‹œκ°ν™”
  • πŸ” λ³΄μ•ˆ 인증: JWT 기반 μ•ˆμ „ν•œ 인증 μ‹œμŠ€ν…œ
  • 🌐 λ‹€κ΅­μ–΄ 지원: ν•œκ΅­μ–΄/μ˜μ–΄ 지원 (i18next)
  • ⌨️ ν‚€λ³΄λ“œ 단좕킀: 마우슀 없이 λΉ λ₯Έ μž‘μ—… (Ctrl+K λ“±)
  • πŸ“§ 이메일 톡합: POP3λ₯Ό ν†΅ν•œ 이메일 μžλ™ νŒŒμ‹±
  • πŸ”— μ›Ήν›… μ‹œμŠ€ν…œ: μ™ΈλΆ€ μ‹œμŠ€ν…œ 연동
  • πŸ› οΈ κ΄€λ¦¬μž νŒ¨λ„: 전체 μ‹œμŠ€ν…œ 관리 및 λͺ¨λ‹ˆν„°λ§

기술 μŠ€νƒ

Backend

  • Runtime: Node.js + Express + TypeScript
  • Database: PostgreSQL + Prisma ORM
  • AI/NLP: OpenAI API, Ollama (선택적)
  • Authentication: JWT + bcrypt
  • Email: POP3 (node-pop3), Nodemailer
  • Schedule: node-cron
  • Validation: Zod
  • Calendar: Google Calendar API

Frontend

  • Framework: React 19 + TypeScript + Vite
  • State: TanStack Query (React Query)
  • HTTP Client: Axios
  • i18n: i18next, react-i18next
  • Charts: Recharts
  • Styling: Modern CSS (CSS Variables)

Infrastructure

  • Container: Docker Compose
  • Database: PostgreSQL 15 Alpine

μ‹œμž‘ν•˜κΈ°

Prerequisites

  • Node.js v18 이상
  • Docker & Docker Compose (ꢌμž₯)
  • OpenAI API Key (선택적 - Ollama μ‚¬μš© κ°€λŠ₯)

μ„€μΉ˜ 및 μ‹€ν–‰

방법 1: Docker Compose (ꢌμž₯)

  1. λ ˆν¬μ§€ν† λ¦¬ 클둠
git clone <repo-url>
cd jacal
  1. PostgreSQL μ‹€ν–‰
docker-compose up -d
  1. μ˜μ‘΄μ„± μ„€μΉ˜
npm install
  1. ν™˜κ²½ λ³€μˆ˜ μ„€μ •

apps/api/.env 파일 생성:

PORT=3000
DATABASE_URL="postgresql://jacal:jacal123@localhost:5432/jacal?schema=public"
JWT_SECRET=your-super-secret-key-change-in-production
OPENAI_API_KEY=your-openai-api-key-here  # 선택적
  1. λ°μ΄ν„°λ² μ΄μŠ€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜
cd apps/api
npx prisma migrate dev
npx prisma generate
  1. κ΄€λ¦¬μž 계정 생성 (선택적)
npm run create-admin
  1. λ°±μ—”λ“œ μ„œλ²„ μ‹€ν–‰
npm run dev
  1. ν”„λ‘ νŠΈμ—”λ“œ μ‹€ν–‰ (μƒˆ 터미널)
cd apps/web
npm run dev
  1. λΈŒλΌμš°μ €μ—μ„œ 접속

방법 2: 둜컬 PostgreSQL μ‚¬μš©

μœ„ κ³Όμ •μ—μ„œ 2번 λŒ€μ‹  둜컬 PostgreSQL을 μ‚¬μš©ν•˜κ³ , DATABASE_URL을 적절히 μˆ˜μ •ν•˜μ„Έμš”.

μ£Όμš” κΈ°λŠ₯ 상세

1. μžμ—°μ–΄ 처리 (NLU)

ν•œ μ€„μ˜ μžμ—°μ–΄ μž…λ ₯으둜 μ΄λ²€νŠΈλ‚˜ 할일을 μžλ™ μƒμ„±ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ:

  • "내일 μ˜€ν›„ 3μ‹œ νŒ€ λ―ΈνŒ… 2μ‹œκ°„"
  • "λ‹€μŒ μ£Ό κΈˆμš”μΌκΉŒμ§€ λ³΄κ³ μ„œ μž‘μ„±"
  • "맀일 μ•„μΉ¨ 9μ‹œ μš΄λ™ν•˜κΈ°"

μ—”λ“œν¬μΈνŠΈ: POST /api/nlu/parse

2. μΊ˜λ¦°λ” λ·°

  • μ›”κ°„ 보기: μ›” μ „μ²΄μ˜ 일정 ν•œλˆˆμ— νŒŒμ•…
  • μ£Όκ°„ 보기: μ‹œκ°„λŒ€λ³„ 상세 일정 확인
  • κ΄€λ¦¬μž λͺ¨λ“œ: 전체 μ‚¬μš©μžμ˜ 일정 쑰회 κ°€λŠ₯

3. μŠ΅κ΄€ 좔적

  • 일일/μ£Όκ°„ μŠ΅κ΄€ 생성 및 관리
  • μ™„λ£Œ 기둝 및 달성λ₯  확인
  • 색상/μ•„μ΄μ½˜μœΌλ‘œ μ‹œκ°μ  ꡬ뢄

API:

  • GET /api/habits - μŠ΅κ΄€ λͺ©λ‘
  • POST /api/habits - μŠ΅κ΄€ 생성
  • POST /api/habits/:id/log - μ™„λ£Œ 기둝
  • GET /api/habits/:id/stats - 톡계 쑰회

4. νŒ€ ν˜‘μ—…

  • νŒ€ 생성 및 멀버 관리 (Owner/Admin/Member μ—­ν• )
  • 곡유 이벀트 생성 및 λŒ“κΈ€
  • νŒ€μ› κ°„ 일정 쑰율

API:

  • GET /api/teams - νŒ€ λͺ©λ‘
  • POST /api/teams - νŒ€ 생성
  • POST /api/teams/:id/events - 곡유 이벀트 생성
  • POST /api/teams/events/:id/comments - λŒ“κΈ€ μž‘μ„±

5. 생산성 뢄석

  • 일일 집쀑 μ‹œκ°„ 좔적
  • μ™„λ£Œν•œ 할일 톡계
  • λ―ΈνŒ… μ‹œκ°„ 뢄석
  • 생산성 점수 계산

API:

  • GET /api/analytics/dashboard - λŒ€μ‹œλ³΄λ“œ 데이터
  • GET /api/analytics/productivity - 생산성 좔이

6. κ΄€λ¦¬μž νŒ¨λ„

κ΄€λ¦¬μž μ‚¬μš©μžλŠ” λ‹€μŒ κΈ°λŠ₯에 μ ‘κ·Ό κ°€λŠ₯:

  • μ‹œμŠ€ν…œ 톡계: μ‚¬μš©μž/이벀트/할일 집계
  • μ‚¬μš©μž 관리: 전체 μ‚¬μš©μž 쑰회/μˆ˜μ •/μ‚­μ œ, POP3 μ„€μ •
  • μ½˜ν…μΈ  관리: 전체 할일/이벀트/μŠ΅κ΄€/νŒ€ 관리
  • λ°μ΄ν„°λ² μ΄μŠ€: 톡계 및 λ°±μ—… 관리
  • μ„€μ •: μ‚¬μ΄νŠΈ 이름, URL, μ–Έμ–΄, κ°€μž… ν—ˆμš© λ“±
  • μ›Ήν›… 관리: μ›Ήν›… CRUD
  • 톡합 관리: μ™ΈλΆ€ μ„œλΉ„μŠ€ 연동
  • 이메일 μ„€μ •: SMTP μ„€μ •

7. μ‚¬μš©μž μ„€μ •

각 μ‚¬μš©μžλŠ” 개인 μ„€μ • κ°€λŠ₯:

  • Ollama μ„€μ •: OpenAI λŒ€μ‹  둜컬 LLM μ‚¬μš©
  • POP3 μ„€μ •: 이메일 μžλ™ νŒŒμ‹± (제λͺ©/λ³Έλ¬Έμ—μ„œ 할일 생성)
  • μ›Ήν›… μ„€μ •: 개인 μ›Ήν›… URL 및 컬럼 λ§€ν•‘

8. ν‚€λ³΄λ“œ 단좕킀

  • Ctrl+K: λͺ…λ Ή νŒ”λ ˆνŠΈ (λΉ λ₯Έ μž‘μ—…)
  • N: μƒˆ 이벀트
  • T: μƒˆ 할일
  • D: λŒ€μ‹œλ³΄λ“œ
  • C: μΊ˜λ¦°λ”
  • H: μŠ΅κ΄€ 좔적
  • M: νŒ€ λ·°
  • S: μ„€μ •
  • ?: 단좕킀 도움말

API μ—”λ“œν¬μΈνŠΈ

인증

  • POST /api/auth/register - νšŒμ›κ°€μž…
  • POST /api/auth/login - 둜그인
  • GET /api/auth/me - ν˜„μž¬ μ‚¬μš©μž 정보

할일 (Tasks)

  • GET /api/tasks - 할일 λͺ©λ‘
  • POST /api/tasks - 할일 생성
  • PUT /api/tasks/:id - 할일 μˆ˜μ •
  • DELETE /api/tasks/:id - 할일 μ‚­μ œ

이벀트 (Events)

  • GET /api/events - 이벀트 λͺ©λ‘
  • GET /api/events/all - 전체 이벀트 (κ΄€λ¦¬μž)
  • POST /api/events - 이벀트 생성
  • PUT /api/events/:id - 이벀트 μˆ˜μ •
  • DELETE /api/events/:id - 이벀트 μ‚­μ œ

μŠ΅κ΄€ (Habits)

  • GET /api/habits - μŠ΅κ΄€ λͺ©λ‘
  • POST /api/habits - μŠ΅κ΄€ 생성
  • PUT /api/habits/:id - μŠ΅κ΄€ μˆ˜μ •
  • DELETE /api/habits/:id - μŠ΅κ΄€ μ‚­μ œ
  • POST /api/habits/:id/log - μ™„λ£Œ 기둝
  • GET /api/habits/:id/stats - 톡계

νŒ€ (Teams)

  • GET /api/teams - λ‚΄ νŒ€ λͺ©λ‘
  • POST /api/teams - νŒ€ 생성
  • PUT /api/teams/:id - νŒ€ μˆ˜μ •
  • DELETE /api/teams/:id - νŒ€ μ‚­μ œ
  • POST /api/teams/:id/members - 멀버 μΆ”κ°€
  • DELETE /api/teams/:id/members/:userId - 멀버 제거
  • GET /api/teams/:id/events - 곡유 이벀트 λͺ©λ‘
  • POST /api/teams/:id/events - 곡유 이벀트 생성
  • POST /api/teams/events/:id/comments - λŒ“κΈ€ μž‘μ„±

뢄석 (Analytics)

  • GET /api/analytics/dashboard - λŒ€μ‹œλ³΄λ“œ
  • GET /api/analytics/productivity - 생산성 좔이

μ„€μ • (Settings)

  • GET /api/settings - λ‚΄ μ„€μ •
  • PUT /api/settings - μ„€μ • μ—…λ°μ΄νŠΈ

μΊ˜λ¦°λ”

  • GET /api/calendar - μΊ˜λ¦°λ” 이벀트

집쀑 타이머

  • POST /api/focus/session - 집쀑 μ„Έμ…˜ 기둝

μžμ—°μ–΄ 처리 (NLU)

  • POST /api/nlu/parse - μžμ—°μ–΄ νŒŒμ‹± 및 μžλ™ 생성

κ΄€λ¦¬μž API

  • GET /api/admin/stats - μ‹œμŠ€ν…œ 톡계
  • GET /api/admin/users - μ‚¬μš©μž λͺ©λ‘
  • PUT /api/admin/users/:id - μ‚¬μš©μž μˆ˜μ •
  • DELETE /api/admin/users/:id - μ‚¬μš©μž μ‚­μ œ
  • PUT /api/admin/users/:id/settings - μ‚¬μš©μž μ„€μ • μˆ˜μ •
  • GET /api/admin/content/tasks - 전체 할일
  • GET /api/admin/content/habits - 전체 μŠ΅κ΄€
  • GET /api/admin/content/teams - 전체 νŒ€
  • DELETE /api/admin/content/:type/:id - μ½˜ν…μΈ  μ‚­μ œ
  • GET /api/admin/database/stats - λ°μ΄ν„°λ² μ΄μŠ€ 톡계
  • POST /api/admin/database/backup - λ°±μ—… 생성
  • GET /api/admin/database/backups - λ°±μ—… λͺ©λ‘
  • GET /api/admin/settings - μ•± μ„€μ •
  • PUT /api/admin/settings - μ•± μ„€μ • μ—…λ°μ΄νŠΈ
  • GET /api/admin/webhooks - μ›Ήν›… λͺ©λ‘
  • POST /api/admin/webhooks - μ›Ήν›… 생성
  • PUT /api/admin/webhooks/:id - μ›Ήν›… μˆ˜μ •
  • DELETE /api/admin/webhooks/:id - μ›Ήν›… μ‚­μ œ
  • GET /api/admin/integrations - 톡합 λͺ©λ‘
  • PUT /api/admin/integrations/:name - 톡합 μ—…λ°μ΄νŠΈ
  • GET /api/admin/email - 이메일 μ„€μ •
  • PUT /api/admin/email - 이메일 μ„€μ • μ—…λ°μ΄νŠΈ

ν”„λ‘œμ νŠΈ ꡬ쑰

jacal/
β”œβ”€β”€ apps/
β”‚   β”œβ”€β”€ api/                          # λ°±μ—”λ“œ
β”‚   β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”‚   β”œβ”€β”€ routes/               # API 라우트
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ admin/            # κ΄€λ¦¬μž 라우트
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ auth.ts           # 인증
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ tasks.ts          # 할일
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ events.ts         # 이벀트
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ habits.ts         # μŠ΅κ΄€
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ teams.ts          # νŒ€
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ analytics.ts      # 뢄석
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ settings.ts       # μ„€μ •
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ calendar.ts       # μΊ˜λ¦°λ”
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ focus.ts          # 집쀑 타이머
β”‚   β”‚   β”‚   β”‚   └── nlu.ts            # μžμ—°μ–΄ 처리
β”‚   β”‚   β”‚   β”œβ”€β”€ services/             # λΉ„μ¦ˆλ‹ˆμŠ€ 둜직
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ nlu.service.ts    # NLU μ„œλΉ„μŠ€
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ webhook.service.ts # μ›Ήν›… μ„œλΉ„μŠ€
β”‚   β”‚   β”‚   β”‚   └── email.service.ts  # 이메일 μ„œλΉ„μŠ€
β”‚   β”‚   β”‚   β”œβ”€β”€ middleware/           # 미듀웨어
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ auth.ts           # 인증 미듀웨어
β”‚   β”‚   β”‚   β”‚   └── admin.ts          # κ΄€λ¦¬μž 미듀웨어
β”‚   β”‚   β”‚   β”œβ”€β”€ lib/                  # μœ ν‹Έλ¦¬ν‹°
β”‚   β”‚   β”‚   └── index.ts              # μ—”νŠΈλ¦¬ 포인트
β”‚   β”‚   β”œβ”€β”€ prisma/
β”‚   β”‚   β”‚   └── schema.prisma         # λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ
β”‚   β”‚   β”œβ”€β”€ scripts/
β”‚   β”‚   β”‚   └── create-admin.ts       # κ΄€λ¦¬μž 생성 슀크립트
β”‚   β”‚   └── package.json
β”‚   └── web/                          # ν”„λ‘ νŠΈμ—”λ“œ
β”‚       β”œβ”€β”€ src/
β”‚       β”‚   β”œβ”€β”€ components/           # React μ»΄ν¬λ„ŒνŠΈ
β”‚       β”‚   β”‚   β”œβ”€β”€ admin/            # κ΄€λ¦¬μž μ»΄ν¬λ„ŒνŠΈ
β”‚       β”‚   β”‚   β”œβ”€β”€ settings/         # μ„€μ • μ»΄ν¬λ„ŒνŠΈ
β”‚       β”‚   β”‚   β”œβ”€β”€ Dashboard.tsx     # λŒ€μ‹œλ³΄λ“œ
β”‚       β”‚   β”‚   β”œβ”€β”€ Calendar.tsx      # μΊ˜λ¦°λ”
β”‚       β”‚   β”‚   β”œβ”€β”€ HabitTracker.tsx  # μŠ΅κ΄€ 좔적
β”‚       β”‚   β”‚   β”œβ”€β”€ TeamView.tsx      # νŒ€ λ·°
β”‚       β”‚   β”‚   └── ...
β”‚       β”‚   β”œβ”€β”€ lib/                  # API ν΄λΌμ΄μ–ΈνŠΈ
β”‚       β”‚   β”‚   β”œβ”€β”€ api.ts            # κΈ°λ³Έ API
β”‚       β”‚   β”‚   β”œβ”€β”€ habitApi.ts       # μŠ΅κ΄€ API
β”‚       β”‚   β”‚   β”œβ”€β”€ teamApi.ts        # νŒ€ API
β”‚       β”‚   β”‚   β”œβ”€β”€ analyticsApi.ts   # 뢄석 API
β”‚       β”‚   β”‚   └── adminApi.ts       # κ΄€λ¦¬μž API
β”‚       β”‚   β”œβ”€β”€ i18n/                 # λ‹€κ΅­μ–΄
β”‚       β”‚   β”‚   β”œβ”€β”€ i18n.ts           # i18next μ„€μ •
β”‚       β”‚   β”‚   β”œβ”€β”€ ko.json           # ν•œκ΅­μ–΄
β”‚       β”‚   β”‚   └── en.json           # μ˜μ–΄
β”‚       β”‚   β”œβ”€β”€ App.tsx               # 메인 μ»΄ν¬λ„ŒνŠΈ
β”‚       β”‚   β”œβ”€β”€ index.css             # κΈ€λ‘œλ²Œ μŠ€νƒ€μΌ
β”‚       β”‚   └── main.tsx              # μ—”νŠΈλ¦¬ 포인트
β”‚       └── package.json
β”œβ”€β”€ docker-compose.yml                # Docker μ„€μ •
β”œβ”€β”€ package.json                      # 루트 νŒ¨ν‚€μ§€
└── README.md

λ°μ΄ν„°λ² μ΄μŠ€ λͺ¨λΈ

μ£Όμš” λͺ¨λΈ:

  • User: μ‚¬μš©μž (인증, κΆŒν•œ)
  • Task: 할일
  • Event: 이벀트
  • Habit: μŠ΅κ΄€
  • HabitLog: μŠ΅κ΄€ μ™„λ£Œ 기둝
  • Team: νŒ€
  • TeamMember: νŒ€ 멀버
  • SharedEvent: 곡유 이벀트
  • Comment: λŒ“κΈ€
  • Tag: νƒœκ·Έ
  • Analytics: 생산성 뢄석 데이터
  • UserSettings: μ‚¬μš©μž μ„€μ • (Ollama, POP3)
  • WebhookConfig: μ›Ήν›… μ„€μ •
  • ConnectedAccount: μ™ΈλΆ€ 계정 연동 (Google Calendar λ“±)
  • RecurringRule: 반볡 κ·œμΉ™
  • Reminder: μ•Œλ¦Ό
  • ProcessedEmail: 처리된 이메일 기둝
  • AppSettings: μ•± μ „μ—­ μ„€μ •
  • Webhook: κ΄€λ¦¬μž μ›Ήν›…
  • Integration: 톡합 μ„€μ •
  • EmailSettings: 이메일 μ„€μ •
  • BackupRecord: λ°±μ—… 기둝

개발 및 배포

개발 λͺ¨λ“œ

# λ°±μ—”λ“œ 개발 μ„œλ²„ (hot reload)
cd apps/api
npm run dev

# ν”„λ‘ νŠΈμ—”λ“œ 개발 μ„œλ²„ (hot reload)
cd apps/web
npm run dev

ν”„λ‘œλ•μ…˜ λΉŒλ“œ

# λ°±μ—”λ“œ λΉŒλ“œ
cd apps/api
npm run build
npm start

# ν”„λ‘ νŠΈμ—”λ“œ λΉŒλ“œ
cd apps/web
npm run build
npm run preview

λ°μ΄ν„°λ² μ΄μŠ€ 관리

# λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 생성
npx prisma migrate dev --name migration_name

# Prisma ν΄λΌμ΄μ–ΈνŠΈ μž¬μƒμ„±
npx prisma generate

# Prisma Studio (GUI)
npx prisma studio

# κ΄€λ¦¬μž 계정 생성
npm run create-admin

ν™˜κ²½ λ³€μˆ˜

Backend (apps/api/.env)

# μ„œλ²„ μ„€μ •
PORT=3000
NODE_ENV=development

# λ°μ΄ν„°λ² μ΄μŠ€
DATABASE_URL="postgresql://jacal:jacal123@localhost:5432/jacal?schema=public"

# JWT 인증
JWT_SECRET=your-super-secret-key-change-in-production

# OpenAI (선택적)
OPENAI_API_KEY=sk-...

# Google Calendar (선택적)
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_REDIRECT_URI=http://localhost:3000/api/auth/google/callback

# SMTP (선택적 - 이메일 λ°œμ†‘μš©)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-app-password

κΈ°λŠ₯ λ‘œλ“œλ§΅

βœ… μ™„λ£Œλœ κΈ°λŠ₯

  • ν”„λ‘œμ νŠΈ 초기 μ„€μ •
  • PostgreSQL + Prisma μ„€μ •
  • JWT 인증 및 κΆŒν•œ 관리
  • 할일 CRUD
  • 이벀트 CRUD
  • μžμ—°μ–΄ 처리 (OpenAI/Ollama)
  • λ¦¬μ•‘νŠΈ UI κ΅¬ν˜„
  • μŠ΅κ΄€ 좔적 μ‹œμŠ€ν…œ
  • νŒ€ ν˜‘μ—… κΈ°λŠ₯
  • μΊ˜λ¦°λ” λ·° (μ›”κ°„/μ£Όκ°„)
  • 생산성 뢄석 λŒ€μ‹œλ³΄λ“œ
  • 집쀑 타이머
  • κ΄€λ¦¬μž νŒ¨λ„ (전체 관리)
  • λ‹€κ΅­μ–΄ 지원 (i18n)
  • ν‚€λ³΄λ“œ 단좕킀
  • POP3 이메일 톡합
  • μ›Ήν›… μ‹œμŠ€ν…œ
  • μ‚¬μš©μž μ„€μ •
  • Docker Compose μ„€μ •
  • νƒœκ·Έ μ‹œμŠ€ν…œ
  • 반볡 일정 지원
  • λŒ“κΈ€ κΈ°λŠ₯

🚧 μ§„ν–‰ 쀑 / κ³„νšλœ κΈ°λŠ₯

  • Google Calendar μ–‘λ°©ν–₯ 동기화
  • Outlook Calendar 연동
  • CalDAV 지원
  • ν‘Έμ‹œ μ•Œλ¦Ό (μ›Ή/λͺ¨λ°”일)
  • 이메일 μ•Œλ¦Ό
  • SMS μ•Œλ¦Ό
  • 슀마트 μŠ€μΌ€μ€„λ§ μ•Œκ³ λ¦¬μ¦˜
  • AI 기반 μ‹œκ°„ μΆ”μ²œ
  • λͺ¨λ°”일 μ•± (React Native)
  • 파일 첨뢀 κΈ°λŠ₯
  • νŒ€ μΊ˜λ¦°λ” 톡합 λ·°
  • λΉ„λ””μ˜€ 회의 톡합 (Zoom, Meet)
  • κ³ κΈ‰ 뢄석 및 리포트
  • 곡유 링크 생성
  • 이메일 μ΄ˆλŒ€ μ‹œμŠ€ν…œ

κΈ°μ—¬ 방법

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

λΌμ΄μ„ μŠ€

MIT License

문의

ν”„λ‘œμ νŠΈ κ΄€λ ¨ λ¬Έμ˜μ‚¬ν•­μ΄ μžˆμœΌμ‹œλ©΄ 이슈λ₯Ό μƒμ„±ν•΄μ£Όμ„Έμš”.

About

AI Calendar Todo List

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors