PHP Classes

How to Implement a Book Store PHP Project Using a JavaScript Based Front-end and a PHP Front-end using the Package Livraria: Manage a bookstore using micro-services

Recommend this page to a friend!
  Info   Screenshots   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2024-09-24 (14 days ago) RSS 2.0 feedNot enough user ratingsTotal: 27 This week: 1All time: 11,179 This week: 41Up
Version License PHP version Categories
livraria 1.0MIT/X Consortium ...5PHP 5, E-Commerce, Web services, Busi..., A...
Description 

Author

This package can manage a bookstore using micro-services.

It provides a front-end implemented by pages generated using JavaScript and information pulled from the server using a Web services API.

The package also provides the back-end that implements an API to authenticate users, provide information about books for sale, and process the sale checkout operations.

In Portuguese:

Este projeto é um exemplo de arquitetura de e-commerce implementado utilizando o conceito de microserviços.

O objetivo é demonstrar a separação de responsabilidades entre diferentes serviços que compõem a aplicação, como autenticação, gerenciamento de produtos e gateway de API.

Innovation Award
PHP Programming Innovation award nominee
September 2024
Nominee
Vote
Many bookstores started to sell their books on e-commerce sites to increase their book sales.

This package implements a bookstore Web site ready to sell books to customers worldwide.

It separates the front-end implemented in JavaScript from the back-end implemented in PHP as a Web services API.

Manuel Lemos
Picture of Rodrigo Faustino
  Performance   Level  
Name: Rodrigo Faustino <contact>
Classes: 27 packages by
Country: Brazil Brazil
Age: 41
All time rank: 2509173 in Brazil Brazil
Week rank: 4 Up1 in Brazil Brazil Up
Innovation award
Innovation award
Nominee: 17x

Winner: 2x

Details

Projeto de Sebo E-commerce com Microserviços

Este projeto é um exemplo de arquitetura de e-commerce implementado utilizando o conceito de microserviços. O objetivo é demonstrar a separação de responsabilidades entre diferentes serviços que compõem a aplicação, como autenticação, gerenciamento de produtos e gateway de API.

Estrutura do Projeto

A estrutura do projeto é dividida em três partes principais:

  1. Frontend: Responsável pela interface do usuário, onde as requisições são enviadas ao `API Gateway` para serem encaminhadas aos microserviços apropriados.
  2. API Gateway: Age como intermediário entre o frontend e os microserviços, redirecionando as requisições de acordo com o endpoint solicitado.
  3. Microserviços: - backend-auth: Gerencia as funcionalidades de autenticação e registro de usuários. - backend-produtos: Responsável pelo gerenciamento de produtos, incluindo operações de CRUD (Create, Read, Update, Delete).

Endpoints dos Microserviços

API Gateway

  • Porta: `8000`
  • Base URL: `http://localhost:8000`
  • Encaminha requisições para os microserviços apropriados com base no endpoint.

backend-auth

  • Porta: `1000`
  • Base URL: `http://localhost:1000`
  • Responsável pela autenticação e registro de usuários.
  • Endpoints: - `/auth/register` - `/auth/login`

backend-produtos (esse serviço pode ser dividio em dois)

  • Porta: `2000`
  • Base URL: `http://localhost:2000`
  • Gerencia o catálogo de produtos e operações relacionadas.
  • Endpoints: - `/products` - `/purchased-products` - `/checkout` - `/admin/reservations` - `/admin/update-status` - `/admin/remove-reservation` - `/admin/sales`

Configuração do Projeto

Configuração do Frontend

No frontend, o arquivo de configuração config.js está localizado em frontend/js/componentes/utils/config.js. Ele define a base URL para a API Gateway:

const config = {
    baseURL: 'http://localhost:8000'
};

export default config;

Execução Local

Para rodar a aplicação localmente, cada microserviço deve ser executado em uma porta diferente, como especificado acima. - O API Gateway deve rodar na porta 8000. - Frontend na porta 5500. - O backend-auth na porta 1000. - O backend-produtos na porta 2000.

Caso suba para produção cada serviço deve ficar em um domínio ou subdominio diferentes, ex: meusite.com enviando para api.meusite.com onde se conecta com auth.meusite.com e produtos.meusite.com, e também alterar as politicas de cors de cada serviço.

O que são Microserviços?

Microserviços são uma abordagem de arquitetura de software que se baseia na divisão de uma aplicação em um conjunto de serviços pequenos, cada um executando uma função específica e comunicando-se entre si por meio de APIs. Cada microserviço é autônomo e pode ser desenvolvido, implantado e escalado de forma independente, no caso desse projeto o serviço produtos ainda pode ser separado mais para as buscas dos frontend publico e as buscas e atualizações do frontend administrativo.

Vantagens dos Microserviços

  • Escalabilidade: Cada microserviço pode ser escalado independentemente, de acordo com suas necessidades específicas.
  • Desenvolvimento Independente: Diferentes equipes podem trabalhar em diferentes microserviços sem interferir umas nas outras.
  • Resiliência: Falhas em um microserviço não afetam diretamente os outros serviços, aumentando a resiliência da aplicação como um todo.
  • Desempenho Otimizado: Cada microserviço pode ser otimizado e configurado de acordo com suas necessidades específicas, melhorando o desempenho geral da aplicação.
  • Flexibilidade Tecnológica: Cada microserviço pode ser desenvolvido usando diferentes linguagens de programação ou tecnologias, conforme a melhor adequação à sua função específica.

