Coder Social home page Coder Social logo

my_library's Introduction

My Library

An app to make available all the books I have in my personal library

Description:

This project aims to create a website to share all the books I have in my library. My friends and family could connect and see the books I could lend them or share their own review about the book.

This website contains a front-end accessible to anybody and a back-end only accessible to authenticated admin.

It is written in PHP 8.1, built with Symfony 6.0 framework, Twig and Bootstrap. The admin is built with EasyAdmin bundle. I used Docker and PostgresSQL to build up the DB.

  • Public site : The front-end lists all the books, shows the comments about each book and allows any user to send a comment about a book. The comment is not immediately published. I used Akismet API to detect spams. If Akismet consider the comment as spam, it is directly rejected. If not an email is sent to the admin and ask for approval or rejection for the newly added comment. If approved the comment is then published on the website. This process is asynchronous and uses Messages and Queues components of Symfony. Please see the workflow for a better understanding.

  • Admin panel : To have access to the admin, the user must be authenticated. Then it has access to the dashboard that list all the books, authors, comments and gives the rights for creation, edition, deletion of any data. This admin part also contains a form to add a book using ISBN DB API. The user can enter a ISBN to look for a book and it is automatically added to the database (both book and authors). If you want to try it out, please use admin / admin after running the fixtures.

  • Fixtures : During the development phase, I used fixtures to generate random data and fill in the DB. If you install the project, you can generate yours using this command : symfony console doctrine:fixtures:load --group=dev

How to start the project

1. Start servers

symfony server:start

2. Start docker

docker-compose up -d

3. Consume messages in the queue

symfony console messenger:consume async -vv

4. Watch for Sass changes

symfony run -d yarn dev --watch

5. Run tests

make tests

Future developments :

  • Users could send requests for the books they want to lend. Display the status (available/not available). I would also add a page to display the requests according to their status (pending, approved) and to remind me who has which book.
  • Push this website online.
  • Implements CI/CD.

my_library's People

Contributors

amelielecoz avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.