Skip to content

thalles-victor/Web_Gym

Repository files navigation

Gym

A gym é uma plataforma de trino que é composta de um blogger e um loja comercial, seu foco está em ensinar e a entregar produtos de qualidade e confiança para os seus usuários.

Este projeto se mantém em construção já que não é um projeto que tem fim, a ideia é trazer mais funcionalidades e ferramentas, nele estou eulitlizando várias stacks usando arquitetura de micro serviços usando sistemas de mensageria com o kafka e o framwork node Nestjs além do front-end estar sendo contruido com NextJS e React. O objetivo é ultilizar várias stacks diversificando e integrando cada uma delas. Stacks ultilizadas:

NodeJS NestJS Docker Apache Kafka Apollo-GraphQL TypeScript Next JS Type-graphql Prisma Postgres React JWT

Executando o projeto

Ates de executar o proejto, você precisa criar colocar crar nessa rota um arquivo .env e colocar entro desse arquivo as seguintes propriedades

POSTGRES_USER=USERFROMPOSTGRES
POSTGRES_PASSWORD=MUSTBESTRONGAPASSWORD
POSTGRES_DB=GY_DB
POSTGRES_GYM_DATABSE_PORT=5432
POSTGRES_GRYM_DATABSE_HOST=gym-databse

PRODUCT_DATABASE_USER=PRODUCT_DATABASE_USER
PRODUCT_DATABASE_PASSWORD=PRODUCT_DATABASE_PASSWORD
PRODUCT_DATABASE_DB=PRODUCT_DATABASE_DB
PRODUCT_DATABASE_PORT=5432
PRODUCT_DATABASE_LOCALHOST_PORT=5430
PRODUCT_DATABASE_HOST=product_gym_database

USER_DATABASE_USER=USER_DATABASE_USER
USER_DATABASE_PASSWORD=USER_DATABASE_PASSWORD
USER_DATABASE_DB=USER_DATABASE_DB
USER_DATABASE_PORT=5432
USER_DATABASE_LOCALHOST_PORT= 5431
USER_DATABASE_HOST=user_gym_database

PAYMENT_DATABASE_USER=PAYMENT_DATABASE_USER
PAYMENT_DATABASE_PASSWORD=PAYMENT_DATABASE_PASSWORD
PAYMENT_DATABASE_DB=PAYMENT_DATABASE_DB
PAYMENT_DATABASE_PORT=5432
PAYMENT_DATABASE_LOCALHOST_PORT=5432
PAYMENT_DATABASE_HOST=payment_gym_database


PGADMIN_DEFAULT_EMAIL=admin_email@gmail.com
PGADMIN_DEFAULT_PASSWORD=passwordformpgadmin

JWT_SECRET=SECRET
DATABASE_URL="postgresql://USERFROMPOSTGRES:MUSTBESTRONGAPASSWORD@localhost:5432/GY_DB?schema=public"

Como a aplicação está dockerizada fica muito símples de executar o projeto, mas é nescessário que o docker esteja instalado. Para executar rode o comando

docker compose up 

Arquitetura

Essa imagem mostra a arquitetura da aplicação onde temos um front end, uma api gate_way o kafka e no final os micro serviços, o banco de dados esta oculto até o momento. ARCHETETURE

Front end

O front end é onde o usuário terá acesso ao usar a plataform, ele está sendo construido com Nextjs ultilizando o stitches para dar estilo na página. Sua url está em http://localhost:3001 frontend

Backend

O backend foi construido com nestjs porém não como o modelo tradicional de rest mas sim com graphql, decidi usar essa ferramenta priemiro porque amo sendo que é uma das ferramentas quem mais gosto e segundo pelo fato de diversificar um pouco do modelo tradicional. Até o momento não foi aplicado também rest sendo que pretendo usar ambos os métodos para construir a api já que um não restringe o outro já que estou ultilizando os conceitos de solid. Desde que eu injete o serviço seja no controller ou no resolver e ultilize de forma correta a api vai funcionar de qualquer forma. Para me comunicar com cada micro serviço, estou ultilizando o kafka como menssageria e até o momento estou ultilizando os conceitos de request e reply para comunicar entre os microserviços entre si.

Kafka UI

Quando subir os contianer e se eles subirem de forma coreta, você podera acessar o gerenciador do kafka que é o kafkaui, como ele está espelhado no sistema operacional, você pode acessar com a url http://localhost:8080

Topics

Graphql API

Como por padrão estou ultilizando graphql nesse projeto, a api poderá ser acessada em http://localhost:3000 e a api do graphql está no end point /graphql. Em desenvolivmento você pode acessar o playground e nele tem o inteliscense de como realizar as querys e mutations além de uma breve documentação no lado direito da página.

graphql api

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published