PHPackages                             resofire/avatars - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. resofire/avatars

ActiveFlarum-extension

resofire/avatars
================

Locally generated gamer-style avatars for Flarum users.

v0.1.2(1mo ago)018↑1400%MITPHP

Since Mar 20Pushed 1mo agoCompare

[ Source](https://github.com/ResofireV2/avatars)[ Packagist](https://packagist.org/packages/resofire/avatars)[ RSS](/packages/resofire-avatars/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (8)Dependencies (1)Versions (4)Used By (0)

RF Avatars
==========

[](#rf-avatars)

A [Flarum](https://flarum.org) extension that automatically generates unique, gamer-style avatars for users — entirely locally, with no external API calls.

Avatars are generated using PHP's GD library and saved to `assets/avatars` as standard PNG files. Every avatar is deterministic: the same username always produces the same avatar within a chosen style.

Features
--------

[](#features)

- **6 gamer-style avatar styles** — Pixel Gamer, Cyberpunk, Fantasy Warrior, Sci-Fi Android, Orc Warrior, Anime Chibi
- **Fully local** — no external API calls, no dependencies beyond PHP's built-in GD extension
- **User style picker** — users can select their preferred style from their settings page and see a live preview of all 6 options rendered from their actual username
- **Admin default** — admins choose a default style for new users via the admin panel
- **Automatic generation** — avatars are generated on registration and lazily for existing users on first load
- **Safe file management** — all generated files are prefixed with `rf_` to distinguish them from manually uploaded avatars; a flush button in the admin panel clears them all cleanly

Requirements
------------

[](#requirements)

- Flarum 1.x
- PHP with GD extension enabled (standard on virtually all hosts)

Installation
------------

[](#installation)

```
composer require resofire/avatars
php flarum migrate
```

Then enable the extension in your admin panel.

How It Works
------------

[](#how-it-works)

When a new user registers, an avatar is generated in the admin's chosen default style and saved to `assets/avatars/rf_*.png`. The user's `avatar_url` column is updated to point to this file — it behaves identically to a manually uploaded avatar from Flarum's perspective.

If a user opens their settings page, they will see a style picker showing all 6 avatar styles rendered as live previews from their own username. Selecting a style and saving regenerates their avatar, deletes the old file, and updates their record — all in one request.

Existing users without an avatar get one generated lazily on their first page load.

Admin Panel
-----------

[](#admin-panel)

The extension adds two settings to the admin panel:

- **Default Avatar Style** — the style applied to new users and used as the fallback
- **Flush Avatars** — deletes all `rf_`-prefixed avatar files from `assets/avatars` and clears the corresponding database records, allowing all avatars to be regenerated fresh

Avatar Styles
-------------

[](#avatar-styles)

StyleDescriptionPixel Gamer8-bit face with a gaming headsetCyberpunkGreen-skinned face with a cyber eye implantFantasy WarriorElven face with pointed ears and a gemstone circletSci-Fi AndroidRobotic face with scan-line eyes and panel detailsOrc WarriorGreen brutish face with tusks and wild spiked hairAnime ChibiLarge expressive eyes with blush marks and sailor collarAll visual features — skin tone, hair color, eye color, accessories, scars, expressions — are derived deterministically from the username hash, so every user gets a unique face within their chosen style.

License
-------

[](#license)

MIT — see [LICENSE](LICENSE) for details.

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance91

Actively maintained with recent releases

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity26

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

3

Last Release

51d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ce3b79a1a273ec4db4bf7390fdb50584c02c4e69a55c032ef67746fb13b6c3c3?d=identicon)[ResofireV2](/maintainers/ResofireV2)

---

Top Contributors

[![ResofireV2](https://avatars.githubusercontent.com/u/266603343?v=4)](https://github.com/ResofireV2 "ResofireV2 (8 commits)")

---

Tags

avatarflarumgamer

### Embed Badge

![Health badge](/badges/resofire-avatars/health.svg)

```
[![Health](https://phpackages.com/badges/resofire-avatars/health.svg)](https://phpackages.com/packages/resofire-avatars)
```

###  Alternatives

[fof/upload

The file upload extension for the Flarum forum with insane intelligence.

188171.7k15](/packages/fof-upload)[fof/byobu

Well integrated, advanced private discussions.

61105.8k9](/packages/fof-byobu)[fof/gamification

Upvotes and downvotes for your Flarum community

4157.1k6](/packages/fof-gamification)[fof/user-bio

Add a user bio to user profiles

2196.5k9](/packages/fof-user-bio)[flarum-lang/russian

Russian language pack for Flarum.

13126.1k](/packages/flarum-lang-russian)[fof/drafts

Allow users to create post and discussion drafts

1771.1k5](/packages/fof-drafts)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
