This is a large reporting web app that I developed for one of my clients. They use it as a sales tool for potential customers and as a reporting tool for existing customers.

The data for this reporting app comes from our own internal webpages that we scrape once a day. We scrape around 2,500 webpages and we scrape roughly 20 statistics off each page. The scraped data is stored in a MySQL database.

Admin users create reports for potential or existing customers to view. Each report is composed of 4 different mini-report types. Each report contains zero or more of each mini-report type. Three of the mini-reports are added to a report by simply checking a box. The last mini-report type has thousands of records to choose from - so there's an intricate AJAX search form that allows admins to add, remove, mix and match those records.

Customers then log into the public site to view their report.

Here are some additional features of this system: admins can generate auto-log in URLs so that customers don't have to type in a password; customers that log in and view a report are tracked so that admins can determine if anyone is viewing their reports; there's a super admin for creating admin users and setting their permissions; there is a smart sort option that will interleave the best mini-reports and the worst mini-reports so that customers don't see all the best ones first; you can disable reports and auto-disable reports on a future date; and there are 15 question mark popups on the admin site to describe what each form input does.

This project started in 2014 and it is still ongoing. The stack used is PHP, pajamaSQL, MySQL, HTML, CSS, JavaScript and jQuery.

Here's a screenshot of the admin AJAX search form: