🚀 Feature: Production-Ready Member Creation & Onboarding System
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 20/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Tranquilla
- Stack tecnologico
- tauri, typescript
- Ambito
- analytics, api, authentication, authorization, database, desktop, full-stack, security
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- TypeScript
- Stelle
- 7
- Fork
- 17
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di NexGenStudioDev/CommDesk
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
NexGenStudioDev/CommDesk#140 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 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 payloadForse di nuovo libera @anshul23102 l’ha presa 129 giorni fa e non c’è nessuna pull request aperta. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
NexGenStudioDev/CommDesk#130 · 2 commenti ·
-
Input text not visible in authentication formsForse di nuovo libera @anshul23102 l’ha presa 129 giorni fa e non c’è nessuna pull request aperta. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
NexGenStudioDev/CommDesk#123 · 2 commenti ·
-
[UX] Hardcoded window dimensions not DPI-aware — UI broken on high-DPI displaysForse già presa @anshul23102 l’ha presa 99 giorni fa. Aperta
NexGenStudioDev/CommDesk#141 · 1 assegnatario ·
Tutte le issue di NexGenStudioDev/CommDesk
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
QuantumNous/new-api#7839 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
bug p2 triaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
getpaseo/paseo#7071 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
test: make the #3408 Claude OAuth token fixture obviously fake so secret scanners stop flagging itAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
code-yeongyu/senpi#3436 ·
I maintainer di solito rispondono entro 1 giorno
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
lingdojo/kana-dojo#32505 · 1 commento · 5 reazioni ·
I maintainer di solito rispondono entro 1 giorno