Platform:
  • Apple iPad
Languages Used:
  • HTML
  • CSS
  • PHP
  • SQL
  • C#
  • ASP.net
Software tools used:
  • Panic Status Board
  • Microsoft Visual Studio
  • Microsoft Access
  • Microsoft IIS
  • Adobe Photoshop CC
Technologies and concepts used:
  • iTextSharp 3rd Party Library
  • JSON
Screen #1.  Important upcoming events are displayed along-side kudos from and to fellow coworkers. Screen #2.  Live sales data motivates staff by letting them see how they are improving.
Click an image to enlarge.

Description

This dashboard was built and created during my time as System Administrator at Central Coop with some assistance from my working partner. It consisted of 2 iPads each in 2 separate buildings near the employee time clocks. Its main purpose was to give the staff a better glimpse into how their co-op was operating on a moment-by-moment basis.

Charts of up-to-the minute sales data are retrieved from the point-of-sale server and displayed in interesting and informational ways.

Users can visit a custom "Shoutout" website and fill out a quick form to give props to a fellow coworker. The shoutout is displayed instantly on the dashboard for all employees to see. Also, thanks to the iTextSharp 3rd party library, users can also download all of the shoutouts to a PDF file for printing.

Other interesting information such as upcoming events, the current weather, and a scrolling marquee of the company's Twitter feed were also implemented.

It took a lot of tools, languages, and concepts to bring all of this project's elements together.

To start, I crafted a website for staff members to enter a shoutout. This webpage used HTML and CSS.

The next step was to create a database in Microsoft Access in a networked location so that it could be written to and read from. To get the functionality I needed - which was to submit the form, add the shoutout to the database, and output to both HTML and PDF - I used C# and ASP.net in Visual Studio.

Once the functionality to add entries to the database was complete, I needed to be able to do two things - output the shoutouts to an HTML file for display on the iPad, and output the shoutouts to a PDF so the user could print to a hard-copy. To get the shoutouts to HTML, a PHP query was run to connect to the shoutout database, retrieving all shoutouts made in the last 30 days. The data would then be parsed and transformed into a beautiful webpage ready for display. To write the shoutouts to a PDF file, I used a third-party C# library called iTextSharp.

Lastly, I needed to host the shoutout web page from a server so that the iPads could make calls to it. To do this, I set up a web server on one of our existing servers using Microsoft IIS. Once this was done, the iPads could now poll the web server every hour to retrieve the latest list of shoutouts for the world to see.

Next up is the sales data functionality. In order to display live sales data to the screen, we used an app called Panic Status Board for iPad. With this app, we were able to write custom PHP scripts to make calls every minute to the point-of-sale server. The PHP scripts would retrieve the sales data and format it all to a JSON format. Panic Status Board was able to pick up from there, parse the JSON data, and present it in an elegant fashion. There were some items that were too complex to transcode to JSON for Panic Status Board to process. In these cases, I used custom PHP scripts to write to HTML, then handed this HTML page over to the Panic Status Board app.



Lessons learned and obstacles overcome

This was a very fun and interesting project to see through to its finish. I learned a lot of new technologies, and also got to brush up on some tech that I had not used in a while.

One challenge we ran into, was getting accurate information on the table structure of the point-of-sale database we were using. Since it was managed by a third party, we were kept out of the loop on a lot of information that could have been useful. Fortunately, I was able to connect with other members of the co-op IT community and compare notes on what we knew about the database. By the end of the project, I had a pretty firm grasp on the layout of the data, and I was able to write some powerful queries for the application.

Another challenge was just making sense of all the components and how they fit together. There were so many languages and tools used that it could be overwhelming. But each technology used had its place and performed its job dutifully.

All in all, I am very fortunate to have had the opportunity to create a tool that has helped a company and all of its employees on a daily basis.