Platform
Platform-wide statistics and public impact data
22 stories across 5 personas | Coverage: 19/22 (86%)
Overview
Platform
Platform-wide features that serve the public face of Restarters -- the landing page, global impact statistics, data exports, embeddable widgets, and integration points used by external sites.
What Guests can do
Guests can view the landing page with platform impact statistics, switch the application language, dismiss alert banners, view recent community discussion topics from Discourse, and access embeddable CO2 impact visualisations for events and groups. They can also view aggregate statistics, search and filter device records, and view per-event and per-group repair statistics via the API.
What Restarters can do
Restarters can export device data from events, groups, or the entire platform as CSV files. They can also export event summaries for groups and retrieve their profile information via the API.
What NetworkCoordinators can do
NetworkCoordinators can export event summaries for their networks as CSV files.
What Admins can do
Admins can retrieve a list of all users via the API.
What ThirdParties can do
External organisations can retrieve aggregate platform impact data, event and group repair statistics, search device records, and embed CO2 impact widgets on their own platforms.
Cookie alerts
| Persona | Story | Method | Tests |
|---|---|---|---|
| Guest | As a Guest, I can dismiss an information alert banner | InformationAlertCookieController::__invoke | ❌ Uncovered |
Data exports
| Persona | Story | Method | Tests |
|---|---|---|---|
| Guest | As a Guest, I can search and filter device records via the API | ApiController::getDevices | ✅ Covered |
| NetworkCoordinator | As a NetworkCoordinator, I can export my network's event summary as CSV | ExportController::networkEvents | ✅ Covered |
| Restarter | As a Restarter, I can export all device records as CSV | ExportController::devices | ✅ Covered |
| Restarter | As a Restarter, I can export device data from an event as CSV | ExportController::devicesEvent | ✅ Covered |
| Restarter | As a Restarter, I can export device data from a group as CSV | ExportController::devicesGroup | ✅ Covered |
| Restarter | As a Restarter, I can export a group's event summary as CSV | ExportController::groupEvents | ✅ Covered |
| ThirdParty | As a ThirdParty, I can search and retrieve device records via the API | ApiController::getDevices | ✅ Covered |
Discussion integration
| Persona | Story | Method | Tests |
|---|---|---|---|
| Guest | As a Guest, I can view recent community discussion topics | DiscourseController::discussionTopics | ✅ Covered |
Embeddable widgets
| Persona | Story | Method | Tests |
|---|---|---|---|
| Guest | As a Guest, I can view embeddable CO2 impact visualisations for events and groups | OutboundController::info | ✅ Covered |
| ThirdParty | As a ThirdParty, I can embed CO2 impact widgets for events and groups on my platform | OutboundController::info | ✅ Covered |
Landing page
| Persona | Story | Method | Tests |
|---|---|---|---|
| Guest | As a Guest, I can view the platform's global repair impact statistics | AdminController::stats | ✅ Covered |
| Guest | As a Guest, I can view the landing page with platform impact statistics | HomeController::index | ✅ Covered |
Language preferences
| Persona | Story | Method | Tests |
|---|---|---|---|
| Guest | As a Guest, I can switch the application language | LocaleController::setLang | ✅ Covered |
Platform impact stats
| Persona | Story | Method | Tests |
|---|---|---|---|
| Admin | As an Admin, I can retrieve a list of all users via the API | ApiController::getUserList | ✅ Covered |
| Guest | As a Guest, I can view repair statistics for a specific group | ApiController::groupStats | ✅ Covered |
| Guest | As a Guest, I can view aggregate platform impact statistics | ApiController::homepage_data | ❌ Uncovered |
| Guest | As a Guest, I can view repair statistics for a specific event | ApiController::partyStats | ✅ Covered |
| Restarter | As a Restarter, I can retrieve my own profile information via the API | ApiController::getUserInfo | ✅ Covered |
| ThirdParty | As a ThirdParty, I can retrieve group repair statistics for embedding | ApiController::groupStats | ✅ Covered |
| ThirdParty | As a ThirdParty, I can retrieve aggregate platform impact data for embedding | ApiController::homepage_data | ❌ Uncovered |
| ThirdParty | As a ThirdParty, I can retrieve event repair statistics for embedding | ApiController::partyStats | ✅ Covered |
Source Files
app/Http/Controllers/API/DiscourseController.phpapp/Http/Controllers/AdminController.phpapp/Http/Controllers/ApiController.phpapp/Http/Controllers/ExportController.phpapp/Http/Controllers/HomeController.phpapp/Http/Controllers/InformationAlertCookieController.phpapp/Http/Controllers/LocaleController.phpapp/Http/Controllers/OutboundController.php