Pollux is a feature-rich online voting system that allows users to create polls and share them publicly or privately. With real-time notifications, advanced security measures, and a robust admin panel, Pollux ensures a seamless and secure voting experience.
- User Registration & Authentication: Secure login and registration using Laravel Sanctum.
- Create & Manage Polls: Users can create polls and choose between public or private access.
- Signed URL for Private Polls: Share private polls with a unique signed link.
- Public Poll Feed: Discover and vote on polls created by other users.
- User Profiles: View all polls created by a specific user.
- Real-time Notifications: Users receive instant alerts when a poll ends.
- Email Result Delivery: Poll results are sent via email once a poll concludes.
- Fraud Prevention: Prevents duplicate votes using FingerprintJS, IP tracking, and User-Agent filtering.
- Admin Panel with Analytics: Built with Filament, featuring role-based access control.
- Scheduled Tasks & Queue Management: Automates updates and triggers events when polls end.
- Localization Support: Multi-language support for a global audience.
- Blade & Alpine.js: Dynamic UI components
- Tailwind CSS: Clean and modern styling
- Axios: Efficient API requests
- Laravel (Sanctum, RESTful API): Secure and structured backend
- Event, Listener, Queue, Jobs: Optimized event-driven architecture
- Notifications & Mail: Real-time user engagement
- Reverb & Observer Pattern: Ensuring smooth event handling
- Database Caching: Optimized performance
- Filament Admin Panel: Role-based access and analytics
- FingerprintJS & Custom Filtering: Prevent duplicate voting
- Social Authentication (Laravel Socialite)
- Scheduled Commands for Auto-Updates
- Clone the repository:
git clone https://github.com/your-username/pollux.git cd pollux - Install dependencies:
composer install npm install && npm run build - Set up the environment:
cp .env.example .env php artisan key:generate
- Update the database configuration
sqlitemight fail in some queries. Better if you use MySQL- If you want Redis-based caching, make sure you have that installed on your machine. If you don't have then change the following .env configuration to
databaseSESSION_DRIVER=database QUEUE_CONNECTION=database CACHE_STORE=database
- After configuring the database, run migrations:
php artisan migrate --seed
- Ensure the following PHP extensions are enabled in your local environment:
extension=intl extension=zip
- Update mail credentials in
.envto enable email notifications. - Update Reverb credentials in
.envbefore starting. - Start the development server:
php artisan serve
- Run the queue worker for real-time notifications and job processing:
php artisan queue:work- Start Reverb for real-time event broadcasting:
reverb:start- Start frontend development server:
npm run dev- Run scheduled tasks for poll updates:
php artisan schedule:work