diff --git a/README.md b/README.md new file mode 100644 index 0000000..d698560 --- /dev/null +++ b/README.md @@ -0,0 +1,92 @@ +# πŸ“§ Mailbox + +μ…€ν”„ ν˜ΈμŠ€νŒ… 이메일 ν΄λΌμ΄μ–ΈνŠΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€. + +![React](https://img.shields.io/badge/React-18-61DAFB?logo=react) +![Node.js](https://img.shields.io/badge/Node.js-Express-339933?logo=node.js) +![Docker](https://img.shields.io/badge/Docker-2496ED?logo=docker) + +--- + +## ✨ μ£Όμš” κΈ°λŠ₯ + +- πŸ“¬ **이메일 μ†‘μˆ˜μ‹ ** - SMTP/IMAP ν”„λ‘œν† μ½œ 지원 +- πŸ€– **AI λ²ˆμ—­** - Google Gemini API 연동 +- πŸ“Ž **μ²¨λΆ€νŒŒμΌ** - S3 ν˜Έν™˜ μŠ€ν† λ¦¬μ§€ μ—…λ‘œλ“œ +- πŸ” **κ³ κΈ‰ 검색** - λ‹€μ–‘ν•œ ν•„ν„° μ˜΅μ…˜ +- πŸ›‘οΈ **슀팸 ν•„ν„°** - Rspamd 연동 +- πŸ‘₯ **닀쀑 μ‚¬μš©μž** - κ΄€λ¦¬μž λŒ€μ‹œλ³΄λ“œ + +--- + +## πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰 + +``` +mailbox/ +β”œβ”€β”€ frontend/ # React + Vite ν”„λ‘ νŠΈμ—”λ“œ +β”œβ”€β”€ backend/ # Node.js + Express λ°±μ—”λ“œ +β”œβ”€β”€ rspamd/ # 슀팸 ν•„ν„° μ„€μ • +└── docker-compose.yml # Docker Compose μ„€μ • +``` + +--- + +## πŸ› οΈ 기술 μŠ€νƒ + +### Frontend + +| 기술 | μ„€λͺ… | +| --------------- | -------------- | +| **React 18** | UI 라이브러리 | +| **Vite** | λΉŒλ“œ 도ꡬ | +| **TailwindCSS** | CSS ν”„λ ˆμž„μ›Œν¬ | + +### Backend + +| 기술 | μ„€λͺ… | +| -------------- | ------------- | +| **Node.js** | λŸ°νƒ€μž„ ν™˜κ²½ | +| **Express** | μ›Ή ν”„λ ˆμž„μ›Œν¬ | +| **MariaDB** | λ°μ΄ν„°λ² μ΄μŠ€ | +| **Nodemailer** | 이메일 전솑 | +| **IMAP** | 이메일 μˆ˜μ‹  | + +### 인프라 + +| 기술 | μ„€λͺ… | +| ---------- | ----------- | +| **Rspamd** | 슀팸 필터링 | +| **Redis** | μΊμ‹œ μ„œλ²„ | +| **RustFS** | S3 μŠ€ν† λ¦¬μ§€ | + +--- + +## πŸš€ μ‹€ν–‰ 방법 + +### Docker (ꢌμž₯) + +```bash +docker compose up -d --build +``` + +### 개발 λͺ¨λ“œ + +```bash +# λ°±μ—”λ“œ +cd backend && npm install && npm start + +# ν”„λ‘ νŠΈμ—”λ“œ +cd frontend && npm install && npm run dev +``` + +--- + +## 🌐 접속 + +- **URL**: https://mailbox.caadiq.co.kr + +--- + +## πŸ“„ λΌμ΄μ„ μŠ€ + +MIT License diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 0000000..37b529e --- /dev/null +++ b/backend/README.md @@ -0,0 +1,63 @@ +# πŸ–₯️ Mailbox - Backend + +이메일 μ†‘μˆ˜μ‹  및 관리λ₯Ό μœ„ν•œ Node.js API μ„œλ²„μž…λ‹ˆλ‹€. + +![Node.js](https://img.shields.io/badge/Node.js-18+-339933?logo=node.js) +![Express](https://img.shields.io/badge/Express-4.x-000000?logo=express) + +--- + +## πŸ› οΈ 기술 μŠ€νƒ + +| 기술 | μ„€λͺ… | +| -------------- | ------------- | +| **Node.js** | λŸ°νƒ€μž„ ν™˜κ²½ | +| **Express** | μ›Ή ν”„λ ˆμž„μ›Œν¬ | +| **Sequelize** | ORM | +| **Nodemailer** | SMTP 전솑 | +| **IMAP** | 이메일 μˆ˜μ‹  | +| **JWT** | 인증 | + +--- + +## πŸ“‘ API μ—”λ“œν¬μΈνŠΈ + +### 인증 + +- `POST /api/auth/login` - 둜그인 +- `POST /api/auth/logout` - λ‘œκ·Έμ•„μ›ƒ + +### 이메일 + +- `GET /api/emails` - 이메일 λͺ©λ‘ +- `GET /api/emails/:id` - 이메일 상세 +- `POST /api/emails/send` - 이메일 전솑 +- `DELETE /api/emails/:id` - 이메일 μ‚­μ œ + +### κ΄€λ¦¬μž + +- `GET /api/admin/users` - μ‚¬μš©μž 관리 +- `GET /api/admin/dashboard` - λŒ€μ‹œλ³΄λ“œ 톡계 + +--- + +## πŸš€ μ‹€ν–‰ 방법 + +```bash +npm install +npm start +``` + +μ„œλ²„λŠ” **포트 3000**μ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€. + +--- + +## βš™οΈ ν™˜κ²½ λ³€μˆ˜ + +| λ³€μˆ˜ | μ„€λͺ… | +| ------------- | --------------------- | +| `DB_HOST` | λ°μ΄ν„°λ² μ΄μŠ€ 호슀트 | +| `DB_USER` | λ°μ΄ν„°λ² μ΄μŠ€ μ‚¬μš©μž | +| `DB_PASSWORD` | λ°μ΄ν„°λ² μ΄μŠ€ λΉ„λ°€λ²ˆν˜Έ | +| `DB_NAME` | λ°μ΄ν„°λ² μ΄μŠ€ 이름 | +| `JWT_SECRET` | JWT μ‹œν¬λ¦Ώ ν‚€ | diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..5653c76 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,60 @@ +# 🎨 Mailbox - Frontend + +이메일 ν΄λΌμ΄μ–ΈνŠΈμ˜ μ›Ή μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€. + +![React](https://img.shields.io/badge/React-18-61DAFB?logo=react) +![Vite](https://img.shields.io/badge/Vite-5-646CFF?logo=vite) +![TailwindCSS](https://img.shields.io/badge/TailwindCSS-3-06B6D4?logo=tailwindcss) + +--- + +## πŸ› οΈ 기술 μŠ€νƒ + +| 기술 | μ„€λͺ… | +| ---------------- | -------------- | +| **React 18** | UI 라이브러리 | +| **Vite** | λΉŒλ“œ 도ꡬ | +| **TailwindCSS** | CSS ν”„λ ˆμž„μ›Œν¬ | +| **Lucide React** | μ•„μ΄μ½˜ | + +--- + +## ✨ μ£Όμš” κΈ°λŠ₯ + +- πŸ“¬ **메일 λͺ©λ‘** - λ°›μ€νŽΈμ§€ν•¨, λ³΄λ‚ΈνŽΈμ§€ν•¨, μŠ€νŒΈν•¨ +- ✏️ **메일 μž‘μ„±** - 리치 ν…μŠ€νŠΈ 에디터 +- πŸ“Ž **μ²¨λΆ€νŒŒμΌ** - λ“œλž˜κ·Έ μ•€ λ“œλ‘­ μ—…λ‘œλ“œ +- πŸ” **검색** - κ³ κΈ‰ ν•„ν„° μ˜΅μ…˜ +- πŸ€– **AI λ²ˆμ—­** - Gemini API 연동 +- πŸ‘¨β€πŸ’Ό **κ΄€λ¦¬μž** - μ‚¬μš©μž 및 μ‹œμŠ€ν…œ 관리 + +--- + +## πŸš€ μ‹€ν–‰ 방법 + +### 개발 λͺ¨λ“œ + +```bash +npm install +npm run dev +``` + +### ν”„λ‘œλ•μ…˜ λΉŒλ“œ + +```bash +npm run build +``` + +--- + +## πŸ“ ꡬ쑰 + +``` +frontend/ +β”œβ”€β”€ src/ +β”‚ β”œβ”€β”€ components/ # UI μ»΄ν¬λ„ŒνŠΈ +β”‚ β”œβ”€β”€ context/ # React Context +β”‚ β”œβ”€β”€ hooks/ # μ»€μŠ€ν…€ ν›… +β”‚ └── utils/ # μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜ +└── public/ # 정적 파일 +```