SMILE is a comprehensive volunteer management and event coordination platform built with modern web technologies. It connects volunteers, event organizers, and legal professionals in a unified ecosystem that facilitates community service, volunteer recognition, and legal support.
- Overview
- Key Features
- Technology Stack
- User Roles
- Prerequisites
- Installation
- Configuration
- Running the Application
- Project Structure
- Core Features
- AI-Powered Features
SMILE is an advanced volunteer management system that leverages AI and modern web technologies to create meaningful connections between volunteers and community service opportunities. The platform provides intelligent event recommendations, automated certificate generation, real-time messaging, and comprehensive analytics.
To streamline volunteer coordination, enhance community engagement, and recognize volunteer contributions through a seamless digital experience.
- π― AI-Powered Event Recommendations - Smart matching based on skills, interests, and location
- π Event Discovery & Application - Browse and apply to volunteering opportunities
- π Achievement System - Earn badges and track volunteer hours
- π Personal Dashboard - View stats, upcoming events, and impact metrics
- π Digital Certificates - Automated certificate generation for completed events
- β Event Reviews - Rate and review volunteering experiences
- π Leaderboard - Community recognition and gamification
- π¬ Real-time Chat - Communicate with organizers and fellow volunteers
- π Event Management - Create, edit, and manage volunteer events
- π₯ Volunteer Coordination - Review applications and manage participants
- π Analytics Dashboard - Track event performance and volunteer engagement
- π Certificate Issuance - Generate and distribute volunteer certificates
- π Event Reports - Comprehensive reporting on event outcomes
- β Review Management - View and respond to volunteer feedback
- π Notification System - Stay updated on applications and event changes
- πΈ Event Photo Gallery - Document and share event memories
- π‘οΈ User Management - Oversee volunteers and organizations
- π Platform Analytics - Monitor platform-wide metrics and trends
- π« Support System - Handle help requests and disputes
- π Event Oversight - Review and manage all platform events
- π Reporting Tools - Generate comprehensive platform reports
- π Contract Drafting - Create legal agreements for volunteer programs
- π Contract Archive - Maintain legal document repository
- βοΈ Legal Q&A - Provide legal guidance through a real lawyer
- π§ Contract Customization - Template-based legal document creation
- Framework: Laravel 12.0 (Latest)
- PHP: 8.2+
- Real-time Components: Livewire 3.6 & Volt 1.7
- Database: MySQL/PostgreSQL (Eloquent ORM)
- Search: Laravel Scout
- Monitoring: Laravel Telescope
- UI Framework: Tailwind CSS 4.0
- Component Library: DaisyUI 5.0
- JavaScript: Alpine.js 3.14
- Icons: Lucide Icons & Heroicons
- Build Tool: Vite 6.2
- Interactivity: Livewire Sortable
- AI Provider: OpenAI GPT & Embeddings API
- Embedding Model: text-embedding-3-small
- Use Cases:
- Event recommendations via cosine similarity
- AI chatbot
The platform supports four distinct user roles:
- Volunteer - Individuals seeking volunteer opportunities
- Requester/Organizer - Organizations or individuals creating volunteer events
- Admin - Platform administrators with full system access
- Lawyer - Legal professionals providing contract and legal services
- PHP >= 8.2
- Composer >= 2.0
- Node.js >= 18.x
- npm or yarn
- MySQL >= 8.0 or PostgreSQL >= 13
- OpenAI API Key (for AI features)
git clone https://github.com/nova9/smile.git
cd smilecomposer installnpm installcp .env.example .envEdit .env and configure;
php artisan key:generatephp artisan migratephp artisan db:seedphp artisan storage:linkThe platform uses OpenAI for:
- Event Recommendations: Generates embeddings for users and events, matches using cosine similarity
- Legal Chatbot: Provides platform guidance through GPT models
Ensure you have sufficient OpenAI API credits and configure the API key in your .env file.
Use the convenient composer script that runs all services concurrently:
composer devThis command starts:
- Laravel development server (port 8000)
- Queue worker
- Log viewer (Pail)
- Vite dev server (HMR for frontend assets)
Alternatively, run services individually:
Terminal 1 - Application Server:
php artisan serveTerminal 2 - Queue Worker:
php artisan queue:listen --tries=1Terminal 3 - Frontend Assets:
npm run devTerminal 4 - Logs (Optional):
php artisan pailOpen your browser and navigate to: http://localhost:8000
smile/
βββ app/
β βββ Http/Controllers/ # HTTP controllers
β βββ Livewire/ # Livewire components
β β βββ Admin/ # Admin dashboard components
β β βββ Volunteer/ # Volunteer interface
β β βββ Requester/ # Event organizer interface
β β βββ Lawyer/ # Legal professional interface
β β βββ Common/ # Shared components
β βββ Models/ # Eloquent models
β β βββ User.php
β β βββ Event.php
β β βββ Certificate.php
β β βββ Review.php
β β βββ ...
β βββ Services/ # Business logic services
β β βββ ChatbotService.php
β β βββ EmbeddingService.php
β β βββ EventRecommenderService.php
β β βββ FileManager.php
β β βββ ...
β βββ Jobs/ # Queue jobs
β βββ GenerateEmbedding.php
βββ database/
β βββ migrations/ # Database migrations
β βββ factories/ # Model factories
β βββ seeders/ # Database seeders
βββ resources/
β βββ views/ # Blade templates
β β βββ livewire/ # Livewire component views
β βββ css/ # Stylesheets
β βββ js/ # JavaScript files
βββ routes/
β βββ web.php # Main web routes
β βββ volunteer.php # Volunteer routes
β βββ requester.php # Organizer routes
β βββ admin.php # Admin routes
β βββ lawyer.php # Lawyer routes
βββ public/ # Public assets
βββ storage/ # File storage
βββ tests/ # Test files
β βββ Feature/
β βββ Unit/
βββ composer.json # PHP dependencies
βββ package.json # Node dependencies
βββ vite.config.js # Vite configuration
The platform uses OpenAI embeddings to match volunteers with relevant events:
- User Profiles: Generate embeddings from volunteer skills, interests, and experience
- Event Profiles: Create embeddings from event descriptions, required skills, and categories
- Matching Algorithm: Cosine similarity (60% skills match) + geographic proximity (40% location)
- Background Processing: Embeddings generated asynchronously via queued jobs
Automated certificate generation for completed volunteer work:
- Professional certificate templates with customizable designs
- Print-optimized A4 layout with proper page breaks
- Signature support for authenticity
- Bulk certificate issuance
- PDF export functionality
Multi-channel notification system:
- In-app notifications for immediate updates
- Email notifications for important events
- Notification preferences per user
- Read/unread status tracking
- Notification grouping and filtering
Comprehensive feedback mechanism:
- Star ratings (0.5 - 5.0 scale)
- Written reviews for detailed feedback
- Verified reviewer badges
- Review aggregation and statistics
- Response capabilities for organizers
Real-time communication features:
- Direct messaging between users
- Event-specific group chats
- Read receipts and typing indicators
- Message history and search
- File attachment support
Gamification to encourage participation:
- Milestone-based badges
- Skill-specific achievements
- Hours-based recognition
- Leaderboard rankings
- Public profile display
Professional legal document handling:
- Template-based contract generation
- Digital signature integration
- Version control for contracts
- Contract archive and retrieval
- Multi-party agreement support
Technology: OpenAI Embeddings (text-embedding-3-small)
Process:
- Generate embeddings for user profile (skills, interests, bio)
- Generate embeddings for event details (description, requirements)
- Calculate cosine similarity between user and event vectors
- Factor in geographic distance using Haversine formula
- Combine similarity scores with weighted algorithm
- Return top N recommended events
Code Location: app/Services/EventRecommenderService.php
Technology: OpenAI GPT Models
Features:
- Context-aware legal guidance
- Contract-related Q&A
- Legal terminology explanations
- Citation and reference support
- Multi-turn conversations
Code Location: app/Services/ChatbotService.php
Background Processing: Queue-based embedding generation
Implementation:
// Dispatch embedding job
GenerateEmbedding::dispatch(
$model,
['field1', 'field2'],
'combined text',
'embedding'
);Code Location: `app/Jobs/GenerateEmbedding.php``
Laravel Telescope is available for request inspection:
Visit: http://localhost:8000/telescope
Laravel Pail for real-time log streaming:
php artisan pailFresh migration with seeding:
php artisan migrate:fresh --seedRollback last migration:
php artisan migrate:rollbackGenerate model with migration:
php artisan make:model ModelName -mProcess queue jobs:
php artisan queue:workListen for new jobs:
php artisan queue:listenClear failed jobs:
php artisan queue:flushDevelopment:
npm run devProduction build:
npm run build- users - User accounts and profiles
- events - Volunteer events and opportunities
- event_user - Pivot table for volunteer applications
- reviews - Event reviews and ratings
- certificates - Volunteer certificates
- notifications - System notifications
- messages - Chat messages
- chats - Chat channels
- badges - Achievement badges
- contracts - Legal agreements
- files - File uploads
- tasks - Event-specific tasks
- categories - Event categories
- tags - Event tags
- addresses - Location data
- Authentication: Laravel's built-in authentication
- Authorization: Role-based access control (RBAC)
- CSRF Protection: Enabled on all forms
- XSS Prevention: Blade template escaping
- SQL Injection: Eloquent ORM parameterized queries
- Password Hashing: Bcrypt algorithm
- API Security: Rate limiting and throttling
// Embedding generation
$embedding = OpenAI::embeddings()->create([
'model' => 'text-embedding-3-small',
'input' => $text,
]);
// Chat completion
$result = OpenAI::chat()->create([
'model' => 'gpt-4',
'messages' => $messages,
]);Built with β€οΈ using Laravel, Livewire, and AI