A modern Laravel-powered platform for social, student or civic organisations to manage membership dues efficiently. Built with Laravel 12 and Tailwind CSS v4.
- Flexible Authentication β Users can log in with either User ID or Email
- Dues Management β Track membership dues by tenure
- Online Payments β Integrated Paystack payment gateway with automatic fee calculation
- PDF Receipts β Generate and download payment receipts
- Payment Verification β Automatic payment verification and record keeping
- Role-based Access Control β Two user roles with specific permissions:
- Admin β Full system access (user management, settings, dues)
- User CRUD Operations β Admins can create, view, edit, and delete users
- Category-Based Organization β Users organized by categories (e.g., 100l, 200l, 300l, alumni)
- User Profiles β Member information and payment history
- Dynamic Settings β Configure organization name, address, contact info from database
- Role-Based Settings Access:
- Admin β Can update all settings (organization info, tenure, dues, registration)
- Tenure Management β Set current tenure
- Dues Configuration β Adjust membership dues amounts and deadlines
- Registration Control β Open/close new member registration
- Modern UI β Clean, responsive design with Tailwind CSS v4
- Mobile-friendly β Optimized for smartphones, tablets, and desktops
- Laravel 12 β PHP framework
- PHP 8.2+ β Modern PHP features
- MySQL β Relational database
- Tailwind CSS v4 β Utility-first CSS framework with modern
@themeconfiguration
- Paystack β Payment processing
- PHP 8.2 or higher
- Composer
- Node.js 20+ and pnpm (or npm)
- MySQL 5.7+ or MariaDB 10.3+
- Paystack account (for payment processing)
git clone https://github.com/danolu/org-manager.git
cd org-managercomposer install# Using pnpm (recommended)
pnpm install
# Or using npm
npm install# Copy environment file
cp .env.example .env
# Generate application key
php artisan key:generateEdit .env and set your configuration:
# Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_database_user
DB_PASSWORD=your_database_password
# Paystack (for payments)
PAYSTACK_PUBLIC_KEY=your_paystack_public_key
PAYSTACK_SECRET_KEY=your_paystack_secret_key
# Application
APP_NAME="Your Organization Name"
APP_URL=http://localhost# Run migrations and seed database
php artisan migrate --seed
# Link storage for candidate photos
php artisan storage:linkThis will create:
- Users table with role-based access control
- Positions table for dynamic voting positions
- Candidates table linked to positions
- Votes table for storing election results
- Settings table with default values
- Default admin user (check seeder for credentials)
# Development build
pnpm run dev
# Production build
pnpm run buildphp artisan serveVisit http://localhost:8000 in your browser.
After seeding, you can log in with:
- User ID or Email: Check your seeder file for default admin credentials
- Password:
password(you'll be prompted to change this on first login)
Note: Users can log in using either their User ID or Email address.
Access the settings page to configure:
- Organization name and contact information
- Current tenure
- Membership dues amount
- Election period toggle
All settings are stored in the database and can be updated without code changes.
/loginβ User login (User ID or Email)/registerβ New user registration (when enabled)/forgot-passwordβ Password reset request
/or/dashboardβ User dashboard/duesβ View and pay membership dues
/usersβ User management/settingsβ System settings
βββ app/
β βββ Http/Controllers/ # Application controllers
β β βββ Auth/ # Authentication controllers
β β βββ DueController.php
β β βββ UserController.php
β β βββ SettingController.php
β βββ Models/ # Eloquent models
β β βββ User.php # User model with roles
β β βββ Due.php # Membership dues
β β βββ Setting.php # Application settings
β βββ Providers/ # Service providers
βββ database/
β βββ migrations/ # Database migrations
β β βββ create_users_table.php
β β βββ create_settings_table.php
β β βββ create_dues_table.php
β βββ seeders/ # Database seeders
βββ resources/
β βββ css/
β β βββ app.css # Tailwind CSS with @theme config
β βββ js/
β β βββ app.js # JavaScript entry point
β β βββ bootstrap.js # Bootstrap file
β βββ views/ # Blade templates
β βββ auth/ # Login, register, password reset
β βββ users/ # User management views
β βββ dues/ # Dues management views
β βββ settings/ # Settings views
βββ public/
β βββ assets/ # Static assets (images, vendor JS/CSS)
β βββ build/ # Compiled assets (generated by Vite)
βββ routes/
β βββ web.php # Web routes
βββ vite.config.js # Vite configuration
βββ package.json # Node dependencies
usersβ User accounts with roles (is_admin) and categoriessettingsβ Dynamic application settingsduesβ Membership dues and payment records
Customize colors and design tokens in resources/css/app.css:
@theme {
--color-primary: #7366ff;
--color-secondary: #f73164;
}The project includes custom component classes for easy migration from Bootstrap:
.btn-primary,.btn-secondary,.btn-danger, etc..card,.card-body.form-control,.form-group.alert-success,.alert-danger, etc.
# Terminal 1: Laravel server
php artisan serve
# Terminal 2: Vite dev server (hot reload)
pnpm run devpnpm run buildThis project is open-source and available under the MIT License.
Contributions, issues, and feature requests are welcome!
Daniel Oluborode
- GitHub: @danolu
- Built with Laravel
- Styled with Tailwind CSS
- Payments by Paystack