System to display and manage multiple security cameras.
The solution is composed by 5 services:
- Camera Emulator
- FTP Server
- Database
- Back-end Server
- Front-end
Camera Emulator
This is used to simulate the IP cameras by generating an image every second.
The Camera Emulator can support FTP or not. In the first case, it uploads the images directly to the FTP server. In the second case, the Back-end Server will take care of downloading the images from the Camera Emulator.
FTP Server
FTP Server which allows to write and read on the host file system.
Database
Contains the list of cameras and their information.
Back-end Server
Provides three main functions:
- Camera Streams: retrieve the images from the Camera Emulator (which do not support FTP) and upload them to the FTP Server
- Display: serve the latest image from a given camera to the
client via websockets
- File Management: perform the backup of the images every 10 minutes
Front-end
Displays some, all, or one of the cameras at any given time.
Additionally, it allows to add, edit or remove the cameras.
My Contribution
Solo developer.
Technologies
Python 3, Flask, Flask-SocketIO, PostgreSQL, Docker, Docker-compose.
Why
Programming Contest on freelancer.com. I was awarded as winner among 18 participants for providing the best solution.
Where
My Github