Skip to content

danolu/dues-manager

Repository files navigation

Dues Management Platform

A modern Laravel-powered platform for social, student or civic organisations to manage membership dues efficiently. Built with Laravel 12 and Tailwind CSS v4.

✨ Features

οΏ½ Flexible Authentication

  • Flexible Authentication – Users can log in with either User ID or Email

οΏ½ Dues & Payments

  • 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

πŸ‘₯ User Management

  • 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

βš™οΈ Settings & Configuration

  • 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

🎨 User Experience

  • Modern UI – Clean, responsive design with Tailwind CSS v4
  • Mobile-friendly – Optimized for smartphones, tablets, and desktops

πŸ› οΈ Tech Stack

Backend

  • Laravel 12 – PHP framework
  • PHP 8.2+ – Modern PHP features
  • MySQL – Relational database

Frontend

  • Tailwind CSS v4 – Utility-first CSS framework with modern @theme configuration

Integrations

  • Paystack – Payment processing

πŸ“‹ Requirements

  • 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)

πŸš€ Installation

1. Clone the Repository

git clone https://github.com/danolu/org-manager.git
cd org-manager

2. Install PHP Dependencies

composer install

3. Install JavaScript Dependencies

# Using pnpm (recommended)
pnpm install

# Or using npm
npm install

4. Environment Setup

# Copy environment file
cp .env.example .env

# Generate application key
php artisan key:generate

5. Configure Environment Variables

Edit .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

6. Database Setup

# Run migrations and seed database
php artisan migrate --seed

# Link storage for candidate photos
php artisan storage:link

This 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)

7. Build Assets

# Development build
pnpm run dev

# Production build
pnpm run build

8. Start Development Server

php artisan serve

Visit http://localhost:8000 in your browser.

πŸ”‘ Default Credentials

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.

βš™οΈ Configuration

Settings Management

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.

Key Routes

Public Routes

  • /login – User login (User ID or Email)
  • /register – New user registration (when enabled)
  • /forgot-password – Password reset request

User Routes (Authenticated)

  • / or /dashboard – User dashboard
  • /dues – View and pay membership dues

Admin Routes

  • /users – User management
  • /settings – System settings

πŸ“ Project Structure

β”œβ”€β”€ 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

Key Database Tables

  • users – User accounts with roles (is_admin) and categories
  • settings – Dynamic application settings
  • dues – Membership dues and payment records

🎨 Customization

Tailwind Theme

Customize colors and design tokens in resources/css/app.css:

@theme {
    --color-primary: #7366ff;
    --color-secondary: #f73164;
}

Custom Components

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.

πŸ§ͺ Development

Running Development Server

# Terminal 1: Laravel server
php artisan serve

# Terminal 2: Vite dev server (hot reload)
pnpm run dev

Building for Production

pnpm run build

πŸ“ License

This project is open-source and available under the MIT License.

🀝 Contributing

Contributions, issues, and feature requests are welcome!

πŸ‘¨β€πŸ’» Author

Daniel Oluborode

πŸ™ Acknowledgments

About

Platform for organisation to collect and manage membership dues.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages