Facedoor
Application for recognition of employees and granting access to the office
The office has a system of access for employees using key cards, cards are often forgotten. That's why it was necessary to develop an access control system for employees within the company using biometric data, namely a person's face. And also implement integration with Redmine to ensure the opening of doors.
01
About the project
Desktop application
Mobile application
Mobile application
02
An employee comes to a door where a device is hanging
STEP 1
The system takes a photo and checks the employee's face
If the system recognizes the employee, the door opens. An employee can enter the office
STEP 2
STEP 3
Login attempts
Successful attempt
Unsuccessful attempt
An administrator has the ability to view login attempts, add, edit, delete employee access to the office
Desktop application
A list of employees
03
Employee information
Adding a new employee
An administration adds a photo of the employee, and the system assigns a rating to each photo depending on its informativeness
If there are less than 3 photos in the employee's profile, or they are not informative, the system issues a warning that the employee will not be identified
Frontend
How it works?
The React framework was used in the client part and a component-oriented approach was applied. Each functional block of the application was divided into components, allowing code to be reused rather than rewritten.
We used the Ant Design library of ready-made components, which provides various buttons, tables, forms, etc. This speeds up development, because developers do not have to write and style components from scratch.
The RTK Query library was used to work with network requests. This library also simplifies the management of data caching, which helps speed up the application and reduce the number of requests to the server.
React
React Native
RTK Query
Redux
04
TypeScript
Ant Design
Backend
The backend of the FaceDoor project consists of two applications implemented in Java and Python. The Java server uses the SmartActors framework, which implements the actor model.
When a user submits a photo for authorization in the system, it is transmitted to the server in Python. The server uses neural networks to recognize a face and check if it matches the images stored in the database on the server in Java. If a match is found, the Java server returns a signal to open the door.
Java
SmartActors
ResNet trained on VGG Face
Maven
PostgreSQL
Python 3
FastAPI
Pytorch
OpenCV
Pillow
Numpy
Dlib
ONNX
Psycopg
The Python server uses PyTorch, OpenCV, Dlib, Pillow and Numpy libraries for image processing and face recognition. It is a REST API implemented on FastAPI that handles HTTP requests for face recognition. The Python server uses a ResNet neural network trained on the VGG Face dataset to compare user-submitted photos with employee images stored in the database.