Open-Source Cold Email & Warmup Platform
Warmbly는 메일함을 예열하고 캠페인 전송·답변 triage를 지원하는 오픈소스 콜드 이메일 플랫폼입니다
진정한 사용자 제작 콘텐츠 마켓플레이스, 검증된 제작자와 연결·협업해 실질적 성과를 내는 콘텐츠를 제작
The marketplace for authentic user-generated content. Connect with vetted creators, collaborate, and create content that drives real results.
마케팅TypeScript · CSSGitHub @Messold-Technologies1온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗GoCollab is a full-stack marketplace that connects brands with User-Generated Content (UGC) creators. Brands discover, brief, and pay creators in one place; creators manage their portfolio, packages, and orders from a dedicated dashboard.
GoCollab solves the friction in UGC production:
/{displayName}), showcase a video portfolio, set tiered packages and add-ons, and manage the full order lifecycle from a single dashboard./{displayName} pages with portfolio reels, packages, ratings, and a Book CTA/docs (non-production)/client)| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router, React Server Components) |
| Language | TypeScript |
| Styling | Tailwind CSS v4 |
| State / Data | TanStack React Query v5, Redux Toolkit |
| Forms | React Hook Form + Zod |
| Payments | Razorpay SDK |
| Real-time | Socket.IO client |
| UI primitives | Radix UI, Ark UI, Vaul, Embla Carousel |
| Charts | Chart.js + react-chartjs-2 |
| Animations | Framer Motion |
| Icons | Lucide React |
| Notifications | Sonner |
/server)| Layer | Technology |
|---|---|
| Framework | NestJS (Express adapter) |
| Language | TypeScript |
| Database | PostgreSQL via Prisma ORM |
| Auth | JWT (access + refresh tokens), HTTP-only cookies |
| Payments | Razorpay |
| Storage | AWS S3 (creator media, deliverables) |
| AWS SES | |
| Real-time | Socket.IO (NestJS gateway) |
| Validation | class-validator + class-transformer |
| Docs | Swagger / OpenAPI |
| Security | Helmet, CORS, rate limiting |
UGC-PLATFORM/
├── client/ # Next.js 15 frontend
│ ├── app/ # App Router pages
│ │ ├── [displayName]/ # Public creator profile (shareable)
│ │ ├── brand/ # Brand dashboard
│ │ ├── creator/ # Creator dashboard
│ │ ├── admin/ # Admin panel
│ │ └── (main)/ # Marketing / landing pages
│ ├── features/ # Feature-sliced modules
│ │ ├── auth/ # Auth hooks, API calls
│ │ ├── creators/ # Creator listing, profile, browse
│ │ ├── creator-portfolio/ # Portfolio upload & display
│ │ ├── orders/ # Order management
│ │ ├── briefs/ # Creative brief flow
│ │ ├── payments/ # Razorpay checkout hooks
│ │ └── chats/ # Real-time order chat
│ ├── components/ # Shared UI components
│ │ ├── landing/ # Marketing landing sections
│ │ └── ui/ # Primitive UI components
│ └── providers/ # React context providers (Auth, Query, Theme)
│
└── server/ # NestJS backend
└── src/
├── auth/ # JWT auth, guards, strategies
├── creator-profile/ # Creator profile CRUD + search
├── creator-portfolio/ # Portfolio video management
├── brand-profile/ # Brand profile management
├── orders/ # Order lifecycle
├── briefs/ # Brief creation & management
├── razorpay/ # Payment processing + webhooks
├── order-chat/ # Per-order real-time chat
├── chats/ # General messaging
├── creator-reviews/ # Brand reviews of creators
├── storage/ # AWS S3 file uploads
├── mail/ # AWS SES email service
├── agency/ # Agency workspace management
├── jobs/ # Background/scheduled jobs
├── realtime/ # Socket.IO gateway
└── webhooks/ # Razorpay + SES webhook handlers
server/.env)DATABASE_URL=postgresql://user:password@localhost:5432/ugcplatform
JWT_SECRET=your_jwt_secret
JWT_REFRESH_SECRET=your_refresh_secret
PORT=4000
CORS_ORIGIN=http://localhost:3000
# AWS
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=
AWS_S3_BUCKET=
# AWS SES
[email protected]
# Razorpay
RAZORPAY_KEY_ID=
RAZORPAY_KEY_SECRET=
RAZORPAY_WEBHOOK_SECRET=
# Non-refundable reward credit for buyers. The two rewards are configured
# independently — either can be switched on, off or re-priced without touching
# the other — and all four are read at runtime: change them and restart, no
# deploy needed. The signup reward covers BOTH brand and agency registration:
# one switch, one amount, no agency-specific variable.
ORDER_COMPLETION_CREDIT_ENABLED=false # 'true' rewards a completed order
ORDER_COMPLETION_CREDIT_PAISE=5000 # 5000 paise = ₹50
SIGNUP_WELCOME_CREDIT_ENABLED=false # 'true' rewards a new brand or agency
SIGNUP_WELCOME_CREDIT_PAISE=10000 # 10000 paise = ₹100
SWAGGER_ENABLED=true
NODE_ENV=development
client/.env.local)NEXT_PUBLIC_API_URL=http://localhost:4000/api
NEXT_PUBLIC_RAZORPAY_KEY_ID=your_razorpay_key_id
cd server
npm install
npx prisma migrate dev # run migrations
npx prisma generate # generate Prisma client
npm run start:dev # starts on port 4000
API docs available at http://localhost:4000/docs
cd client
npm install
npm run dev # starts on port 3000
Open http://localhost:3000
Browser
│
▼
Next.js 15 (App Router)
├── Server Components → fetch data at build/request time (ISR + SSR)
├── Client Components → interactive UI, React Query for client-side data
└── API Routes → minimal (auth redirect helpers)
│
▼ HTTP / WebSocket
NestJS API (REST)
├── JWT Auth (HTTP-only refresh cookie + Bearer access token)
├── Prisma ORM → PostgreSQL
├── S3 for media storage
├── SES for transactional email
├── Razorpay for payments + escrow
└── Socket.IO for real-time order chat
Key architectural decisions:
export const revalidate = 3600), giving near-static performance with fresh dataGET /creator-profile/:id) use OptionalJwtAuthGuard, which silently populates req.user when a valid token is present and allows unauthenticated access otherwisefeatures/ module with co-located API calls, hooks, types, and components/{displayName} or /brand/creators/brand/briefs/create?orderId=…/creator/orders/[orderId]/register, chooses Creator, then completes the profile wizard/{displayName} after admin approvalWhen running locally with SWAGGER_ENABLED=true, interactive API docs are available at:
http://localhost:4000/docs
All endpoints are prefixed with /api. Authentication uses JWT Bearer tokens for most routes; public creator browsing and profile endpoints allow unauthenticated access.
development — never push directly to mainfeat/…, fix/…, chore/…development; main is the production branchnpx tsc --noEmit in client/ before pushing to catch type errors