Title
Business Analytics and Reporting
Who
Dominik Kiss (dominik@eor.at)
My username on drupal.org is nodestroy. A long while ago I contributed to buddylist till it was replaced with friendlist and other solutions like flag module. I'm a computer science bachelor student at Vienna University of Technology, Austria. I'm working with drupal since 2005.
Overview
This project is about creating a generic logging and reporting solution built upon available Drupal 7 technologies. The main parts are a storage system for raw site-dependent data, a charting solution to provide rich visualizations and finally a reporting system which provides reports about the current and past state of the site. Based upon the provided data a site owner should be able to make data-driven decisions and to hand over well presented reports to other people.
Description
As explained in the Overview section this project consists of multiple more or less interrelated parts, I will give a brief description of each one.
Use case
- Custom logging functions (very site-dependent):
- Sold cars per brand for car-selling platforms
- Count of active users after sent newsletter
- How many users registered during the latest ad campaign
Besides the custom logging functions for site-dependent data a set of default drupal system logging will be provided. Some examples:
- Registered users per role per day
- Published nodes per node type per week
- Unpublished spam comments per week
Storage System:
Provide a generic Storage System build upon Drupals Entity/Metadata concept. A possible architecture could be: Domain entity for rough categorization of data, field-able datastore entity for fine categorization and data handling. Development of an extra field type for time-based data structures with timestamp and value as parameters. One big advantage to build upon Entities is the possibility to switch storage backends to improve performance (e.g. switch to mongo db for heavy loaded timestamp/value tables). Currently there is no drupal module addressing this issue in an adequate way. With metadata integration many drupal7/contrib features are coming for free, like rules integration. The purpose of the storage system is for collecting relevant data periodically. Nowadays one has to use the log messages to extract needed data out of drupal, the storage system would provide a much better way to deal with this issue.
Visualization System:
In Drupal we have many modules addressing the generation of charts. None of them is really perfect and currently none of them is supporting a suitable api to generate nice and user friendly charts. As the field of charts is really huge, I think a tailored solution would be the best one. So, this part will deal with specific timeline based charts to show past trends and to show predicted future o nes. This should integrate well with views and field formatters, so timeline charts can be produced using views, provided field formatters or api calls.
Reporting System:
Enables authorized users to generate reports and to hand over reports to other people. The goal is to use the power of existing D7 modules (e.g. Panels) and integrate reporting with them. A customizable dashboard is also part of this section. Another thought is the generation of pdf reports for email distribution.
Schedule
- till end of May: Storage system ready (defined entity types, coded custom field, tested storage system)
- till mid of June: Visualization system ready (charting tool for timeline based charts, views and field formatter integration)
- till end of June: Reporting system ready (integration with panels, dashboard for users)
- July: Default System logging, testing, testing, testing.
- August: buffer time for bug fixing, theming, documentation
Mentors: proposed mentor klausi (well known drupal guy from same university)