Este projeto demonstra uma implementação simples de um sistema de "e-commerce" usando a arquitetura de microserviços. Embora o sistema esteja em um ambiente de desenvolvimento local, a estrutura é configurada para fácil escalabilidade e adaptação em ambientes de produção. Este exemplo serve como um ponto de partida para explorar mais profundamente as vantagens e desafios da arquitetura de microserviços.


Screenshots (12)  
  • frontend/img/66a9160d9c7df.jpg
  • frontend/img/66a969936697e.jpg
  • frontend/img/66abbb6937b7d.jpg
  • frontend/img/66abc27736cb4.jpg
  • frontend/img/66abd7da2208c.jpg
  • frontend/img/66abd902ebf9e.jpg
  • frontend/img/95e5e1e21398e7ff7585bda334f535e9.jpg
  • frontend/img/eu.jpg
  • frontend/img/js-course.jpg
  • frontend/img/php-course.jpg
  • frontend/img/prototipo-mobile.jpg
  • frontend/img/python-course.jpg
  Files folder image Files (100)  
File Role Description
Files folder image.github (1 directory)
Files folder image.scannerwork (1 file)
Files folder imageapigateway (2 files, 1 directory)
Files folder imagebackend-auth (5 files, 3 directories)
Files folder imagebackend-produtos (5 files, 3 directories)
Files folder imagefrontend (2 files, 4 directories)
Accessible without login Plain text file readme.md Doc. Documentation
Accessible without login Plain text file start_apigateway.bat Data Auxiliary data
Accessible without login Plain text file start_backend_auth.bat Data Auxiliary data
Accessible without login Plain text file start_backend_produtos.bat Data Auxiliary data
Accessible without login Plain text file start_frontend.bat Data Auxiliary data
Accessible without login Plain text file start_servicos.bat Data Auxiliary data

  Files folder image Files (100)  /  .github  
File Role Description
Files folder imageworkflows (1 file)

  Files folder image Files (100)  /  .github  /  workflows  
File Role Description
  Accessible without login Plain text file webpack.yml Data Auxiliary data

  Files folder image Files (100)  /  .scannerwork  
File Role Description
  Accessible without login Plain text file report-task.txt Doc. Documentation

  Files folder image Files (100)  /  apigateway  
File Role Description
Files folder imagerate_limit (1 file)
  Accessible without login Plain text file index.php Aux. Configuration script
  Accessible without login Plain text file requests.json Data Auxiliary data

  Files folder image Files (100)  /  apigateway  /  rate_limit  
File Role Description
  Accessible without login Plain text file __1.txt Doc. Documentation

  Files folder image Files (100)  /  backend-auth  
File Role Description
Files folder imageconfig (1 file)
Files folder imagecontrollers (1 file)
Files folder imagemodels (1 file)
  Accessible without login Plain text file .env Data Auxiliary data
  Accessible without login Plain text file .htaccess Data Auxiliary data
  Accessible without login Plain text file composer.json Data Auxiliary data
  Accessible without login Plain text file composer.lock Data Auxiliary data
  Accessible without login Plain text file index.php Example Example script

  Files folder image Files (100)  /  backend-auth  /  config  
File Role Description
  Plain text file database.php Class Class source

  Files folder image Files (100)  /  backend-auth  /  controllers  
File Role Description
  Plain text file AuthController.php Class Class source

  Files folder image Files (100)  /  backend-auth  /  models  
File Role Description
  Plain text file User.php Class Class source

  Files folder image Files (100)  /  backend-produtos  
File Role Description
Files folder imageconfig (1 file)
Files folder imagecontrollers (3 files)
Files folder imagemodels (1 file)
  Accessible without login Plain text file .env Data Auxiliary data
  Accessible without login Plain text file .htaccess Data Auxiliary data
  Accessible without login Plain text file composer.json Data Auxiliary data
  Accessible without login Plain text file composer.lock Data Auxiliary data
  Accessible without login Plain text file index.php Example Example script

  Files folder image Files (100)  /  backend-produtos  /  config  
File Role Description
  Plain text file database.php Class Class source

  Files folder image Files (100)  /  backend-produtos  /  controllers  
File Role Description
  Plain text file AdminController.php Class Class source
  Plain text file CheckoutController.php Class Class source
  Plain text file ProductController.php Class Class source

  Files folder image Files (100)  /  backend-produtos  /  models  
File Role Description
  Plain text file Product.php Class Class source

  Files folder image Files (100)  /  frontend  
File Role Description
Files folder imagecss (1 file)
Files folder imageimg (19 files)
Files folder imagejs (1 file, 2 directories)
Files folder imagejson (7 files)
  Accessible without login HTML file index.html Doc. Documentation
  Accessible without login Plain text file service-worker.js Data Auxiliary data

  Files folder image Files (100)  /  frontend  /  css  
