Full-Stack Event Management System for UNESCO Africa Engineering Week
Developed a comprehensive conference management platform for the 11th UNESCO Africa Engineering Week and 9th African Engineering Conference 2025. The platform handles everything from multilingual content delivery to complex registration workflows and payment processing.
Project Screenshot Placeholder
Full internationalization with English, French, and Arabic support including RTL layout for Arabic.
Secure PesaPal payment gateway integration with multiple payment methods and real-time verification.
Multi-step registration flow with duplicate prevention, email validation, and automated confirmations.
Comprehensive admin panel with registration management, analytics, and bulk operations.
Lazy loading, pagination, and efficient data handling resulting in 90% load time improvement.
Automated ticket generation, reminder emails, and edit link distribution with professional templates.
Preventing duplicate registrations while allowing users to complete incomplete registrations.
Solution: Implemented comprehensive duplicate checking with backend validation, real-time email verification, and intelligent completion status detection.
Ensuring reliable payment verification and registration completion across different payment methods.
Solution: Built robust payment callback system with fallback mechanisms, proper error handling, and automated ticket generation.
Admin dashboard became slow when handling thousands of registrations and tokens.
Solution: Implemented pagination, lazy loading, and batch operations resulting in 90% performance improvement.
// middleware.ts
export function middleware(request: NextRequest) {
// Handle internationalization
const response = intlMiddleware(request);
// Add cache control headers
response.headers.set(
'Cache-Control',
'public, max-age=3600, s-maxage=86400'
);
return response;
}
// registration.service.ts
async checkDuplicateEmail(email: string) {
const existing = await this.firestore
.collection('registrations')
.where('email', '==', email)
.get();
const completed = existing.docs.some(doc => {
const data = doc.data();
return data.paymentStatus === 'completed' ||
data.registrationDate ||
data.ticketSent;
});
if (completed) {
throw new BadRequestException(
'Email already registered'
);
}
}
This project demonstrates expertise in full-stack development, payment integration, internationalization, and performance optimization. Let's discuss how I can help with your next project.