Join the Agent Deck Discord Server!
Discord에서 Agent Deck 커뮤니티 확인, 357명과 자유 음성·텍스트 채팅 이용
Hazel 오픈소스 Slack 대안, 개발자용 실시간 메신저·GitHub 연동·AI 협업·오픈소스 프로젝트 무료
The open source Slack alternative built for developers. Real-time messaging, GitHub integration, and AI-powered collaboration. Free for open source projects.
소셜TypeScript · AstroGitHub @MapleTechLabs온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A modern, real-time collaborative chat platform built with Effect-TS, TanStack DB and Cloudflare Durable Objects.
Hazel Chat is a full-stack chat application featuring:
libs/effect-db-collection)@maple-dev/effect-orm) on SQLite: Durable Object storage and D1@hazel/auth) for sign-in and sessions├── apps/
│ ├── web-foldkit/ # Web frontend
│ ├── backend/ # api Worker: HTTP API, RPC and the Durable Objects holding the data
│ ├── bot-gateway/ # Bot gateway Worker and its per-bot Durable Object
│ └── link-preview-worker/ # Link preview generation
├── packages/
│ ├── db/ # effect-orm SQLite tables, per-store table lists, migrations
│ ├── sync-do/ # Durable Object sync runtime
│ ├── domain/ # Shared types, RPC contracts, sync protocol
│ ├── backend-core/ # Reusable backend services and repositories
│ ├── schema/ # Shared schema definitions
│ └── ...
└── .context/ # Library documentation (Effect, Effect Atom, TanStack DB)
Clone the repository
git clone <repository-url>
cd app
Install dependencies
bun install
Run the setup wizard
bun run setup
This interactive CLI will:
.env.local (what bun run alchemy:dev reads; see .env.local.example) and the bots' .env filesStart development
bun run dev
This runs bun run alchemy:dev: every Worker (the api with its Durable Objects and the
directory D1, the bot gateway, link preview, actors) runs locally in workerd, plus the web
app's dev server. Local state lives in .alchemy/.
To start local bot apps, run:
bun run dev:bots
This project uses Clerk for authentication. After creating a Clerk application, grab your Publishable key and Secret key from the dashboard and provide them to bun run setup (or set CLERK_PUBLISHABLE_KEY / CLERK_SECRET_KEY in the generated .env files).
Enable Organizations in your Clerk dashboard (Organizations → Settings). Hazel uses Clerk organizations for multi-tenant workspaces, with members synced to our database via webhooks.
Add a webhook in the Clerk dashboard pointing at http://<backend-host>/webhooks/clerk (e.g. http://localhost:3003/webhooks/clerk for local dev, exposed via a tunnel). Subscribe to at least:
user.created, user.updated, user.deletedorganization.created, organization.updated, organization.deletedorganizationMembership.created, organizationMembership.updated, organizationMembership.deletedCopy the signing secret into CLERK_WEBHOOK_SECRET.
| Command | Description |
|---|---|
bun run dev | Start the whole stack (alchemy:dev) |
bun run dev:bots | Start local bot apps |
bun run build | Build all apps and packages |
bun run typecheck | Run TypeScript checking across all packages |
bun run format | Format and lint code with OXC |
bun run test | Run tests in watch mode |
bun run test:once | Run all tests once |
bun run test:coverage | Run tests with coverage report |
The backend uses Effect-TS for:
Type-safe client-server communication using Effect RPC:
packages/domainEach organization, channel and user is a Durable Object with its own SQLite
(infra/durable-object-sync-plan.md):
transactionId the client awaits before dropping its optimistic stateSee CONTRIBUTING.md for guidelines on how to contribute to this project.
See LICENSE for details.