chitfund/old_docs_backup_20251105_20.../SIGNUP_QUICK_START.md

5.7 KiB

Signup Feature - Quick Start Guide

What's Been Added

Backend (Node.js/Express)

  • Public signup endpoint: POST /api/auth/signup
  • Comprehensive validation (mobile, email, password)
  • Automatic password hashing
  • Duplicate user checking
  • JWT token generation on signup

Frontend (Flutter)

  • Beautiful signup screen with modern UI
  • Form validation (client-side)
  • Password confirmation field
  • Optional fields (email, address, emergency contact)
  • Navigation between login and signup screens
  • Automatic login after successful signup

Documentation & Testing

  • Updated API documentation
  • Test script for backend validation
  • Implementation guide
  • Quick start guide (this file)

🚀 Quick Test

Test the Backend (3 minutes)

  1. Start the backend server:

    cd backend
    npm start
    
  2. Run the test script:

    node test-signup.js
    

    This will automatically:

    • Create a new user account
    • Test login with the new account
    • Retrieve the profile
    • Test validation errors
    • Show all results in the console

Test the Frontend (5 minutes)

  1. Start the Flutter app:

    cd luckychit
    flutter run
    
  2. Manual testing:

    • On login screen, tap "Sign Up"
    • Fill in the form:
      • Mobile: Any 10-digit number (e.g., 9123456789)
      • Full Name: Test User
      • Password: test123456
      • Confirm Password: test123456
    • Tap "Sign Up" button
    • You should be logged in automatically!

📱 User Experience Flow

Login Screen
    ↓ (Tap "Sign Up")
Signup Screen
    ↓ (Fill form + Submit)
Account Created
    ↓ (Auto login)
Member Dashboard

🎨 UI Features

Signup Screen Includes:

  • 📱 Mobile Number field (required, 10 digits)
  • 👤 Full Name field (required)
  • 📧 Email field (optional)
  • 🏠 Address field (optional, multi-line)
  • ☎️ Emergency Contact field (optional, 10 digits)
  • 🔒 Password field (required, min 6 chars, with visibility toggle)
  • 🔒 Confirm Password field (required, must match)
  • Real-time validation
  • 🎯 Loading indicator during submission
  • Success/error messages

🔐 Validation Rules Summary

Field Required Format Notes
Mobile Number Yes 10 digits Must be unique
Full Name Yes Any text -
Password Yes Min 6 chars Auto-hashed
Email No Valid email Optional
Address No Any text Optional
Emergency Contact No 10 digits Optional

📋 API Endpoint Quick Reference

Signup

POST http://localhost:3000/api/auth/signup

# Minimal request
{
  "mobile_number": "9123456789",
  "full_name": "John Doe",
  "password": "secret123"
}

# Full request with optional fields
{
  "mobile_number": "9123456789",
  "full_name": "John Doe",
  "password": "secret123",
  "email": "john@example.com",
  "address": "123 Main St",
  "emergency_contact": "9876543210"
}

Common Issues & Solutions

Backend Issues

Issue: "User with this mobile number already exists"

  • Solution: Use a different mobile number or login with existing credentials

Issue: "Mobile number must be exactly 10 digits"

  • Solution: Ensure mobile number is exactly 10 digits (no spaces, hyphens, or +91)

Issue: "Password must be at least 6 characters long"

  • Solution: Use a password with 6 or more characters

Frontend Issues

Issue: "Passwords do not match"

  • Solution: Ensure both password fields have the same value

Issue: Cannot navigate to signup screen

  • Solution: Ensure you've imported the signup screen in login_screen.dart

Issue: "Please enter a valid email address"


🧪 Test Scenarios to Try

Valid Scenarios

  1. Signup with all fields filled
  2. Signup with only required fields (mobile, name, password)
  3. Login after signup
  4. View profile after signup

Invalid Scenarios (Should show errors)

  1. Empty mobile number
  2. Mobile number with less/more than 10 digits
  3. Empty full name
  4. Password less than 6 characters
  5. Mismatched passwords
  6. Invalid email format
  7. Duplicate mobile number (signup twice with same number)

📁 Key Files to Review

Backend

backend/src/controllers/authController.js   (Line 17-114: signup function)
backend/src/routes/auth.js                  (Line 7: signup route)
backend/test-signup.js                      (Complete test suite)

Frontend

luckychit/lib/features/auth/views/signup_screen.dart  (Complete signup UI)
luckychit/lib/features/auth/views/login_screen.dart   (Line 228: signup link)
luckychit/lib/core/services/auth_service.dart         (Line 64-109: signup method)
luckychit/lib/core/services/api_service.dart          (Line 58-80: signup API)

🎯 Next Steps

  1. Test the feature using the quick test guide above
  2. Review the code in key files listed
  3. Customize the UI colors or validation rules if needed
  4. Deploy when ready!

💡 Pro Tips

  • The signup automatically logs in the user (returns JWT token)
  • New users are always created with role: 'member'
  • Managers can still use the existing "Create Member" feature
  • All passwords are securely hashed with bcrypt
  • Mobile numbers must be unique across the system
  • The test script uses random mobile numbers to avoid conflicts

📞 Need Help?

Check these files for detailed information:

  • Full implementation details: SIGNUP_FEATURE_IMPLEMENTATION.md
  • API documentation: backend/API_DOCUMENTATION.md
  • Test script output: Run node backend/test-signup.js

Happy Testing! 🎉