A complete web application for organizations, businesses, non-profits, cooperatives, and communities to create, manage and run online raffles. Built with Laravel and React.
This system is versatile and can be used by various types of organizations including:
- Businesses running promotional raffles
- Non-profit organizations fundraising through raffles
- Cooperatives organizing member-exclusive draws
- Communities hosting social events
- Schools and universities for campus events
- Clubs and associations for member engagement
The platform includes:
- Multi-tenant system: Each organization has its own isolated environment
- Raffle Management: Create, edit, and manage multiple raffles
- Participant Management: Track and manage raffle participants
- Prize Management: Set up multiple prizes for each raffle
- Flexible Entry System: Support for manual entry, CSV import, and online entry
- Interactive Draw System: Live drawing interface with animation and visual effects
- Winner Management: Track winners and prize claim status
- Public & Private Raffles: Control access with access codes for private raffles
- Responsive Design: Works on mobile, tablet, and desktop
- Backend: Laravel 10+
- Frontend: React with Inertia.js
- Styling: Tailwind CSS
- Database: MySQL/PostgreSQL/SQLite
- Authentication: Laravel Fortify
- UI Components: Custom components with React Icons
- PHP 8.1+
- Node.js 16+
- Composer
- npm or yarn
- MySQL, PostgreSQL, or SQLite
-
Clone the repository:
git clone https://github.com/your-username/raffle-management-system.git cd raffle-management-system -
Install PHP dependencies:
composer install -
Install NPM dependencies:
npm install -
Create environment file:
cp .env.example .env -
Generate application key:
php artisan key:generate -
Configure your database in the
.envfile:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=raffle_system DB_USERNAME=root DB_PASSWORD= -
Run migrations:
php artisan migrate -
Create storage link:
php artisan storage:link -
Build frontend assets:
npm run dev -
Start the development server:
php artisan serve
Visit http://localhost:8000 to access the application.
After registration, you'll be prompted to set up your organization with:
- Organization name
- Description
- Primary and secondary colors (for branding)
- Create a Raffle: Define title, description, date range, and entry limits
- Add Prizes: Create prizes with names, descriptions, images, and quantities
- Gather Entries: Add entries manually, import via CSV, or share the public entry link
- Conduct the Draw: Use the interactive draw interface to select winners
- Manage Winners: Track prize claims and communicate with winners
The system consists of the following primary models:
- User: System user accounts
- Organization: Entity running raffles (business, non-profit, cooperative, etc.)
- Raffle: Individual raffle events
- Prize: Prizes available in a raffle
- Participant: Individuals entering raffles
- RaffleEntry: Individual entries in a raffle
- Winner: Records of prize winners
- Private raffles are protected with access codes
- All user data is validated and sanitized
- CSRF protection for all forms
- Authentication required for administrative functions
- Input validation on all endpoints
Various system behaviors can be configured through environment variables:
APP_NAME: Application titleMAIL_*: Email configuration for notificationsDB_CONNECTION: Database type (mysql, pgsql, sqlite)FILESYSTEM_DISK: Storage system for images
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For questions or support, please open an issue on this repository or contact the maintainers.
Made with ❤️ for organizations of all types