우리는 이렇게 개발합니다.
- 공통
- Node.js — TypeScript Isomorphic 환경에서 백엔드/프론트엔드 전체를 구현합니다.
- pnpm을 통해 패키지 관리를 합니다. (pnpm workspace)
- git/GitHub을 통해 코드를 관리합니다.
- Cursor를 IDE로 사용합니다.
- Docker로 공통된 로컬 개발 환경을 구축합니다.
- Slack을 통해 소통합니다.
- 문서 공유/협업을 위해 Notion을 사용합니다.
- 업무 분배 및 이슈 관리는 Linear를 사용합니다.
- 디자인-협업에는 Figma를 사용합니다.
- ChatGPT/Claude/Gemini 팀 플랜을 사용합니다.
- 팀원들 각각의 취향에 따라 Codex/Claude Code/Gemini CLI를 사용합니다.
- 백엔드
- 모든 백엔드 업무 프로세스의 기반은 Sonamu 프레임워크를 사용합니다.
- Sonamu는 PostgreSQL을 베이스로 ORM-like한 마이그레이션을 다룹니다.
- DB 쿼리는 Knex.js를 Type-Safe로 래핑한 Puri 를 통해 쿼리 빌더(Query Builder) 방식을 씁니다.
- 웹 서버의 기반은 Fastify로 구성되었습니다.
- 타입 생성/검증은 Zod를 사용합니다.
- ESM을 사용하여, Sonamu 내장 HMR이 구현되어 있습니다. (swc, hot-hook 기반)
- 라우팅은 Sonamu 자체에 내장된 데코레이터 + AST파싱을 통해 Validation을 포함하여 HTTP/SSE API가 자동 생성되며, 클라이언트에 RPC로 연결됩니다.
- 이 모든 것들이 Sonamu UI라는 웹 UI 툴을 통해 생성/관리됩니다.
- Vitest 에서 단위테스트를 진행합니다.
- Sonamu의 FixtureManager를 통해 픽스쳐를 팀 공통으로 사용하고 관리하는 시스템이 구현되어 있습니다.
- 이를 통해 DB를 Mocking하지 않고 로컬의 테스팅DB에서 실제 쿼리를 실행하여 테스트하며, 테스팅 트랜잭션 격리를 통해 빠른 테스트가 가능하게 합니다.
- 관찰 기반 테스팅 기법(Observability-driven Testing)을 도입한 자체 개발 테스팅 도구인 Naite를 사용하여 높은 수준의 테스팅 커버리지를 구현합니다.
- PostgreSQL FTS를 활용하여 검색을 구현합니다.
- PostgreSQL pgvector를 활용하여 벡터임베딩을 관리합니다.
- Cube.js를 사용하여 통계를 구현합니다.
- Redis를 활용하여 API 캐싱을 구현합니다.
- AI SDK를 사용하여 AI기반 어플리케이션을 구현합니다.
- 프론트엔드(웹)
- Vite의 esbuild로 개발 환경을 사용하며, 프로덕션에서는 Rollup으로 빌드되고 배포됩니다.
- Sonamu에서 싱크된 Zod 타입을 통해 폼 검증 및 상태 관리를 수행합니다.
- Sonamu에서 자동 생성된 Axios / Tanstack Query 클라이언트를 통해 API 통신 로직을 구현합니다. (E2E Type-safety RPC)
- 백오피스는 shadcn/ui + tailwindcss3 + tanstack-router 를 기반으로 만들어진
@sonamu-kit/react-components 를 통해 페이지/컴포넌트를 생성하고 관리합니다.
- Jotai를 통해 상태 관리를 합니다.
- Sonamu SSR을 통해 SSR/SEO를 구현합니다.
- API/SSR 서버를 분리하지 않고, 단일 통합 서버를 통해 SSR을 처리합니다.
- 모든 SSR Preload 데이터는 별도의 API 오버헤드 없이 서버에서 직접 준비됩니다.
- 이를 통해, 완벽한 수준의 SSR을 구현하면서도 CSR의 멘탈모델의 수정 없이 개발이 가능합니다.
- 프론트엔드(모바일 앱)
- **Expo(React Native)**를 통해 하이브리드앱을 개발합니다.
- Sonamu에서 싱크된 Zod 타입을 통해 폼 검증 및 상태 관리를 수행합니다.
- Sonamu에서 자동 생성된 Axios / Tanstack Query 클라이언트를 통해 API 통신 로직을 구현합니다. (E2E Type-safety RPC)
- Unistyles로 스타일링을 합니다.
- Jotai를 통해 상태 관리를 합니다.
- Firebase Crashlytics를 통해 앱에 크래시가 발생했을 때 대응합니다.
- 인프라 & CI/CD
- GitHub Actions를 통해 빌드/테스트/배포를 자동화합니다.
- Docker / AWS / Terraform을 활용해 서비스의 인프라스트럭쳐를 구성합니다.
- EAS를 통해 배포합니다.
Sonamu는?
Sonamu 소개 - 🌲 Sonamu
우리는 Nest.js, Express 같은 기존 프레임워크를 사용하지 않습니다. 대신 자체 개발한 Node.js/TypeScript 풀스택 프레임워크 Sonamu를 사용합니다.
Node.js 생태계는 유연하지만, 그 유연함이 파편화를 낳았습니다. ORM은 ORM대로, API 레이어는 또 따로, 프론트엔드 타입은 또 수동으로 관리해야 하죠. TypeScript의 가장 강력한 장점—같은 언어로 전체 스택을 관통할 수 있다는 점—은 정작 제대로 활용되지 못했습니다.
Sonamu는 이 본질적 한계를 끝까지 개선하기 위해 만들어졌습니다. DSL 기반의 스키마 정의 하나로 DB 모델, API, 타입, RPC, SSR까지 전체 스택이 자동 생성되며, 모든 변경사항이 프론트엔드까지 즉시 반영됩니다. Single Source of Truth가 코드베이스 전체를 관통하는 진짜 E2E Type-safety를 구현했습니다.
가장 중요한 건, 이게 세상 어디에도 없는 유니크한 프레임워크라는 점입니다. 당신은 단순히 프레임워크를 '사용하는' 개발자가 아니라, 프레임워크를 통으로 이해하고 함께 개선해나가는 메이커가 됩니다. 우리가 자체 평가로 최적의 DX를 달성했다고 믿는 이 도구를, 함께 더 발전시킬 수 있습니다.