42 멤버의 스터디·단기 파티·LIVE 핑 모집과 완주 기록 플랫폼
Translation pending
SocialTypeScript · ShellGitHub @erdoslibraryOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
스터디 및 네트워킹 매칭 서비스ㅡPrototype
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗경계를 넘어 함께 성장하는 목적 중심 스터디 & 네트워킹 매칭 플랫폼
🌐 라이브 서비스: https://modoo42.vercel.app
불필요한 친목과 잡담, 복잡한 절차를 걷어내고 '목표를 함께 달성할 동료 매칭' 에 집중합니다.
자체 채팅 대신 리더가 설정한 외부 채널(카카오 오픈채팅, 디스코드 등)로 즉시 연결해 소통 피로도를 줄이고 실행력을 높입니다.
| 목표 구현 (Demo) | 정규 스터디 (Demo) |
|---|---|
[!IMPORTANT] Node.js 버전 요구사항: 반드시 Node.js 20 이상(
node -v)을 사용해야 합니다. Node.js 18 이하 버전에서는drizzle-kit(마이그레이션 및 스키마 검증) 실행 시 모듈 호환성 오류가 발생합니다.
저장소를 클론하고 의존성 패키지를 설치합니다:
# 저장소 클론 및 디렉토리 진입
git clone https://github.com/erdoslibrary/modoo42.git
cd modoo42
# 패키지 매니저(pnpm)를 통한 의존성 설치
pnpm install
.env.example을 복사하여 .env.local 파일을 생성하고 필수 값을 설정합니다:
cp .env.example .env.local
주요 설정 항목:
# Supabase PostgreSQL 접속 문자열 (Transaction Pooler 또는 Direct)
DATABASE_URL="postgres://postgres.[PROJECT-REF]:[PASSWORD]@aws-0-[REGION].pooler.supabase.com:6543/postgres"
# Supabase 공개 URL 및 anon 키 (Realtime 구독용)
NEXT_PUBLIC_SUPABASE_URL="https://[PROJECT-REF].supabase.co"
NEXT_PUBLIC_SUPABASE_ANON_KEY="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
# 앱 베이스 URL
NEXT_PUBLIC_APP_URL="http://localhost:3000"
# GitHub OAuth App 자격증명 (프로덕션 환경 필수)
GITHUB_CLIENT_ID="your_github_client_id"
GITHUB_CLIENT_SECRET="your_github_client_secret"
# 개발자 콘솔 게이트 (로컬 테스트 및 샌드박스 격리용 비밀번호)
DEV_CONSOLE_PASSWORD="your_dev_console_password"
Drizzle ORM을 통해 Supabase PostgreSQL 인스턴스에 최신 스키마를 적용합니다:
# 스키마 정합성 검증
pnpm drizzle-kit check
# 마이그레이션 적용
pnpm drizzle-kit migrate
# 개발자 콘솔 샌드박스 동기화 (최초 1회)
pnpm sandbox:sync
pnpm dev
/login으로 자동 리다이렉트)/login 화면 하단의 [개발자 콘솔로 진입] 버튼을 누르고 .env.local에 설정한 DEV_CONSOLE_PASSWORD를 입력합니다.dev_sandbox 스키마가 격리 활성화되며, 화면 우측 하단에 [🛠 DEV] 플로팅 패널이 노출됩니다.[🛠 DEV] 패널의 인증 탭에서 테스트 페르소나(gs_leader, gs_member, seoul_member, github_only)로 즉시 전환할 수 있습니다.[GitHub 계정으로 로그인]도 지원합니다.chat_url)는 참여자에게만 안전하게 마스킹 해제.SELECT ... FOR UPDATE 락 적용.dev_sandbox) 격리를 통한 안전한 로컬 테스트 환경 지원.Next.js 14 App Router 기반 풀스택 구조로, 프레젠테이션 계층, 비즈니스 로직 및 API 계층, Supabase PostgreSQL 데이터 계층이 유기적으로 연동됩니다.
%%{init: {'flowchart': {'curve': 'linear'}}}%%
flowchart TD
subgraph Clients ["프레젠테이션 계층 (Presentation)"]
Web["웹 대시보드 (Next.js 14)<br/>반응형 대시보드 · 스터디 개설 · 완주 판정"]
CLI["CLI 조회 도구 (curl / HTTP API)<br/>LIVE 핑 및 활성 모집 조회"]
end
subgraph App_Server ["애플리케이션 계층 (Next.js App Router)"]
Auth["인증 & 세션 관리<br/>GitHub OAuth 2.0 · 30일 HMAC 세션 쿠키"]
RouteHandlers["API Route Handlers<br/>(/api/posts, /api/auth, /api/cli)"]
Templates["플러그인 템플릿 레지스트리<br/>(코딩테스트, 모각코, 책 완독 등)"]
Auth --> RouteHandlers
Templates --> RouteHandlers
end
subgraph Data_Layer ["데이터 & 인프라 계층 (Supabase & PostgreSQL)"]
PostgreSQL["Supabase PostgreSQL<br/>(Drizzle ORM · 비관적 락 SELECT FOR UPDATE)"]
Realtime["Supabase Realtime<br/>(WebSocket 상태 변경 브로드캐스트)"]
RouteHandlers --> PostgreSQL
PostgreSQL -.-> Realtime
end
Web <--> RouteHandlers
Web <--> Realtime
CLI <--> RouteHandlers
main 브랜치 푸시 시 자동 배포가 트리거됩니다..github/workflows/ci.yml):
pnpm lint), 타입 검사(pnpm typecheck), 프로덕션 빌드 검증(pnpm build), DB 스키마 정합성(pnpm drizzle-kit check)을 자동 검증합니다.# 전체 테스트 스위트 실행 (총 305개 테스트, 32개 파일)
pnpm test
# 정적 코드 분석
pnpm lint
# TypeScript 타입 검사
pnpm typecheck
modoo42/
├── docs/ # 기술 설계서(trd.md), 요구사항(requirement.md), 기획서(plan.md)
│ └── designs/ # UI/UX 원형 디자인 명세 및 상호작용 가이드
├── drizzle/ # Drizzle ORM 자동 생성 SQL 마이그레이션 파일
├── specs/ # Spec-Driven Development (speckit) 단계별 아티팩트
├── src/ # 애플리케이션 소스 코드
│ ├── app/ # Next.js 14 App Router 페이지 및 API Route Handlers
│ │ ├── api/ # REST API 엔드포인트 (/posts, /auth, /cli 등)
│ │ └── ... # 프론트엔드 라우트
│ ├── components/ # 재사용 React UI 컴포넌트
│ ├── db/ # PostgreSQL 클라이언트 및 Drizzle 스키마 정의 (schema.ts)
│ ├── hooks/ # 클라이언트 커스텀 훅 (Realtime 구독 훅 등)
│ ├── lib/ # 공통 유틸리티 (인증 세션, Supabase 클라이언트, 에러 핸들러)
│ └── templates/ # 모듈형 스터디 템플릿 등록부 (registry.ts)
└── tests/ # 단위 및 통합 테스트 스위트 (Vitest)
| 팀원 | 역할 및 담당 영역 |
|---|---|
| @erdoslibrary | Full-stack Architecture, Backend & Database, Frontend Integration |
본 프로젝트는 아래의 오픈소스 기술 및 라이브러리를 기반으로 개발되었습니다:
본 프로젝트는 Apache License 2.0을 따릅니다.
"내가 보고 싶었던 장면이, 누군가 정말 필요로 했던 경험이 될 때까지"