# features * register * list * filter * stats panel * stats collector * failure counter # MVP - [x] chore: data model - [ ] model : add "s" to failure - [ ] model : add "s" to folloing - [ ] add "blacklisted" - [x] data migration scripts - [ ] homepage - [x] form to register an instance - [ ] check for duplicates - [ ] grab first stats : version, users, groups, events - [ ] if fail, set failure to 1 - [x] confirmation page - [ ] find a way to populate location - [x] instances list, no pagination - [ ] abuse link - [ ] scaper - [x] select instances where failure < max_failure - [ ] for each entry, fetch stats - [ ] if fail, set failure to min(1, failure+1) - [ ] if success, set failure = 0 - [x] insert new stats - [x] update instances info - [ ] stats page - [x] big numbers - [x] total Instances - [x] total Users - [x] total Groups - [x] total Events - [x] over time - [x] instances over time area chart - [x] users over time area chart - [x] events over time area chart - [x] groups over time area chart - [ ] repartition - [ ] versions pie chart - [ ] languages pie chart (user weighted ?) - [ ] location pie chart - [ ] admin panel - [ ] authentication (shared secret, oauth ?) - [ ] list failed domain - [ ] rescan an instance - [ ] allow to blacklist a domain - [ ] remove duplicate stats ; keep one per day per instance - [x] package - [x] docker image with : s6 + crond + python + sqlpage - [ ] deploy on `beta-instances.mobilizon.org` - [x] DNS -> LB3 - [x] HC ping - [x] upload image - [x] docker compose config - [x] upload database - [x] start service # impl ## stack 1) sqlpage * webapp: sqlpage * cron : ? 2) python web framework django / flask / microdot / webpy