🚀 Feature: Production-Ready Member Creation & Onboarding System
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 20/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- tauri, typescript
- Lĩnh vực
- analytics, api, authentication, authorization, database, desktop, full-stack, security
Hướng nghiên cứu
No repository files or tests are named. Start by mapping the listed API entry points—POST /api/v1/members, POST /api/v1/auth/activate-member, POST /api/v1/members/import, and GET /analytics/members—against the existing TypeScript and Tauri structure. Done requires all acceptance criteria, including authentication, activation, bulk import, permissions, audit logging, analytics, and desktop integration, to be implemented and verified.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Overview
Implement a complete member creation and onboarding system for CommDesk that supports:
- Dashboard member creation
- External onboarding via API key
- Secure activation workflow
- Bulk member import
- Role & permission management
- Audit logging
- Email-based activation
The goal is to make CommDesk the central identity and onboarding system for communities.
🎯 Goals
Create a single, unified member onboarding pipeline that allows communities to:
- Add members manually from the desktop dashboard
- Onboard members from external websites or hackathon portals
- Invite volunteers, mentors, judges, and sponsors
- Activate accounts securely
- Manage member roles and permissions
- Track onboarding analytics
🧩 Core Concepts
User vs Member
CommDesk separates authentication and community membership.
User
- Login account
- Email + password
- Can belong to multiple communities
Member
- Represents a user's role inside a specific community
Example:
User
email: [email protected]
Member
community: Apex Circle
role: Mentor
🔄 Member Status Lifecycle
On Boarding
↓
Active
↓
Inactive
↓
Suspended
↓
Banned
Default status when created:
On Boarding
Meaning the member must activate their account before access.
🛠 API Design
Unified Member Creation API
POST /api/v1/members
This API supports two authentication methods:
1️⃣ Dashboard Creation
Used by:
- Community owner
- Organizers
- Admins
Authentication:
Authorization: Bearer JWT
2️⃣ External Onboarding
Used by:
- Community websites
- Hackathon registration systems
- Event landing pages
Authentication:
Authorization: Bearer API_KEY
Example:
Authorization: Bearer cd_live_abc123
📥 Request Payload
Example:
{
"firstName": "John",
"lastName": "Doe",
"email": "[email protected]",
"primaryRole": "Mentor",
"location": "Berlin",
"skills": ["React", "Node"],
"areaOfInterest": ["MENTORSHIP"],
"internalNotes": "Speaker for React workshops",
"accessLevel": {
"internalDashboard": true,
"comunityForum": true,
"adminControls": false,
"superAdmin": false
}
}
⚙ Backend Workflow
validate request
identify community
check duplicate email
create user account if needed
create member record
set membershipStatus = On Boarding
generate activation token
send onboarding email
log audit event
🔐 Account Activation
Members must activate their account before becoming active.
Activation email example:
https://commdesk.app/activate?token=xxxxx
Activation API
POST /api/v1/auth/activate-member
Request:
{
"token": "activation_token",
"password": "NewSecurePassword"
}
Flow:
verify token
hash password
activate account
membershipStatus → Active
📦 Bulk Import
Support CSV onboarding for large communities.
Endpoint:
POST /api/v1/members/import
Example CSV:
firstName,lastName,email,role
John,Doe,[email protected],Volunteer
Alice,Lee,[email protected],Mentor
🔑 API Key System
Communities can generate API keys for integrations.
Example key:
cd_live_93hf93hf
Schema:
ApiKey
{
keyHash
communityId
permissions
createdBy
active
}
Example permissions:
member:create
member:read
event:create
hackathon:register
🧾 Member Schema
Member
{
_id
communityId
userId
firstName
lastName
email
primaryRole
location
skills
areaOfInterest
internalNotes
membershipStatus
accessLevel
profilePhotoUrl
onboardingSource
createdBy
createdAt
}
👤 User Schema
User
{
_id
email
passwordHash
emailVerified
createdAt
}
📊 Analytics
Track onboarding metrics.
Example metrics:
- Members added
- Members activated
- API onboarding
- Bulk imports
Endpoint:
GET /analytics/members
🔒 Security Requirements
Implement:
- Rate limiting (100 onboarding requests/hour per API key)
- Input validation using Zod
- Duplicate email prevention
- API key permission checks
- Audit logging
📜 Audit Logging
Track actions:
member_created
member_invited
member_activated
member_role_changed
member_removed
Schema:
AuditLog
{
actorId
action
communityId
metadata
createdAt
}
🖥 Desktop Integration (Tauri)
Member system will power the following screens:
- Add Member page
- Member List
- Invitation Tracking
- Role Management
📧 Email Templates
Required templates:
member_invitation
account_activation
password_reset
member_role_update
Recommended providers:
- Resend
- SendGrid
- Amazon SES
✅ Acceptance Criteria
- Unified
POST /api/v1/membersendpoint implemented - Dashboard onboarding supported
- API key onboarding supported
- Activation email flow working
- Member activation endpoint implemented
- Bulk import implemented
- Role and permission system enforced
- Audit logging implemented
- Onboarding analytics endpoint created
- Ngôn ngữ chính
- TypeScript
- Star
- 7
- Fork
- 17
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của NexGenStudioDev/CommDesk
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
NexGenStudioDev/CommDesk#140 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
NexGenStudioDev/CommDesk#138 ·
-
[Bug] signup.ts: uploadCommunityLogo is a simulated stub that converts files to data URLs with no size or type validation, sending multi-megabyte base64 strings in the signup payloadCó thể làm lại được @anshul23102 đã nhận 132 ngày trước và không có pull request nào đang mở. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
NexGenStudioDev/CommDesk#130 · 2 bình luận ·
-
Input text not visible in authentication formsCó thể làm lại được @anshul23102 đã nhận 132 ngày trước và không có pull request nào đang mở. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
NexGenStudioDev/CommDesk#123 · 2 bình luận ·
-
[UX] Hardcoded window dimensions not DPI-aware — UI broken on high-DPI displaysCó thể đã có người làm @anshul23102 đã nhận 101 ngày trước. Đang mở
NexGenStudioDev/CommDesk#141 · 1 người được giao ·
Tất cả issue của NexGenStudioDev/CommDesk
Issue tương tự
-
Object parameters lose their structure when resources is enabledCó thể đã có người làm @asts-top đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 2 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
jaegertracing/jaeger-ui#4618 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
pending close triaging
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
anomalyco/opencode#56765 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:plugins enhancement platform:vscode
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
anthropics/claude-code#103166 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Types: FlashListProps imports ViewabilityConfig from react-native, removed in RN 0.87+Có thể đã có người làm @efegokdemir đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Shopify/flash-list#2540 ·