

A points-based leaderboard extension for Flarum forums. Award points for community activity, display rankings with a beautiful podium, and motivate engagement through configurable point sources and time-based filters.
Screenshots
Podium & Rankings

Top Contenders & Honorable Mentions

Admin General Settings

Admin Points Settings

Admin Exclusions Settings

Admin Maintenance Settings

Admin Recalculate Modal

Features
π Podium Display β Top 3 users shown in a gold/silver/bronze podium with avatars and stats
π₯ Top Contenders β Ranks #4β#10 displayed in a responsive card grid
π Honorable Mentions β Compact two-column list for remaining users with infinite scroll
β° Period Filters β Daily, Weekly, Monthly, Quarterly, Yearly, and All-time rankings
β Configurable Points β Set point values for each activity type independently
π― 11 Point Sources β Discussions, posts, daily login, likes (given/received), reactions (given/received), best answers, badges, and votes
π·οΈ Tag Exclusions β Exclude discussions with specific tags from earning points
π₯ Group Exclusions β Hide users in selected groups from the leaderboard
π Maintenance Tools β Full recalculation and lightweight sync for point adjustments
𦴠Skeleton Loading β Smooth loading experience with animated placeholders
π± Responsive Design β Optimized layout for mobile, tablet, and desktop
π User Card Integration β Show leaderboard points on user cards throughout the forum
Installation
composer require huseyinfiliz/leaderboard:"*"
You can also install it via Extension Manager: search for huseyinfiliz/leaderboard.
After installing, run:
php flarum migrate
php flarum cache:clear
Updating
composer update huseyinfiliz/leaderboard
php flarum migrate
php flarum cache:clear
To remove the extension:
composer remove huseyinfiliz/leaderboard
Quick Start
For Users
- Navigate to the Leaderboard page from the sidebar
- Use the period pills to filter rankings (Daily, Weekly, Monthly, etc.)
- Click on any user card to visit their profile
- Your points are visible on your user card across the forum
For Admins
Navigate to Admin β Leaderboard to configure the extension. The panel has four tabs:
General β Set the leaderboard page title and the label shown next to point values (e.g., "Points", "XP", "Karma")
Points β Configure point values per activity, organized in collapsible sections:
- Core: Discussion started, Post created, Daily login (default: 1 each)
- Likes: Like received (1), Like given (0)
- Reactions: Reaction received (1), Reaction given (0)
- Best Answer: Best answer selected (2)
- Badges: Badge earned (3)
- Gamification: Upvote received (1), Downvote received (β1)
Set any value to 0 to disable that source. Negative values (e.g., downvotes) deduct points.
Exclusions β Select user groups or discussion tags to exclude from point earning
Maintenance β Two tools available:
- Recalculate All Activity β Full rescan of all source data. Re-creates point records from scratch. Use after changing tag exclusions or if data seems out of sync. Do not close the page while this runs.
- Sync Points β Lightweight recalculation of totals using current point values. Use after changing point values.
Optional Integrations
The extension automatically integrates with these extensions when they are enabled β no configuration needed:
Advanced: Point Lifecycle
Points are awarded and revoked automatically based on user activity:
Action performed β Points awarded β Totals updated
Action undone β Points revoked β Totals updated
Some examples:
- Starting a discussion awards
discussion_started points; hiding or deleting it revokes them
- A daily login awards
daily_login once per day
- Receiving a like awards
like_received; unliking or hiding the post revokes it
- A best answer selection awards
best_answer; unsetting it revokes it
Data integrity highlights:
- Atomic operations with row locking prevent partial updates
- Discussion deletion properly cascades and revokes all post-level points
- Hidden/moderated content has points revoked; restored content re-awards them
- Duplicate point records are prevented with existence checks
- Database fallback prevents double-awarding daily login points after cache clears
Advanced: Period Filtering
Rankings are filtered by the created_at timestamp of each point record:
- Daily β Last 24 hours
- Weekly β Last 7 days
- Monthly β Last 30 days
- Quarterly β Last 90 days
- Yearly β Last 365 days
- All Time β No filter
Translations
The extension ships with English translations. Community translations are very welcome!
Translate: Leaderboard at Weblate
Links
Support & Contributing
If you find this extension useful:
- β Star the repository on GitHub
- π Contribute translations