File Role Description
  Accessible without login Plain text file styles.css Data Auxiliary data

  Files folder image Files (100)  /  frontend  /  img  
File Role Description
  Accessible without login Image file 66a91626e2234.jpg Icon Icon image
  Accessible without login Image file 66a91814ddb54.jpg Icon Icon image
  Accessible without login Image file 66a918a5e09ed.jpg Icon Icon image
  Accessible without login Image file 66a918d1c9bd2.jpg Icon Icon image
  Accessible without login Image file 66a969e8c1c61.jpg Icon Icon image
  Accessible without login Image file 66a96a1fc2fc6.jpg Icon Icon image
  Accessible without login Image file 66a96a43cd31f.jpg Icon Icon image
  Accessible without login Image file 66abd7da13dfe.jpg Icon Icon image
  Accessible without login Image file 66e5eb8188322.jpg Icon Icon image
  Accessible without login Plain text file icon-app.svg Data Auxiliary data
  Accessible without login Plain text file icon-design.svg Data Auxiliary data
  Accessible without login Plain text file icon-dev.svg Data Auxiliary data
  Accessible without login Image file livro1.png Icon Icon image
  Accessible without login Image file livro2.png Icon Icon image
  Accessible without login Image file livro3.png Icon Icon image
  Accessible without login Image file livro4.png Icon Icon image
  Accessible without login Image file livro5.png Icon Icon image
  Accessible without login Image file livro6.png Icon Icon image
  Accessible without login Image file prototipo-desktop.png Icon Icon image

  Files folder image Files (100)  /  frontend  /  js  
File Role Description
Files folder imagecomponentes (4 files, 4 directories)
Files folder imagepaginas (1 file)
  Accessible without login Plain text file app.js Data Auxiliary data

  Files folder image Files (100)  /  frontend  /  js  /  componentes  
File Role Description
Files folder imagecontrollers (7 files)
Files folder imagemodels (4 files)
Files folder imageutils (4 files)
Files folder imageviews (9 files)
  Accessible without login Plain text file books.js Data Auxiliary data
  Accessible without login Plain text file cart.js Data Auxiliary data
  Accessible without login Plain text file navbar.js Data Auxiliary data
  Accessible without login Plain text file sidebar.js Data Auxiliary data

  Files folder image Files (100)  /  frontend  /  js  /  componentes  /  controllers  
File Role Description
  Accessible without login Plain text file adminController.js Data Auxiliary data
  Accessible without login Plain text file authController.js Data Auxiliary data
  Accessible without login Plain text file minhaAreaController.js Data Auxiliary data
  Accessible without login Plain text file productController.js Data Auxiliary data
  Accessible without login Plain text file reservationController.js Data Auxiliary data
  Accessible without login Plain text file salesController.js Data Auxiliary data
  Accessible without login Plain text file shopController.js Data Auxiliary data

  Files folder image Files (100)  /  frontend  /  js  /  componentes  /  models  
File Role Description
  Accessible without login Plain text file adminModel.js Data Auxiliary data
  Accessible without login Plain text file productModel.js Data Auxiliary data
  Accessible without login Plain text file reservationModel.js Data Auxiliary data
  Accessible without login Plain text file salesModel.js Data Auxiliary data

  Files folder image Files (100)  /  frontend  /  js  /  componentes  /  utils  
File Role Description
  Accessible without login Plain text file alertConsole.js Data Auxiliary data
  Accessible without login Plain text file config.js Data Auxiliary data
  Accessible without login Plain text file customContextMenu.js Data Auxiliary data
  Accessible without login Plain text file router.js Data Auxiliary data

  Files folder image Files (100)  /  frontend  /  js  /  componentes  /  views  
File Role Description
  Accessible without login Plain text file adminView.js Data Auxiliary data
  Accessible without login Plain text file livrosView.js Data Auxiliary data
  Accessible without login Plain text file loginView.js Data Auxiliary data
  Accessible without login Plain text file minhaAreaView.js Data Auxiliary data
  Accessible without login Plain text file productView.js.js Data Auxiliary data
  Accessible without login Plain text file registerView.js Data Auxiliary data
  Accessible without login Plain text file reservationsView.js Data Auxiliary data
  Accessible without login Plain text file salesView.js Data Auxiliary data
  Accessible without login Plain text file shopView.js Data Auxiliary data

  Files folder image Files (100)  /  frontend  /  js  /  paginas  
File Role Description
  Accessible without login Plain text file logout.js Data Auxiliary data

  Files folder image Files (100)  /  frontend  /  json  
File Role Description
  Accessible without login Plain text file books.json Data Auxiliary data
  Accessible without login Plain text file education.json Data Auxiliary data
  Accessible without login Plain text file experience.json Data Auxiliary data
  Accessible without login Plain text file products.json Data Auxiliary data
  Accessible without login Plain text file Services.json Data Auxiliary data
  Accessible without login Plain text file skills.json Data Auxiliary data
  Accessible without login Plain text file sobre.json Data Auxiliary data

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 100%
Total:27
This week:1
All time:11,179
This week:41Up