이전 회사에서 Asana를 스케줄 관리에 사용했었는데...
기억을 되살려 AI로 한번 만들어 봤습니다.
웹 개발자는 아니어도, 이 정도 까지 구현이 됩니다.
보안이나 인프라 관련 해서는 지식이 부족하기 때문에,
서비스할 수준은 안된다고 생각합니다.
어쨋든...
이런 개발 방식을 불편해 하시는 분들도 있겠지만,
저는 이게 미래라고 생각해요.
결국에 어느 시점에는 비 개발자도
딸깍으로 서비스할 수준의
웹 사이트나 앱을 만들 시기가 올거라고 생각합니다.
## 개요
Asana와 유사한 프로젝트 스케줄 관리 서비스.
로컬 환경에서 시작하여 Cloudflare 배포까지 확장 가능한 구조.
## 기술 스택
### Monorepo 구조
- **패키지 매니저**: pnpm (workspaces)
- **빌드 오케스트레이션**: Turborepo
### Frontend (`apps/web`)
- **프레임워크**: React 18 + TypeScript
- **빌드 도구**: Vite 6
- **스타일링**: TailwindCSS v4
- **UI 컴포넌트**: shadcn/ui 스타일 (Radix UI primitives)
- **상태 관리**:
- Zustand (클라이언트 상태: 인증, UI, 필터)
- TanStack Query (서버 상태 캐싱/동기화)
- **라우팅**: React Router v7
- **i18n**: react-i18next (한국어 기본, 영어 보조)
- **배포**: Cloudflare Pages
### Backend (`apps/api`)
- **프레임워크**: Hono (경량 웹 프레임워크, Cloudflare Workers 네이티브)
- **ORM**: Drizzle ORM (타입 안전, 경량)
- **데이터베이스**: SQLite (로컬) → Cloudflare D1 (배포)
- **인증**: JWT (jose 라이브러리) + PBKDF2 (Web Crypto API)
- **배포**: Cloudflare Workers
### Shared (`packages/shared`)
- Zod 스키마 (API 요청/응답 검증)
- TypeScript 타입 정의
- 공통 상수/유틸리티
## 기술 스택 선정 이유
| 선택 | 이유 |
|------|------|
| Hono | Cloudflare Workers 네이티브, Express 대비 10x 경량, Web Standard API 사용 |
| Drizzle | 타입 안전 ORM, D1/SQLite 완벽 지원, 번들 크기 최소 |
| D1/SQLite | 로컬 개발 시 SQLite, 배포 시 D1로 코드 변경 없이 전환 |
| Zustand + TanStack Query | 서버/클라이언트 상태 분리, 보일러플레이트 최소화 |
| TailwindCSS v4 | 유틸리티 퍼스트, v4의 CSS-first 설정 |
| pnpm + Turborepo | 효율적 의존성 관리 + 병렬 빌드/캐싱 |





