TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
프로덕션 환경에 최적화된 팀 작업 공간
A production-shaped team workspace: boards, chat, files, and schedules kept in sync over WebSockets, behind a NestJS API with Redis fan-out, BullMQ queues, and Postgres. Built solo, with a live demo.
생산성TypeScript · JavaScriptGitHub @JustTunya온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Full real-time collaborative workspace platform — live project boards, drag-and-drop task sync, and modular workspaces, backed by a NestJS API with Socket.IO realtime, BullMQ queues, and JWT session auth.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
An enterprise-grade collaborative workspace, engineered end to end — public portal, authenticated dashboard, and a horizontally scalable real-time backend keeping tasks, files, and distributed teams in perfect sync. Portfolio project.README 전문 보기 ↗
Boards, chat, files, and schedules in one place, live in every open tab, with optional Claude-powered summaries, digests, task drafts, and stand-up notes.
Early access · built by Tunya Lénárd-Sándor · Join the waitlist · a shared demo with sample data is available from the site
Small teams often run work across a task tracker, a chat app, and a file drive, and lose context moving between them. crwsync keeps boards, chat, files, and schedules in one workspace, and uses Claude to keep long threads and busy boards readable.
Optional, off by default, server-side only, and member-triggered. See AI features for configuration and data handling.
Planned, not yet built: free early access today, a paid tier for larger teams, and a hosted product with a documented self-host path. No prices are set. Commercial licensing or partnership: [email protected].
crwsync is a shared workspace for small teams and crews that run work from boards, chat, and files. A team signs in, organizes work into projects, moves tasks around a shared board, and watches teammates' changes land instantly, while a decoupled backend enforces auth, queues background work, and fans out real-time state over WebSockets.
The architecture reflects deliberate separation of concerns rather than a single monolith: three independently deployable services — a public marketing portal, an authenticated dashboard, and a NestJS API — share one root domain via subdomains in production, isolating public traffic from authenticated workloads, and run together locally through a unified Turborepo pipeline.
dash.crwsync.xyz)@dnd-kit-powered drag-and-drop task board with
optimistic reordering that reconciles against the API and patches other
clients' caches over the socket the moment a card moves.@crwsync/i18n package (English/Spanish shipped) instead of being
hardcoded per component.@crwsync/backend) — a strict, modular NestJS service
on Node, exposing REST endpoints and a Socket.IO gateway behind one
well-structured process, organized into focused modules (auth, workspace,
board, chat, files, search, statistics, notification, storage, contact).stack.yml for Docker Swarm with rolling updates and per-service
resource limits built in from day one.| Layer | Technology |
|---|---|
| Frontend | Next.js 16 (App Router), React 19 |
| Backend | NestJS 11 on Node.js |
| Language | TypeScript |
| Styling / motion | Tailwind CSS v4, Radix UI, Framer Motion |
| State / Data | Zustand, TanStack Query |
| Data / ORM | PostgreSQL 16, Prisma 7 |
| Realtime | Socket.IO + Redis adapter |
| Queues | BullMQ |
| Auth | Passport.js (JWT/Local), bcrypt, HTTP-only cookies |
| Object storage | S3-compatible (MinIO dev / Cloudflare R2 prod), presigned uploads |
| Rich editing / DnD | Tiptap, dnd-kit |
| Observability |
pnpm install
docker-compose -f docker-compose.dev.yml up -d # local Postgres + Redis
pnpm --filter @crwsync/backend run prisma:generate
pnpm --filter @crwsync/backend run prisma:migrate:dev
pnpm run dev
http://localhost:3000http://localhost:3001http://localhost:8080Create a .env in each of apps/frontend/web, apps/frontend/dash, and
apps/backend and fill in:
| Variable | Where it comes from |
|---|---|
NEXT_PUBLIC_API_URL, NEXT_PUBLIC_WEB_URL, NEXT_PUBLIC_DASH_URL | local dev URLs of the three services |
DATABASE_URL | docker-compose.dev.yml credentials against local Postgres |
REDIS_HOST, REDIS_PORT, REDIS_KEY_PREFIX | docker-compose.dev.yml local Redis |
JWT_ACCESS_TOKEN_SECRET, JWT_REFRESH_TOKEN_SECRET, COOKIE_SECRET | any string — sign local sessions and cookies |
MAIL_HOST, MAIL_PORT, MAIL_USER, MAIL_PASS | an SMTP provider (e.g. Zoho Mail), for transactional email |
CORS_ORIGIN, APP_URL, ACCESS_COOKIE_DOMAIN, REFRESH_COOKIE_DOMAIN | localhost for local dev |
STORAGE_ENDPOINT, STORAGE_BUCKET, STORAGE_ACCESS_KEY, STORAGE_SECRET_KEY, STORAGE_REGION | docker-compose.dev.yml MinIO credentials locally; an S3-compatible bucket (e.g. Cloudflare R2) in production |
CONTACT_EMAIL (backend), NEXT_PUBLIC_CONTACT_EMAIL (web) | the inbox that receives contact-form messages and the address shown on the site and in legal pages; the committed default is a placeholder |
AI_ENABLED, ANTHROPIC_API_KEY, ANTHROPIC_MODEL, AI_DAILY_LIMIT_PER_USER, AI_MAX_INPUT_MESSAGES | optional AI features, see below |
SENTRY_DSN / NEXT_PUBLIC_SENTRY_DSN, SENTRY_ENVIRONMENT, SENTRY_TRACES_SAMPLE_RATE | optional — leave blank to run without error monitoring locally |
The API can call Claude for four features: a chat-room summary, a board
digest, task drafts from selected messages, and a per-member stand-up. They
are off unless AI_ENABLED=true; with it off, every AI endpoint answers 404
and the dashboard hides the buttons. All calls are made server-side through
a BullMQ ai queue and the browser polls a job-status endpoint, so the key
never reaches a client.
| Variable | Meaning |
|---|---|
AI_ENABLED | true to enable. The API refuses to start if this is true and the key or model is missing. |
ANTHROPIC_API_KEY | Anthropic API key. Set it in your deployment secrets, never in the repo. |
ANTHROPIC_MODEL | Model ID used for every request. Not hardcoded; pick a current ID from the Anthropic docs. |
AI_DAILY_LIMIT_PER_USER | Requests per user per UTC day (default 20). Over the limit the API answers 429. |
AI_MAX_INPUT_MESSAGES | Most chat messages sent in one request (default 200). |
Only the fields a feature needs (author display name, timestamp, text, task titles and dates) are sent to Anthropic. Request metadata (user, workspace, feature, token counts, latency) is logged; message content and model output are not.
apps/frontend/web — the public marketing portalapps/frontend/dash — the authenticated dashboard: home, board, chat,
files, schedules, statistics, search, and settings (Next.js App Router)apps/backend — NestJS API, Socket.IO gateway, BullMQ workers, modularized
by domain (auth, workspace, board, chat, files, search,
statistics, notification, storage, contact, waitlist, ai, …)packages/types — shared domain types and operation-result shapes used by
both frontends and the backendpackages/styles — shared Tailwind design tokens/configpackages/templates — transactional email templatespackages/i18n — shared localization strings/hooks (English, Spanish)stack.yml — production Docker Swarm deployment definitionSource-available under the Functional Source License 1.1, Apache 2.0 future license (FSL-1.1-ALv2). You can read, study, and use the code for any purpose except offering a competing product or service; each release converts to Apache 2.0 two years after publication. Commercial licensing: [email protected].
| Sentry (backend + dashboard) |
| i18n | @crwsync/i18n (English, Spanish) |
| Testing | Vitest (frontend), Jest (backend) |
| Monorepo | Turborepo, pnpm |
| CI/CD | GitHub Actions, Dependabot |
| Deployment | Docker, Docker Swarm (stack.yml) |