Skip to content

Credits

Developers

This project was developed by the following people:

Open source community ❤

This project wouldn't have been possible without the awesome open source community, here are some of the libraries and resources used in this project:

  • hzeller: Huge shoutout to Henner Zeller for the awesome C++ library to control the LED matrix
  • Adafruit: LED matrix bonnet and guide to set up the pi
  • Nlohmann JSON: Modern JSON library for C++
  • pybind11: Amazing seamless operability between C++ and Python
  • aiocoap: Python library to create COAP server
  • bless: Python library used to set up a simple GATT server with BLE
  • GitPython: Python library to interact with git repositories
  • PixelArtIcons: Used in the app store with some widgets
  • Laravel: PHP framework used to create the App Store API
  • Flutter: Framework used to create the mobile app

Tools

  • Raspberry Pi: Used to control the LED matrix
  • Raspberry Pi cross-compiler: Used to compile the C++ code for the Raspberry Pi without needing to wait for hours
  • Android Studio: Used to develop the Android app
  • PHPStorm: Used to develop the App Store API
  • CLion: Used to develop the LED matrix controller
  • PyCharm: Used to develop the networking module
  • Docker: Simplified the development and deployment process by containerizing the app store API
  • ChatGPT: Helped me a lot to learn flutter and python
  • SQLite: Used to store the data in the networking module

Why Flutter?

This is the first time I've used Flutter, and I must say I'm impressed. The development process is smooth, hot-reload is a game-changer, the pub.dev ecosystem is rich, and the community is very active. I've always been able to find a package that does what I need, and when I couldn't, I was able to write my own without too much hassle.

I found it really easy to create a beautiful and responsive UI, the only steep learning curve was the state management, at first I used the standard setState of the StatefulWidget but then I switched to Provider and ChangeNotifier to keep the UI code totally separated from the business logic. Using the Provider package also allowed me to move the providers I needed in both the mobile app and the IDE to the shared library, so I could reuse them in both projects without duplicating code.