Angelcam INC
Feeling safe is simply essential
1 year, 5 500+ hours
01 Home
Angelcam is a start-up which adds a community element to household security. Its solution aims at preventing false alarms caused, for example, by pets. Before setting the alarm off, the user or any assigned “angel” receives a notification.
Angelcam is a start-up which adds a community element to household security. Its solution aims at preventing false alarms caused, for example, by pets. Before setting the alarm off, the user or any assigned “angel” receives a notification.
Client:
Angelcam INC
System:
iOS & Android
Year:
2018–2019
Difficulty:
+ 5 500 hours
02 Assignment
All new
All new
Big things don’t happen without big changes.
The app had ambitious plans and its solution at the time had reached its limits, both in terms of design and technology. Therefore, it was decided to completely redo the app to facilitate the implementation of future security-technology elements and to significantly improve user comfort.
Concept
Design
UX
Development
Deployment
Service
To create Android-/iOS-native mobile apps that are ready for further development by the in-house team.
This meant we didn’t use proprietary libraries and the entire code came from the client.
Concept
Design
UX
Development
Deployment
Service
03 Overcoming obstacles
How it works
04 Highlights
How we resolved it
How we resolved it
Video stream
In order to ensure the best quality and reliability, we implemented the video stream through the HTTP Live Streaming protocol. Whenever speed was needed and low demands or quality weren’t among the main criteria (e.g. previews), we used MJPEG video stream. Additionally, MJPEG is used when the HLS stream isn’t available and the app can resolve this on its own.

Stream status detection
Additionally, we implemented stream status detection, letting the user keep track of potential blackouts, as well.



Events on timeline
Every time the timeline moves, it is synchronized with the currently playing stream. The timeline was divided by day and also displays all events in a well-arranged way, like showing important events from motion detectors, for instance.



Simple control
We made it possible to control the timeline in a way many users are accustomed to working with photos.

Timeline
We created a timeline which reflects a single day, together with points in time where the user simply searches for an event. Also, the user can create and share a video using a link.

REST API
Communication with the server was implemented based on the existing REST API, which prevented us from carrying out any major modifications.

HTTPS Live Streaming
The more demanding video stream is ensured via HLS (HTTP Live Streaming). This serves for limited or unlimited [KK2] video stream and can adjust the flow of data based on current network capacity. The video is divided into small segments, e.g. of 5 seconds. This playlist (or rather a small buffer of this playlist) is then gradually played.

Motion JPEG
MJPEG (Motion JPEG) is used for previews or as a back-up, which was already implemented in the original app. We took this solution over and improved it in order to – among other things – control the quality and demands of the stream and improve our reactions to bugs.

Own implementation of motion in the video recording
Given the previous choices and the almost-finished API, we had to choose our own implementation of motion in the video recording (play/pause, seek and time selection) as well as the calculation of the amount of video which had to be synchronized with the server, as the server automatically skips missing recordings in the cloud. [KK3] The player available from Google or iOS was used to play the video recording or live video. The list of cameras was implemented using an MJPEG stream for each camera, and is regulated based on the type of connection and by user-selected display.
05 Results
Modern, fast app
Modern, fast app
The result is a modern, fast app, fully ready for the additional features that are already in production.
Its new graphical and control elements make it easy to use and improve user comfort.
Android is implemented using the MVVM architecture including our framework and the Kotlin language.
When developing the iOS app, we made use of our open-source frameworks. FuntastyKit to support the MVVM-C architecture, CellKit to make our work with tables easier, and FTAPIKit, enabling a declarative and well-arranged administration of endpoints. This enables us to hand over the app to the in-house team anytime on request. Of course, the Secure Enclave was used for secure and encrypted storage of access data.
active montly users
cameras
data in Amazon cloud and still growing