Instance comparison system
The system's goal is to give users a place on each instance where they can understand the state of the Pepeunit network.
Unified parser service
- The service polls all instances it knows about for their state.
- The service goes through all available instances within 1 hour, distributing requests evenly.
- When returning data, it should return an increment for 3 hours; if it returns everything at once, it should at least have a large per-IP limit.
- Approximate geolocation, ping, etc. are determined by IP.
- Items are added manually.
- Data from the parser service is cached once per hour.
Data generation for the parser
domain.com/pepeunitendpoint: system state with settings is returned through REST and GQL requests with caching and an update once per hour.- GQL and REST endpoints return a paginated list of domains known to the instance.
Data includes:
- Basic instance feature flags.
- Basic instance settings.
- When integration tests last passed and their result.
- Instance statistics.
- Instance owner contacts.
- Remove the author field, it has become redundant information.
Admin will be able to
- Trigger integration tests from the frontend; all passwords are generated randomly, and overall the tests are restructured so they can run without checking private repository functionality, through a special flag. Tests must take feature flags into account.
- Use a button for forced scanning of external instances; it goes through all domains separately and updates information.
- Use a button for forced scanning of a specific instance.
- Use a button that asks other instances for their list of domains, allowing domain lists to be synchronized across instances.
- In general, all routine tasks should report their execution more clearly. I think we can create a database table with the latest execution status of all main routine tasks.
- Maintain blacklists and whitelists.
Implementation
An instances table is needed to store all available instances:
- Instance domain.
- Instance IP address.
- Ping.
- Geolocation information.
- Information collection time.
- Cumulative counter for successful data collections.
- Latest collection status.
- Collection error, if any.
- Store complete JSON responses and work by schema versions to achieve compatibility between different instances. Each subsequent version will know the nuances of previous ones.
- The integration testing concept will need to be fully rebuilt.
- Config fact-checking is needed on startup for some variables, for example owner contacts.
Frontend or Grafana, needs thought
- A map with server geolocations is shown.
- A table with sorting by all parameters.