A modern, full-stack web platform for team registration with human verification, ID card upload, and automated email confirmation.
- Modern UI/UX - Beautiful, responsive design with smooth animations using React, Tailwind CSS, and Framer Motion
- Multi-Step Registration - Intuitive 4-step registration process
- Human Verification - reCAPTCHA v2 integration to prevent bot registrations
- ID Card Upload - Drag-and-drop file upload with preview and verification
- Unique Team ID - Auto-generated unique identifier for each team (TEAM-XXXX-XXXX format)
- Email Confirmation - Automated, beautifully designed confirmation emails
- TypeScript - Full type safety across frontend and backend
- React 18 with TypeScript
- Vite (build tool)
- Tailwind CSS (styling)
- Framer Motion (animations)
- React Hot Toast (notifications)
- Lucide React (icons)
- React Google reCAPTCHA
- Node.js with Express
- TypeScript
- Multer (file uploads)
- Nodemailer (email sending)
- UUID (ID generation)
team-registration-platform/
βββ frontend/ # React frontend
β βββ src/
β β βββ api/ # API service functions
β β βββ components/ # React components
β β βββ types/ # TypeScript types
β β βββ App.tsx # Main app component
β β βββ main.tsx # Entry point
β βββ package.json
β βββ vite.config.ts
βββ backend/ # Express backend
β βββ src/
β β βββ routes/ # API routes
β β βββ services/ # Business logic (email)
β β βββ types/ # TypeScript types
β β βββ utils/ # Helper functions
β β βββ server.ts # Express server
β βββ uploads/ # Uploaded ID cards
β βββ package.json
β βββ .env
βββ package.json # Root package.json
βββ README.md
- Node.js 18+
- npm or yarn
-
Clone and navigate to the project:
cd team-registration-platform -
Install all dependencies:
npm run install:all
Or install separately:
# Root dependencies npm install # Frontend dependencies cd frontend && npm install && cd .. # Backend dependencies cd backend && npm install && cd ..
-
Start development servers:
npm run dev
This starts both:
- Frontend: http://localhost:3000
- Backend: http://localhost:5000
# Start frontend only
npm run dev:frontend
# Start backend only
npm run dev:backend
# Build frontend for production
npm run buildThe project uses Google's test keys by default (always pass verification). For production:
-
Get your reCAPTCHA v2 keys from Google reCAPTCHA
-
Update frontend (
frontend/src/components/RegistrationForm.tsx):const RECAPTCHA_SITE_KEY = "your-site-key";
-
Update backend (
backend/.env):RECAPTCHA_SECRET_KEY=your-secret-key
By default, the backend uses Ethereal for testing emails. Ethereal credentials are auto-generated on first run.
For production with Gmail:
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
SMTP_FROM=your-email@gmail.comNote: For Gmail, you need to create an App Password
When using Ethereal (default):
- Start the backend server
- Complete a registration
- Check the console for the Ethereal preview URL
- Or visit Ethereal and login with the generated credentials
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/register |
Register a new team |
| POST | /api/verify-recaptcha |
Verify reCAPTCHA token |
| GET | /api/team/:teamId |
Get team by ID |
| GET | /api/health |
Health check |
curl -X POST http://localhost:5000/api/register \
-F "teamName=Awesome Team" \
-F "teamLeaderName=John Doe" \
-F "teamLeaderEmail=john@example.com" \
-F "teamMembers=[{\"name\":\"Jane\",\"email\":\"jane@example.com\",\"role\":\"Developer\"}]" \
-F "recaptchaToken=your-token" \
-F "idCard=@/path/to/id-card.jpg"- Header - Responsive navigation with logo and status indicator
- HeroSection - Animated landing page with feature highlights
- RegistrationForm - Multi-step form with progress indicator
- TeamMemberInput - Dynamic team member management
- FileUpload - Drag-and-drop with preview and verification
- SuccessPage - Confirmation with team ID card display
- Footer - Links and social media icons
- reCAPTCHA v2 human verification
- File type validation (JPEG, PNG, WebP, PDF only)
- File size limits (10MB max)
- Input sanitization
- CORS configuration
The platform is fully responsive and works on:
- Desktop (1024px+)
- Tablet (768px - 1023px)
- Mobile (320px - 767px)
-
Build the frontend:
cd frontend && npm run build
-
Deploy the
distfolder to your hosting provider -
Set environment variable for API URL if different from
/api
-
Set environment variables:
NODE_ENV=production PORT=5000 RECAPTCHA_SECRET_KEY=your-production-key SMTP_HOST=your-smtp-host SMTP_USER=your-smtp-user SMTP_PASS=your-smtp-pass SMTP_FROM=your-from-email FRONTEND_URL=https://your-frontend-url.com
-
Build and start:
cd backend npm run build npm start
MIT License - feel free to use this project for your own purposes.
Contributions are welcome! Please feel free to submit a Pull Request.
Built with β€οΈ using React, Express, and TypeScript