start on general overview documentation. sleep time! :D authored by Jacob Priddy's avatar Jacob Priddy
# Overview
## Parts
This project consists of four distinct parts. The API server, the web frontend, the old elock server,
and the door controller code. The server API serves as the authoritative entity for determining
access to doors as well as managing its own data. It has two API's, the first of which is used for management
actions, while the second api is used by connecting doors to perform their basic functions such as
get their open mode schedules or check access to a door from a specified doorcode. The web frontend allows for
management of the system. The server API is self-sufficient, but the other parts rely on ONLY the server API.
### Server API
The server api is a cluster of docker containers that consist of the webserver, database, database management system,
and the actual api code itself. The technologies used are as follows:
- Web Server: [Nginx 1](https://www.nginx.com/)
- Database: [PostgreSQL 13](https://www.postgresql.org/)
- Database Management System: [pgAdmin 4](https://www.pgadmin.org/)
- API Code: [PHP 7.4](https://www.php.net/), [Laravel 7.x Framework](https://laravel.com/)
See more at its documentation page. [API](api.md)
### Web Frontend
The web fronted is a SPA written in [Vue.js](https://vuejs.org/). It provides an administration management interface
as well as a student portal to be able to perform actions such as changing ones doorcode.
### Door Controllers
The new generation of door controllers are written in C11 for maximum control, speed, stability, and portability.
They are running on an esp32 microcontroller in Espressif's
[ESP-IDF](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/) framework.
They are the ones that initiate contact with the API. The API cannot initiate contact with them.
They talk to the API only when needed and will make requests to verify a user's code, or to
gather when the next open mode events are.
See more at its documentation page. [Controller](controller.md)
### Old Elock System
The old elock system is running modified translation code to use the new frontend server API. Since the old
microprocessors cannot be re-flashed, the old server is still running in place, but running
a modified version of its old code to redirect requests to the new API server to keep only one central
authoritative power. It hails under the version name of `OLD ELOCK TRANSLATION AGENT`.
\ No newline at end of file