Joinify facilitates the management of clubs, members, payments, and events within an academic or organizational setting. It supports a robust role-based access system and automates administrative workflows like membership validation, event organization, and payment tracking.
git clone https://github.com/masum184e/joinify.git
cd joinify
# Install PHP dependencies
composer install
# Set up environment
cp .env.example .env
php artisan key:generate
# Configure database in .env and run migrations
php artisan migrate
# Optional: Seed the database
php artisan db:seed
# Serve the application
php artisan serve
# Database configuration
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=joinify
DB_USERNAME=root
DB_PASSWORD=
# Default password for seeding
DEFAULT_USER_PASSWORD=defaultPassword123
# SSLCommerz Payment Gateway credentials
SSLCZ_STORE_ID=abcdefghijklmnopqrstuvwxyz
SSLCZ_STORE_PASSWORD=abcdefghijklmnopqrstuvwxyz@ssl
SSLCZ_TESTMODE=true
Basic user details (name, email, password, profile_picture)
- Global Role (e.g., Advisor)
- Member (student info)
- Club roles (President, Secretary, Accountant)
- Advisor
- President
- Secretary
- Accountant
- Name, description
- Related to members, events, and club-based roles
- Links a member to a club
- Enforces uniqueness of member per club
- Tracks membership payments
- Status: pending, paid, failed
- Belongs to a club
- Contains event details like title, schedule, location
- Can be invited to events
- Linked through a many-to-many table with events
-
Users
- hasOne user_global_roles
- hasMany club_user_roles
- hasOne member
-
User Global Roles
- belongsTo user
-
Clubs
- hasMany club_user_roles
- hasMany memberships
- hasMany events
-
Club User Roles
- belongsTo club
- belongsTo user
-
Members
- belongsTo user
- hasMany memberships
-
Memberships
- belongsTo member
- belongsTo club
- hasOne payment
-
Payments
- belongsTo membership
-
Events
- belongsTo club
- hasMany event_guests
-
Guests
- hasMany event_guests
-
Event Guests
- belongsTo event
- belongsTo guest
Relationship | Type | One Side | Many Side |
---|---|---|---|
User ↔ UserGlobalRole | One-to-One | User | UserGlobalRole |
User → ClubUserRole | One-to-Many | User | ClubUserRole |
Club → ClubUserRole | One-to-Many | Club | ClubUserRole |
User ↔ Member | One-to-One | User | Member |
Member → Membership | One-to-Many | Member | Membership |
Club → Membership | One-to-Many | Club | Membership |
Membership ↔ Payment | One-to-One | Membership | Payment |
Club → Event | One-to-Many | Club | Event |
Event → EventGuest | One-to-Many | Event | EventGuest |
Guest → EventGuest | One-to-Many | Guest | EventGuest |
Event ↔ Guest | Many-to-Many | Event | Guest |
- View all clubs and memberships
- Validate and manage club roles
- Monitor payments and memberships
- Manage all users and assign roles
- Manage club details
- Add and approve members
- Organize events and invite guests
- Track and verify payments
- Join clubs
- View upcoming events
- Pay membership dues
- Request role or submit reasons for joining
- Club admins (President, Accountant) can view a full list of members.
- Each member is linked to a user account and includes student information like department and student ID.
- Members are associated with clubs through Memberships.
- Public Event Views: Anyone can view public listings and details of events for a club.
- Admin Event Dashboard:
- Only secretaries or presidents can access the dashboard to:
- Create, view, edit, or delete events.
- Manage guest invitations per event.
- Only secretaries or presidents can access the dashboard to:
- Guests can be added to events by name and email (optional).
- Events support full CRUD operations.
- Guests are linked to events via a pivot table.
- Reusable guest records are created by email when provided.
-
New users can register as members and initiate payment for membership fees.
-
Integration with SSLCommerz allows real-time payment processing.
-
Payment flow:
- Creates a User, Member, Membership, and pending Payment record.
- Redirects to SSLCommerz hosted gateway for payment.
- Handles success, fail, and cancel callbacks.
-
Default payment amount is 123 BDT.
- Forget password
- Upload club banner by President
- Update club fee by Accountant
- Send club creation invitation to president, secretary, accountant email and verify them.
- Update payment details after successfull payment
- User settings
- Remove guest during update guest
- Prevent unverified executives(president, secretary, accountant) login
- Searching
- Pagination
- when advisor update executives member, it's email should changed as well as verified status