Credits
Developers
This project was developed by the following people:
- murkrow: Project lead, developer
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.