Creating a dashboard

Creating a dashboard

On the wall mounted TV in our office a dashboard is displayed. At a glance we can see what the current tasks for each member of our team are, which important events are coming up, which music is playing, if it will rain in the next 30 minutes, ... and much more.

In this 30 minute demo I'll explain how we leveraged both Laravel and Vue to build the dashboard. After demonstrating the dashboard itself we'll take a deep dive in the code. We'll take a look at the entire flow: the grid system, broadcast events, the Pusher service, some cool Vue mixins and much more. After this talk you'll be able to setup a dashboard using our code available at https://github.com/spatie/dashboard.spatie.be

A1b4b398630bbd32b77a82cbc37fae9a?s=128

Freek Van der Herten

July 27, 2016
Tweet

Transcript

  1. Creating a dashboard with Laravel, Vue and Pusher

  2. About me Freek Van der Herten Partner & developer at

    SPATIE @freekmurze https://murze.be
  3. Since 2003 Websites, applications and webshops Team 4 developers, 1

    manager Specialization Laravel development
  4. OPEN SOURCE SOFTWARE

  5. Open source software ± 80 packages on Packagist + 700

    000 downloads A lot of benefits: learning, forced to write documentation and tests, showing the quality of our work, eating our own dogfood
  6. https://spatie.be/opensource

  7. OUR OFFICE

  8. None
  9. None
  10. None
  11. https://github.com/spatie/dashboard.spatie.be

  12. None
  13. None
  14. None
  15. None
  16. None
  17. None
  18. None
  19. None
  20. None
  21. HIGH LEVEL OVERVIEW

  22. The dashboard is a single HTML page Displayed by a

    full screen browser Without full page reload Each tile wil be updated by JavaScript Each tile has it’s own update frequency In short
  23. Technology stack Laravel Pusher Vue.js

  24. Render the initial page Fetch data from external API’s (scheduled)

    Broadcast events when new data has arrived Laravel
  25. spatie/laravel-google-calendar spatie/last-fm-now-playing spatie/packagist-api graham-campbell/github Laravel

  26. Provides full-duplex communication channels over a single TCP connection Transporting

    events from server to the browser In realtime Secure Paid service Pusher
  27. WebSockets Transporting events from server to the browser In realtime

    Secure Paid service Pusher
  28. Transporting events from server to the browser In realtime Secure

    Paid service Pusher Magic
  29. Lot of ♥ from the Laravel community Easy to learn

    Each tile is a component Listen for incoming events Update the tile Vue.js
  30. DEMO

  31. Starting fresh Grid system The clock tile The Packagist tile

    Topics
  32. There will be 
 some live coding We’ll use 


    an internet connection
  33. DISPLAYING ON A TV

  34. Raspberry Pi 2

  35. Raspberry Pi 2 Powered by the USB port from the

    TV Uses Raspbian Jessie Boots into Chromium 51 in fullscreen mode Setup
  36. TRY IT OUT YOURSELF

  37. Source code https://github.com/spatie/dashboard.spatie.be Blog posts https://murze.be/2016/06/building-dashboard-using-laravel-vue https://murze.be/2016/06/grid-layout-dashboard/ Documentation

  38. ROUND UP

  39. https://laravel.com https://pusher.com https://vuejs.com https://vuecasts.com Interesting links

  40. https://www.geckoboard.com/ http://www.cyfe.com/ https://razorflow.com/ http://dashing.io/ 
 Built by Shopify, Ruby. No

    longer maintained, but works great https://panic.com/statusboard/ Alternatives
  41. Credits Willem Van Bockstal @willemvbockstal Looks + grid system Sebastian

    De Deyne @sebdedeyne Scrutinising + JS wizardry
  42. QUESTIONS?

  43. Thank you! https://joind.in/talk/xxx https://speakerdeck.com/freekmurze/creating-a-dashboard https://murze.be https://spatie.be/opensource