in-Time Docs
in-Time · documentation

Face-recognition attendance for multi-site organisations

Employees check in and out by looking at a phone camera on their site's Wi-Fi. Each site runs a small relay server that keeps working when the head office is unreachable, and one central main server collects everything.

The three parts

PartRuns onRole
Phone pageAny phone browser on the site Wi-FiTakes the picture once a face is in front of the camera. It never decides who is checking in and never receives anyone's face data.
Relay serverA Windows (or Linux) PC on the site LANRecognises the face (OpenCV YuNet + SFace), stamps the check-in with trusted internet time, stores it in SQLite and pushes it to the main server. Shows today's check-ins and a QR code for phones.
Main serverA Linux server reachable from every sitePublic API for relays and the admin web console. Stores users, photos, settings and every check-in in PostgreSQL, recomputes OK/KO and re-checks each snapshot against the user's photo.
The admin console dashboard: today's counters, the relays with their state, and the latest check-ins.
The admin console on the main server: today's counts, each relay's last contact, and the latest check-ins.

Deployment order

  1. Deploy the main server, put it behind HTTPS and log in to the admin console.
  2. Add the departments and users (with a photo each).
  3. For each site, Relays → Add a relay on the main server and copy its token.
  4. Install the relay on a PC at the site with that token.
  5. Open the relay's QR code on a phone and do a test check-in.

Requirements at a glance

Main server
OSLinux with systemd (Debian/Ubuntu or Fedora/RHEL family)
Python3.10 or newer, with venv
DatabasePostgreSQL 12+ (the install script can install it)
NetworkA public HTTPS name the relays can reach; outbound HTTPS to the npm registry and OpenCV model zoo on first start
ClockNTP-synchronised: relay requests more than 5 min off are refused
Relay server
OSWindows 10/11 (main target) or Linux desktop
SoftwareNothing to install: the relay is delivered as a single executable
LANFixed IP or DHCP reservation; TCP 8443 open to phones
InternetRequired for check-ins (trusted time). Main server may be down; internet may not.
DiskAbout 130 MB for the executable plus ~39 MB of face models
in-Time · documentation

Pointage par reconnaissance faciale pour les organisations multi-sites

Les employés pointent leur entrée et leur sortie en regardant la caméra d'un téléphone connecté au Wi-Fi du site. Chaque site fait tourner un petit serveur relais qui continue de fonctionner quand le siège est injoignable, et un serveur principal central rassemble tout.

Les trois composants

ComposantS'exécute surRôle
Page téléphoneLe navigateur de n'importe quel téléphone sur le Wi-Fi du sitePrend la photo dès qu'un visage est devant la caméra. Elle ne décide jamais qui pointe et ne reçoit jamais les données faciales de quiconque.
Serveur relaisUn PC Windows (ou Linux) sur le réseau local du siteReconnaît le visage (OpenCV YuNet + SFace), horodate le pointage avec une heure Internet fiable, l'enregistre dans SQLite et l'envoie au serveur principal. Affiche les pointages du jour et un QR code pour les téléphones.
Serveur principalUn serveur Linux joignable depuis tous les sitesAPI publique pour les relais et console web d'administration. Stocke les utilisateurs, photos, paramètres et pointages dans PostgreSQL, recalcule OK/KO et revérifie chaque photo de pointage avec la photo de l'utilisateur.
Le tableau de bord de la console d'administration : compteurs du jour, relais et leur état, derniers pointages.
La console d'administration du serveur principal : chiffres du jour, dernier contact de chaque relais et derniers pointages.

Ordre de déploiement

  1. Déployez le serveur principal, placez-le derrière HTTPS et connectez-vous à la console d'administration.
  2. Ajoutez les départements et les utilisateurs (avec une photo chacun).
  3. Pour chaque site, Relays → Add a relay sur le serveur principal, puis copiez son jeton.
  4. Installez le relais sur un PC du site avec ce jeton.
  5. Ouvrez le QR code du relais sur un téléphone et faites un pointage de test.

Prérequis en bref

Serveur principal
SystèmeLinux avec systemd (famille Debian/Ubuntu ou Fedora/RHEL)
Python3.10 ou plus récent, avec venv
Base de donnéesPostgreSQL 12+ (le script d'installation peut l'installer)
RéseauUn nom HTTPS public joignable par les relais ; HTTPS sortant vers le registre npm et le dépôt de modèles OpenCV au premier démarrage
HorlogeSynchronisée par NTP : les requêtes des relais décalées de plus de 5 min sont refusées
Serveur relais
SystèmeWindows 10/11 (cible principale) ou Linux avec bureau
LogicielsRien à installer : le relais est livré sous forme d'un exécutable unique
Réseau localIP fixe ou réservation DHCP ; TCP 8443 ouvert aux téléphones
InternetIndispensable aux pointages (heure fiable). Le serveur principal peut être indisponible, Internet non.
DisqueEnviron 130 Mo pour l'exécutable et ~39 Mo de modèles faciaux