Skip to content

Repository files navigation

Nexus

개발자를 위한 커뮤니케이션 허브. Discord의 가벼움, Slack의 업무 구조, 그리고 개발 워크플로(이슈 · 저장소 · AI)를 한 화면에 합친다.

개인용으로 시작해 서비스화를 목표로 하는 개인 프로젝트.

무엇이 다른가

일반 메신저는 개발 맥락을 모르고, 개발 도구는 대화를 담지 못한다. Nexus는 그 사이를 메운다.

  • 커밋 · PR/MR · 이슈 이벤트가 채널 안으로 흘러 들어온다
  • 대화 중에 그 자리에서 이슈를 만든다 (원문 링크가 남는다)
  • AI가 대화와 코드를 같은 맥락으로 읽는다

아키텍처

app/     Flutter — 단일 코드베이스로 모바일 · 데스크톱 · 웹
   │
   │  REST + Socket.IO
   ▼
server/  NestJS + Prisma
   ├─ PostgreSQL   사용자 · 스페이스 · 채널 · 메시지 · 이슈
   ├─ Redis        프레즌스 · Socket.IO 어댑터 · AI 작업 큐
   └─ S3 호환      첨부 파일 (개발: MinIO / 운영: S3 · R2)

멀티테넌트 구조다. Space(Discord의 서버 / Slack의 워크스페이스)가 모든 데이터의 루트이며, 채널 · 메시지 · 이슈 · 저장소는 전부 스페이스에 속한다.

폴더 구조

폴더 설명
app/ Flutter 앱. iOS · Android · Windows · macOS · Linux · Web을 한 코드베이스로
server/ NestJS 백엔드. REST API + Socket.IO 게이트웨이
design-system/ 토큰 · 컴포넌트 · 화면 프리뷰 (자기완결 HTML)
docs/ 기획 · 설계 문서

개발 시작하기

main 이 기준 브랜치다. 새 작업은 feat/* 를 따서 하고 끝나면 main 으로 합친다.

git clone https://github.com/dbsrjs/Nexus.git && cd Nexus

npm --prefix server install
cp server/.env.example server/.env      # JWT_SECRET 을 채워야 부팅된다

npm run db:setup                        # (1회) WSL 안에 Postgres + pgvector
                                        #  Docker 를 쓴다면 건너뛴다
npm run db:up                           # Docker: npm run db:up:docker
npm --prefix server exec prisma migrate deploy
npm run db:seed

npm run server:dev                      # http://localhost:3000/api

JWT_SECRET 생성:

node -e "console.log(require('crypto').randomBytes(48).toString('base64url'))"

DB 는 PC 마다 따로다. 계정 · 메시지는 git 으로 옮겨지지 않는다. 새 PC 에서는 시드로 새로 만들어진다. 자세한 주의사항은 server/README.md.

문서

문서 내용
제품 기획서 방향 · 타겟 · 기능 범위 · 로드맵
백엔드 설계 멀티테넌시 · 데이터 모델 · API · 실시간
앱 설계 Flutter 스택 · 화면 · 상태 관리 · 오프라인 전략
인프라 설계 무료 운영 전제의 배포 구성 · 공개 저장소 보안 체크리스트
디자인 시스템 색 · 타이포 · 간격 · 컴포넌트 (산출물은 design-system/)
전환 계획 현재 코드에서 새 구조로 가는 작업 목록
기술 스택 가이드 이어서 만들려면 무엇을 알아야 하는지 · 코드 읽기 시작점

실행

백엔드

cd server
docker compose up -d          # postgres + redis + minio
cp .env.example .env          # JWT_SECRET 등 필수 값 설정
npm install
npx prisma migrate dev
npm run seed
npm run start:dev             # http://localhost:3000/api

cd app
flutter pub get
flutter run --dart-define=API_BASE=http://localhost:3000/api

API 주소는 빌드 타임에 주입한다. Android 에뮬레이터에서 호스트를 가리키려면 http://10.0.2.2:3000/api를 쓴다.

플랫폼별 빌드:

flutter build apk    --dart-define=API_BASE=https://api.example.com
flutter build web    --dart-define=API_BASE=https://api.example.com
flutter build windows --dart-define=API_BASE=https://api.example.com

현재 상태

사내 메신저 통합 솔루션에서 개인 프로젝트로의 전환을 마쳤다. 대화 · 파일까지 동작하며, 다음은 이슈 · 저장소 연동 · AI 다.

  • ✅ 재기획 완료 — 제품 · 백엔드 · 앱 · 인프라 · 전환 계획 문서
  • ✅ 디자인 시스템 — 토큰 · 컴포넌트 8종 · 검증 화면 2종 (design-system/)
  • ✅ 기존 자산 정리 — www/(React) · desktop/(Electron) · mobile/(Capacitor) · 루트 index.html 삭제, 구 디자인 소스는 docs/archive/로 이관
  • ✅ 멀티테넌시 골격 — 스키마 전면 재작성(26개 모델), 인증 개편(가입 · 리프레시 회전 · 재사용 탐지), spaces · SpaceGuard
  • ✅ 채팅 API 뼈대 — 카테고리 · 채널 · 메시지(전송 · 수정 이력 · 소프트 삭제 · 읽음 마커)
  • 🔄 실시간(Socket.IO) 개편 — 룸 동기화 · 읽음 저장 · 프레즌스
  • ⬜ Flutter 앱 신규 구축 (app/)
  • ⬜ 저장소 웹훅 연동 · AI 기능

진행 순서는 전환 계획 §6을 따른다.

로드맵

단계 목표
Phase 0 나 혼자 쓰는 개발 허브. 내 프로젝트를 채널로 나누고 할 일 · 저장소를 붙인다
Phase 1 2~10인 소규모 팀. 초대 · 온보딩 · 푸시 알림
Phase 2 공개 서비스. 테넌트 격리 · 스토리지 쿼터 · 과금

About

Central hub for enterprise communication and collaboration.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages