Skip to content

Architecture

Vicky edited this page Sep 6, 2024 · 9 revisions

The project architecture is based on a layered structure that combines a dynamic front-end, a robust back-end, and a database. This approach allows for a clear separation of responsibilities, facilitating maintenance, scalability, and integration of new features. The front-end, built with React, manages the user interface and interactions, while the back-end, developed in Python, handles the business logic and API requests. The database stores information about users, books, and the relationships between these entities.

BookQuest_Architecture

Technologies

It is important to note that the technologies chosen may evolve as the project progresses. For this reason, the versions used will also be specified in this document, in order to maintain a consistent environment between contributors.

Front-end

Stack

Testing

Deployment

  • Google cloud, Cloud Run + Compute Engine

Back-end

Stack

Testing

Deployment

  • Google cloud, Cloud Run + Compute Engine

Database

Stack

Motivation

We chose Microsoft SQL Server (MSSQL) as our database management system due to its robustness, performance, and compatibility with enterprise environments. MSSQL offers advanced transaction management and security features, making it a solid choice for our project’s needs.

Deployment

The database is deployed via Google Cloud SQL, a Platform as a Service (PaaS) solution that greatly simplifies the process of configuring and managing database instances. This cloud deployment approach allows us to leverage Google Cloud Platform’s (GCP) scalable and secure infrastructure while reducing maintenance overhead.

Database interaction

We use SQLAlchemy as the Object-Relational Mapping (ORM) tool to interact with the database. SQLAlchemy allows us to abstract SQL operations while maintaining maximum flexibility for executing complex queries. This abstraction layer also enhances code portability, ensuring that database changes are consistently reflected across the application.

Data model

More information about the database and its implementation can be found in the dedicated section, Data model

External integrations

The project uses the Google Books API to automatically retrieve book information via the ISBN, reducing the amount of manual input required by users.

Clone this wiki locally