From fcbb0bf955ec870c1062aa6c3dede055698e0854 Mon Sep 17 00:00:00 2001 From: Gabriel Borges Date: Tue, 4 Jun 2024 14:52:21 -0300 Subject: [PATCH 1/2] docs: improve make commands --- Makefile | 30 +++++++ README.md | 77 ++++++++++++------ assets/concept-map.png | Bin 124585 -> 0 bytes backend/.pylintrc | 2 +- backend/Makefile | 24 ------ backend/README.md | 49 ----------- .../versions/17eb199d7416_initial_commit.py | 51 ------------ docker-compose.yaml | 10 +-- frontend/.env.example | 1 - 9 files changed, 90 insertions(+), 154 deletions(-) create mode 100644 Makefile delete mode 100644 assets/concept-map.png delete mode 100644 backend/Makefile delete mode 100644 backend/README.md delete mode 100644 backend/migrations/versions/17eb199d7416_initial_commit.py delete mode 100644 frontend/.env.example diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..04cbeb6 --- /dev/null +++ b/Makefile @@ -0,0 +1,30 @@ +BACKEND_CONTAINER_NAME=python_backend + +.PHONY: docker/start docker/start-build docker/clean backend/test backend/migrate backend/upgrade + +# Docker commands: + +docker/start: + docker compose up + +docker/start-build: + docker compose up --build + +docker/clean: + docker compose down --volumes --rmi all + +# Backend commands: + +backend/migrate: + @if [ "$(message)" = "" ]; then \ + echo "Please provide a migration message. Usage: make migrate message='Your migration message'"; \ + exit 1; \ + else \ + docker compose exec $(BACKEND_CONTAINER_NAME) python3 -m flask --app main db migrate -m "$(message)"; \ + fi + +backend/upgrade: + docker compose exec $(BACKEND_CONTAINER_NAME) python3 -m flask --app main db upgrade + +backend/test: + docker compose exec $(BACKEND_CONTAINER_NAME) pytest \ No newline at end of file diff --git a/README.md b/README.md index ad044b6..127be54 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,76 @@ # Bookstore Management System -The Bookstore Management System is designed to showcase the integration of various technologies for building a web application -![Concept Map](assets/concept-map.png) +The Bookstore Management System is a web application designed to demonstrate the integration of various modern technologies and best practices in software development. This project serves as a showcase of how to effectively combine multiple tools and frameworks to create a robust, maintainable, and scalable application. -## Overview -It consists of the following components: +## Key Features + +### Deployment and CI/CD + +- _Docker and Docker Compose_: Containerization of the application for consistent and isolated environments, enabling easy deployment and scaling. +- _GitHub Actions_: Automated pipeline for continuous integration and continuous deployment (CI/CD), ensuring code quality and rapid delivery of updates. -Backend API (Python Flask + Postgres): Implements CRUD (Create, Read, Update, Delete) operations for managing books. Utilizes PostgresSQL for data storage, demonstrating the integration of Flask with a NoSQL database. +### Backend -Frontend Application (React): Provides a user-friendly interface for browsing and managing books. Interacts with the Flask backend via RESTful API to fetch and update data. +- _MVCS Architecture_: Implementation of Model-View-Controller-Service architecture for a well-structured and modular backend. +- _Flask_: A lightweight and flexible web framework for building the server-side application. +- _PostgreSQL with Flask-SQLAlchemy_: Powerful ORM for database management and seamless interaction with a PostgreSQL database. +- _Marshmallow_: Schema validation and serialization/deserialization library for managing input/output data integrity. +- _Pytest_: Unit testing framework to ensure the reliability and correctness of the backend code. -This POC was developed do demonstrate the CI/CD Github actions working together with the following AWS Services: -1. AWS Elastic Beanstalk for Flask -2. AWS RDS for Postgress -3. AWS Amplify for the React web app -4. Docker was used for AWS local development +### Frontend +- _React with TypeScript_: Modern frontend library combined with TypeScript for type safety and robust application development. +- _Reusable Components_: Building blocks for creating maintainable and scalable UI. +- _ESLint and Prettier_: Tools for code linting and formatting, ensuring consistent and clean codebase. +## Project Structure + +It consists of the following components: + +Backend API (Python Flask + Postgres): Implements CRUD (Create, Read, Update, Delete) operations for managing books. Utilizes PostgresSQL for data storage, demonstrating the integration of Flask with a SQL database. + +Frontend Application (React): Provides a user-friendly interface for browsing and managing books. Interacts with the Flask backend via RESTful API to fetch and create data. ## Installation -1. Install and set up the backend, follow the instructions in the [`backend/README.md`](./backend/README.md) file. +1. Docker is being used to run the backend, frontend, database and even the database manager (PgAdmin). In order to install it make sure to have both docker and docker-compose installed. + +2. To start the services run `make docker/start` + +### Makefile Commands -2. Docker is being used to run the backend, frontend, database and even the database manager (PgAdmin). In order to install it make sure to have both docker and docker-compose installed. +This Makefile provides convenient targets to automate common development tasks. -3. To start the services run `docker compose up` +- **docker/start**: Starts Docker containers. +- **docker/start-build**: Starts Docker containers and rebuilds images. + +- **docker/clean**: Remove volumes and delete all images associated with the containers defined in the `docker-compose.yml` file. + +- **backend/migrate**: Runs Flask migration with a specified message. + +- **backend/upgrade**: Upgrades the database schema using Flask. + +- **backend/test**: Runs pytest for testing. ### PgAdmin + +PgAdmin is a popular open-source administration and development platform for PostgreSQL, a relational database management system. It provides a graphical interface for users to manage their PostgreSQL databases, execute SQL queries, monitor database activity, and perform various administrative tasks. + If you want to see your database on PgAdmin, you'll need to follow a few steps: 1. Access to PgAdmin: - - **URL:** http://localhost:5050 - - **Username:** pgadmin4@pgadmin.org - - **Password:** admin + + - **URL:** http://localhost:5050 + - **Username:** pgadmin4@pgadmin.org + - **Password:** admin 2. Add a new server in PgAdmin: - - **Host:** name/address postgres - - **Port:** 5432 - - **Username:** postgres - - **Password:** changeme + - **Host:** name/address postgres + - **Port:** 5432 + - **Username:** postgres + - **Password:** changeme + +## References -# References -1. The database docker configuration was retrieved from [khezen/compose-postgres](https://github.com/khezen/compose-postgres/tree/master) \ No newline at end of file +1. The database docker configuration was retrieved from [khezen/compose-postgres](https://github.com/khezen/compose-postgres/tree/master) diff --git a/assets/concept-map.png b/assets/concept-map.png deleted file mode 100644 index 37951f34d5e300a576a2e336a00a1e3df53d9ec6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124585 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 diff --git a/backend/.pylintrc b/backend/.pylintrc index 27d068f..8204753 100644 --- a/backend/.pylintrc +++ b/backend/.pylintrc @@ -1,4 +1,4 @@ [MASTER] disable= - C0114, C0115, R0903, C0413, C0116, C0415 + C0114, C0115, R0903, C0413, C0116, C0415, F0001 ignore-paths=migrations/ diff --git a/backend/Makefile b/backend/Makefile deleted file mode 100644 index 00cdd57..0000000 --- a/backend/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -.PHONY: migrate upgrade start start-build clean test lint - -migrate: - @if [ "$(message)" = "" ]; then \ - echo "Please provide a migration message. Usage: make migrate message='Your migration message'"; \ - exit 1; \ - else \ - python3 -m flask --app main db migrate -m "$(message)"; \ - fi - -upgrade: - python3 -m flask --app main db upgrade - -start: - docker compose up - -start-build: - docker compose up --build - -clean: - docker compose down --volumes --rmi all - -test: - pytest diff --git a/backend/README.md b/backend/README.md deleted file mode 100644 index 89bdbf5..0000000 --- a/backend/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# Flask Backend Rest API -this is the back-end of the project. - -## Installation - -1. Copy the .env-example to a .env file inside of the backend folder and replace its variables with yours - -2. Create a Python Virtual Environment: - `python3 -m venv venv` - -3. Activate the Virtual Environment: - - On macOS and Linux: - `source venv/bin/activate` - - - On Windows (using Command Prompt): - `venv\Scripts\activate.bat` - - - On Windows (using PowerShell): - `.\venv\Scripts\Activate.ps1` - -4. Install Dependencies from requirements.txt: - `pip install -r requirements.txt` - -Now, your virtual environment is activated, and all the dependencies listed in requirements.txt have been installed. You can proceed with running the provided commands in the Makefile for development. - -### Makefile Commands - -This Makefile provides convenient targets to automate common development tasks. - - -- **migrate**: Runs Flask migration with a specified message. - -- **upgrade**: Upgrades the database schema using Flask. - -- **start**: Starts Docker containers. - -- **start-build**: Starts Docker containers and rebuilds images. - -- **clean**: Remove volumes and delete all images associated with the containers defined in the `docker-compose.yml` file. - -- **test**: Runs pytest for testing. - -- **lint**: Runs pylint on all Python files in the repository. - -## Note - -- **migrate**: When running the migrate command, ensure to provide a migration message as an argument like the example above. If no message is provided, the command will prompt you to provide one. - -- If you try to run the migration commands outside of the docker network, remember to change the `.env` **DATABASE_URI** host address(probably to `localhost`). \ No newline at end of file diff --git a/backend/migrations/versions/17eb199d7416_initial_commit.py b/backend/migrations/versions/17eb199d7416_initial_commit.py deleted file mode 100644 index 2bf7998..0000000 --- a/backend/migrations/versions/17eb199d7416_initial_commit.py +++ /dev/null @@ -1,51 +0,0 @@ -"""Initial commit - -Revision ID: 17eb199d7416 -Revises: -Create Date: 2024-05-16 16:58:03.648098 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '17eb199d7416' -down_revision = None -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('Author', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('name', sa.String(length=300), nullable=False), - sa.Column('email', sa.String(length=320), nullable=True), - sa.Column('nationality', sa.String(length=100), nullable=False), - sa.Column('birthDate', sa.Date(), nullable=False), - sa.PrimaryKeyConstraint('id') - ) - op.create_table('Book', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('title', sa.String(length=300), nullable=False), - sa.Column('pages', sa.Integer(), nullable=False), - sa.PrimaryKeyConstraint('id') - ) - op.create_table('BookAuthor', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('bookId', sa.Integer(), nullable=True), - sa.Column('authorId', sa.Integer(), nullable=True), - sa.ForeignKeyConstraint(['authorId'], ['Author.id'], ), - sa.ForeignKeyConstraint(['bookId'], ['Book.id'], ), - sa.PrimaryKeyConstraint('id') - ) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_table('BookAuthor') - op.drop_table('Book') - op.drop_table('Author') - # ### end Alembic commands ### diff --git a/docker-compose.yaml b/docker-compose.yaml index 27ba508..087e521 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -8,6 +8,7 @@ volumes: services: python_backend: + container_name: python_backend build: ./backend ports: - "5000:5000" @@ -40,13 +41,13 @@ services: POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme} PGDATA: /data/postgres volumes: - - postgres:/data/postgres + - postgres:/data/postgres ports: - "5432:5432" networks: - my_network restart: unless-stopped - + pgadmin: container_name: pgadmin_container logging: @@ -55,13 +56,12 @@ services: environment: PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org} PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin} - PGADMIN_CONFIG_SERVER_MODE: 'False' + PGADMIN_CONFIG_SERVER_MODE: "False" volumes: - - pgadmin:/var/lib/pgadmin + - pgadmin:/var/lib/pgadmin ports: - "${PGADMIN_PORT:-5050}:80" networks: - my_network restart: unless-stopped - diff --git a/frontend/.env.example b/frontend/.env.example deleted file mode 100644 index babc50e..0000000 --- a/frontend/.env.example +++ /dev/null @@ -1 +0,0 @@ -REACT_APP_API_URL=http://localhost:5000 \ No newline at end of file From f789118084e84c28924e0757359bbb8a0a72e31e Mon Sep 17 00:00:00 2001 From: Gabriel Borges Date: Tue, 4 Jun 2024 14:53:33 -0300 Subject: [PATCH 2/2] ci: implement testing to github pipeline --- .../workflows/backend-linter-and-tester.yml | 26 +++++++++++++++++ .github/workflows/backend-linter.yml | 29 ------------------- frontend/src/pages/Books/BookForm.tsx | 2 ++ 3 files changed, 28 insertions(+), 29 deletions(-) create mode 100644 .github/workflows/backend-linter-and-tester.yml delete mode 100644 .github/workflows/backend-linter.yml diff --git a/.github/workflows/backend-linter-and-tester.yml b/.github/workflows/backend-linter-and-tester.yml new file mode 100644 index 0000000..cf9d0b4 --- /dev/null +++ b/.github/workflows/backend-linter-and-tester.yml @@ -0,0 +1,26 @@ +name: Pylint +on: [push] +jobs: + Backend-Linter-and-Test: + runs-on: ubuntu-latest + env: + PYTHON_VERSION: "3.10.12" + defaults: + run: + working-directory: ./backend + steps: + - uses: actions/checkout@v4 + - name: Set up Python $PYTHON_VERSION + uses: actions/setup-python@v3 + with: + python-version: ${{ env.PYTHON_VERSION }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + - name: Analysing the code with pylint + run: | + pylint $(git ls-files '*.py') + - name: Run tests + run: | + pytest diff --git a/.github/workflows/backend-linter.yml b/.github/workflows/backend-linter.yml deleted file mode 100644 index 5f011da..0000000 --- a/.github/workflows/backend-linter.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Pylint -on: [push] -jobs: - Backend-Linter: - runs-on: ubuntu-latest - env: - PYTHON_VERSION: "3.10.12" - defaults: - run: - working-directory: ./backend - steps: - - uses: actions/checkout@v4 - - name: Set up Python $PYTHON_VERSION - uses: actions/setup-python@v3 - with: - python-version: ${{ env.PYTHON_VERSION }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt - - name: Analysing the code with pylint - run: | - pylint $(git ls-files '*.py') - - - - - - diff --git a/frontend/src/pages/Books/BookForm.tsx b/frontend/src/pages/Books/BookForm.tsx index 8e45d42..f3e25b7 100644 --- a/frontend/src/pages/Books/BookForm.tsx +++ b/frontend/src/pages/Books/BookForm.tsx @@ -104,6 +104,8 @@ const BookForm: React.FC = () => { return (
+

Book's Authors

+
);