IoTFlow is a production-ready IoT platform that I built together with my partner to manage and monitor the faculty’s devices. We designed the system architecture from scratch and worked on the main parts of the platform, including device connectivity, telemetry collection, real-time data processing, and monitoring.
This project was an opportunity to explore how a modern IoT system is designed and operated. We built the backend with Flask and the frontend with React, used a test-driven development approach, and deployed the platform on Azure Kubernetes Service (AKS). We also used Prometheus and Grafana to monitor the services and understand the health of the system in real time.
Core Capabilities
- 🔌 Device Management: Complete device lifecycle with secure API key authentication
- 💾 Hybrid Data Storage: SQLite for device metadata + IoTDB for time-series telemetry
- 📡 Multi-Protocol Support: HTTP REST API + MQTT pub/sub messaging
- ⚡ Real-time Analytics: Advanced time-series queries, aggregations, and dashboards
- 🛡️ Enterprise Security: API key authentication, rate limiting, and secure endpoints
- 📈 Scalable Architecture: Redis caching, background processing, containerized services
- 🧪 Advanced Testing: Production-ready device simulators and testing framework
What I Learned
Working on IoTFlow helped me understand how IoT devices communicate with each other and with a central platform. I learned about communication protocols such as MQTT and CoAP, and how they can be used for different device connectivity needs.
I also gained practical knowledge of containers and microservices. I learned how to separate an application into smaller services, run those services with containers, and manage their deployment with Kubernetes. Deploying the project on AKS gave me a better understanding of how Kubernetes works in a cloud environment.
The project also introduced me to important software development practices. By using test-driven development, I learned how to write tests before or alongside the implementation and use them to guide the development process. I also learned how CI/CD pipelines can automate testing and deployment, making it easier to deliver new changes in a reliable way.
Tech Stack
- Backend: Python 3.8+, Flask, Poetry
- Database: SQLite (dev) / PostgreSQL (prod) + IoTDB for time-series
- Messaging: MQTT (Mosquitto), Redis
- Deployment: Docker Compose, AKS
Links
- Repository: github.com/IoT-Flow/Connectivity-Layer