🌱 SeedForge — Demo Data Generator
Version: 1.1.2
Compatibility: Flatboard Pro ≥ 5.0.0
Storage: JSON & SQLite (transparent)
License: GPL3
Download: in resources management

What it does
SeedForge is an admin plugin that populates your Flatboard forum with realistic fake data in one click. Useful for development, design reviews, load testing, and demos.
It generates:
- Fake users — random names, emails, and unguessable passwords (they cannot log in)
- Fake categories — with names, descriptions and Font Awesome icons
- Fake discussions — realistic titles and opening posts in the chosen language
- Fake replies — threaded posts inside each discussion
All generated entities are tracked in a local registry (seedforge_ids.json) so they can be removed cleanly without touching real data.
Installation
- Copy the
SeedForge/folder into your Flatboardplugins/directory. - Activate it from Admin → Plugins.
- Go to Admin → Plugins → SeedForge → Settings to configure generation parameters.
- Go to Admin → Plugins → SeedForge → Dashboard to generate or purge data.
Configuration
| Parameter | Description | Default |
|---|---|---|
| Fake users | Number of fake user accounts to create | 10 |
| Fake categories | Number of fake categories | 3 |
| Discussions / category | Discussions created per category | 5 |
| Replies / discussion | Reply posts per discussion (excluding first post) | 4 |
| Language | Content language: fr (French) or en (English) | fr |
| Purge before generating | Deletes existing fake data before each generation run | off |
Generating data
From the Dashboard tab, click Generate data. A live progress bar tracks each discussion as it is created. The counters on the right update in real time.
Example: 10 users · 5 categories · 20 discussions/cat · 10 replies/disc
→ 10 + 5 + 100 + 1 000=1 115 entries in roughly 20–40 seconds (SQLite).
Purging data
The Purge button in the danger zone removes every entity tracked by SeedForge (users, categories, discussions, posts) without touching any real content.
Security
- All routes require an active admin session (
requireAdmin()). - Generation AJAX routes do not use CSRF tokens — they are already restricted to admin-authenticated sessions and are not reachable from external pages.
- Fake user passwords are cryptographically random hex strings; these accounts cannot be used to log in.
Architecture
SeedForge/
├── plugin.json # Metadata, form fields, default config
├── SeedForgePlugin.php # boot() — registers routes
├── SeedForgeService.php # Generation and purge logic
├── SeedForgeController.php # Admin controller (GET steps + purge)
├── seedforge_ids.json # Runtime tracking of generated IDs (auto-created)
├── views/
│ └── admin.php # Admin UI (dashboard + settings tabs)
└── langs/
├── fr.json
├── en.json
└── de.json
How generation works (technical)
Generation is split into three sequential AJAX steps to avoid PHP and proxy timeouts:
- Step 1 — Users (
POST /admin/seedforge/step/users): creates all fake users at once. - Step 2 — Categories (
POST /admin/seedforge/step/categories): creates all categories. - Step 3 — Discussions (
POST /admin/seedforge/step/discussion): called once per discussion in a parallel pool of 10 concurrent requests. Each call creates one discussion and all its reply posts.
The JavaScript frontend uses a concurrency pool (10 parallel requests) to saturate available PHP workers while staying within connection limits.
Performance optimizations
The plugin bypasses Post::create() and calls StorageFactory::create()->createPost() directly during bulk generation. This eliminates the ~3 full cache-directory scans (forgetByTag) that the model triggers per post, replacing them with a single targeted invalidation per discussion after all posts are written.
| Scenario | Cache scans (before) | Cache scans (after) |
|---|---|---|
| 200 discussions × 25 posts | ~15 000 | ~600 |
Discussion::create() and Category::create() are still called through the normal models to ensure slugs are generated, hooks are triggered, and category counters are updated correctly.
Edited on Feb 19, 2026 By Fred .
- Plugins fake-data development-tool
- Like(1)
Thalles