{"id":22829146,"url":"https://github.com/eric-philippe/sae-whatsabook","last_synced_at":"2026-05-03T20:32:04.856Z","repository":{"id":219759659,"uuid":"749774840","full_name":"Eric-Philippe/Sae-WhatsABook","owner":"Eric-Philippe","description":"Sae WhatsABook ? Library Management School Project","archived":false,"fork":false,"pushed_at":"2024-02-27T20:48:14.000Z","size":15039,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-10T14:36:33.746Z","etag":null,"topics":["angular","api-rest","library","symfony"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Eric-Philippe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-29T11:22:07.000Z","updated_at":"2024-10-19T12:29:56.000Z","dependencies_parsed_at":"2024-01-29T17:17:11.357Z","dependency_job_id":"efffd297-bb7f-4a36-a418-41e92f44ae09","html_url":"https://github.com/Eric-Philippe/Sae-WhatsABook","commit_stats":null,"previous_names":["eric-philippe/sae-whatsabook"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Eric-Philippe/Sae-WhatsABook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eric-Philippe%2FSae-WhatsABook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eric-Philippe%2FSae-WhatsABook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eric-Philippe%2FSae-WhatsABook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eric-Philippe%2FSae-WhatsABook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Eric-Philippe","download_url":"https://codeload.github.com/Eric-Philippe/Sae-WhatsABook/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eric-Philippe%2FSae-WhatsABook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32583905,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","api-rest","library","symfony"],"created_at":"2024-12-12T19:13:26.125Z","updated_at":"2026-05-03T20:32:04.691Z","avatar_url":"https://github.com/Eric-Philippe.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# What's a Book? - Online Library\n\n## Introduction\n\nThis project is a web application in the context of the SAE course at the IUT of Blaganc. This wesite is a library management system. This repository contains the whole code of the project, including the `Php Symfony API`, the `EasyAdmin Back Office`, the `Angular Frontend` and the `MariaDB Database`.\n\n**The goal of this project is mainly just to be a demo and display technical features. It is not meant to be put in production.**\n\nYou can find the specifications in the [specifications](documentation/Projet_SF6_2023-24%20v2.md) file.\n\n## Contributors\n\n![Contributors](img/petty.png)\n\n- [Éric PHILIPPE]()\n\n## Table of contents\n\n- [What's a Book? - Online Library](#whats-a-book---online-library)\n  - [Introduction](#introduction)\n  - [Table of contents](#table-of-contents)\n  - [Documentation](#documentation)\n  - [Technologies](#technologies)\n  - - [Backend](#backend-1)\n  - - [Frontend](#frontend-1)\n  - - [Database](#database-1)\n  - [Frontend](#frontend)\n  - [Database](#database)\n  - [API](#api)\n  - [Back Office](#back-office)\n  - [Crontab](#crontab)\n  - [Installation](#installation)\n  - - [Dockers](#dockers)\n  - - [Manual](#manual)\n  - [Authors](#authors)\n\n## Documentation\n\n### User Case\n\n![User Case](documentation/UserCase.jpeg)\n\n### Original UML\n\n![UML](documentation/UML_BDD.jpeg)\n\n## Technologies\n\n### Backend\n\n| Technology       | Version |\n| ---------------- | ------- |\n| PHP              | 8.1.2   |\n| Symfony          | 5.8.4   |\n| Composer         | 2.6.6   |\n| EasyAdmin        | 4.0.0   |\n| Nelmio (Swagger) | 4.19.3  |\n\n### Frontend\n\n| Technology | Version |\n| ---------- | ------- |\n| Node       | 21.6.1  |\n| npm        | 10.2.4  |\n| Angular    | 16.2.0  |\n| Tailwind   | 3.4.1   |\n| TypeScript | 5.3.3   |\n\n### Database\n\n| Technology | Version |\n| ---------- | ------- |\n| MariaDB    | 11.4.0  |\n\n## Frontend\n\nThe frontend is an Angular application. It serves as the main interface for the users and members of the library. It allows to present the fictional library place, Instagram, How to become a member ...\nAlso, the main goal of it is to allow the users to search for books, see the details of a book, and to reserve a book in order to borrow it later. It comes with a login and register system, and a user profile page.\nThere is of course a support page and also a \"suggest a book\" feature.\n\n#### Illustrations\n\n![Main Page](img/f-welcome.png)\n\n\u003e The main page of the frontend\n\n![Search Page](img/f-search.png)\n\n\u003e The search page of the frontend\n\n![Dossier Page](img/f-dossier.png)\n\n\u003e The member application page of the frontend\n\n![Loans Page](img/f-loans.png)\n\n\u003e The loans page of the frontend\n\n![Reservation Page](img/f-reservation.png)\n\n\u003e The reservation page of the frontend\n\n## Database\n\nThe whole Database is in MariaDB, but mainly managed by the Symfony ORM.\nThe only migration available is the one to create the database and the tables. See the `Installation` section for more information.\nThe database can be filled with fixtures, see the `Installation` section for more information.\n\nThe database is a 3NF database, with 5 tables.\n\n### MCD (Model Conceptual Diagram) of the database\n\n![MCD](database/MCD_WhatsABook.png)\n\n\u003e You can find the script to create manually the database in the `database/scripts/` folder.\n\n## API\n\nThe API is a PHP Symfony application. It serves as the main interface for the frontend and the back office. It allows to manage the database, to create, read, update and delete data from the database. It also allows to authenticate users and to manage the user's profile. The routes are protected by a JWT token system. Every JWT key (private and public) are available in the `config/jwt/` folder, because this project isn't made to be put in production.\n\nThe API is documented with Swagger, and the documentation is available at the `/api/doc` route.\n\n![API Swagger](img/api.png)\n\nI've also use `Postman` to test the API, and the collection is available in the `server/doc/` folder.\n\n## Back Office\n\nThe back office is an EasyAdmin application. It serves as the main interface for the library's staff. It allows to manage the database in an user-friendly way. It also allows to manage the users, the books, the authors, the categories, the loans, the reservations, the members, the suggestions, the supports, the Instagram posts, and the member applications.\n\nEverything has been customized to fit the library's needs.\n\n### Illustrations\n\n#### Welcome Page\n\n![Welcome Page](img/b-welcome.png)\n\n#### Loans Page\n\n![Loans Page](img/b-loans.png)\n\n#### Confirmation Mail\n\n![Mail](img/b-mail.png)\n\n## Crontab\n\nThe application uses a crontab to erase automatically the reservations that are older than 7 days. The crontab is set to run every day at 00:00. Everything is made with `NodeJs` and `JavaScript`. It's only a simple script that uses that connects to the database and deletes the reservations that are older than 7 days, sending an email to the user to inform him that his reservation has been deleted.\n\nThe script can be found in the `services/` folder. And the crontab configuration file at the root of the project.\n\n## Installation\n\nThere is a `CLI.sh` file at the root of the project that allows you to run different commands to install the project. You can use it with the following commands:\n\n| Description                                      |\n| ------------------------------------------------ |\n| Installer toutes les dépendances                 |\n| Lancez le serveur Symfony                        |\n| Lancez le serveur Angular                        |\n| Lancez le script de suppression des réservations |\n| Créer la base de données                         |\n| Migrer la base de données et la remplir          |\n\n\u003e Please don't forget to give the `CLI.sh` file the right permissions to be executed.\n\n```bash\n\u003e chmod +x CLI.sh\n```\n\n### Dockers\n\nYou can use the `docker-compose.yml` file to run the whole project with `Docker`. You can find the `Dockerfile` and the `docker-compose.yml` in the `server/` folder.\n\n### Manual\n\n#### Backend \u0026 Databse Instructions\n\n**.0 Prerequisites**\n\n- Having a MariaDB server running\n\n**.1 Databse Creation with Php**\n\n```bash\n# Go to the server folder\n\u003e cd server\n\n# Install the dependencies\n\u003e composer install\n\n# Create the database\n\u003e php bin/console doctrine:database:create\n\n# Create the tables\n\u003e php bin/console doctrine:migrations:migrate\n\n# Load the fixtures\n\u003e php bin/console doctrine:fixtures:load\n```\n\n**.2 Backend Setup with Php**\n\n```bash\n# Go to the server folder\n\u003e cd server\n\n# Install the dependencies\n\u003e composer install\n\n# Start the server\n\u003e symfony server:start --port=8008\n```\n\n#### Frontend Instructions\n\n**.0 Prerequisites**\n\n- Having NodeJs installed\n\n**.1 Frontend Setup with Angular**\n\n```bash\n# Go to the frontend folder\n\u003e cd frontend\n\n# Install the dependencies\n\u003e npm install\n\n# Start the server\n\u003e ng serve\n\n# Or build the project, it will automatically place the files in the server/public folder\n\u003e ng build\n```\n\n#### Crontab Services Instructions\n\n**.0 Prerequisites**\n\n- Having NodeJs installed\n\n**.1 Crontab Setup**\n\n```bash\n# Go to the services folder\n\u003e cd services\n\n# Install the dependencies\n\u003e npm install\n\n# Start the script\n\u003e node index.js\n\n# Or use the crontab file\n\u003e crontab crontab\n```\n\n## Author\n\n- Éric PHILIPPE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feric-philippe%2Fsae-whatsabook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feric-philippe%2Fsae-whatsabook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feric-philippe%2Fsae-whatsabook/lists"}