https://github.com/jalvess021/kartka
Aplicação de e-commerce robusta e escalável em Golang e Kafka para gerenciar pedidos de forma assíncrona, construída com uma arquitetura de microsserviços. Contando com Vue.js e TypeScript para exibir os produtos interativamente.
https://github.com/jalvess021/kartka
clean-architecture clean-code dependency-injection golang javascript kafka repository-pattern typescript usecase vue
Last synced: 5 months ago
JSON representation
Aplicação de e-commerce robusta e escalável em Golang e Kafka para gerenciar pedidos de forma assíncrona, construída com uma arquitetura de microsserviços. Contando com Vue.js e TypeScript para exibir os produtos interativamente.
- Host: GitHub
- URL: https://github.com/jalvess021/kartka
- Owner: jalvess021
- Created: 2024-08-26T13:46:32.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-01-16T15:39:28.000Z (over 1 year ago)
- Last Synced: 2026-01-14T15:13:59.366Z (5 months ago)
- Topics: clean-architecture, clean-code, dependency-injection, golang, javascript, kafka, repository-pattern, typescript, usecase, vue
- Language: Vue
- Homepage:
- Size: 84 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# KARTKA: Plataforma de E-commerce com Microsserviços para Gestão de Pedidos e Estoque 🚀
Kartka é uma aplicação de e-commerce robusta e escalável, construída com uma arquitetura de microsserviços. O backend é desenvolvido em **Go** e utiliza o **Kafka** para gerenciar mensagens de forma assíncrona, proporcionando uma experiência de compra ágil e confiável. A arquitetura Clean Architecture é adotada para garantir a manutenibilidade e escalabilidade da aplicação. O frontend, desenvolvido com **Vue.js** e **TypeScript**, permite uma interação fluida e dinâmica, oferecendo aos usuários a funcionalidade completa de um carrinho de compras.
## Funcionalidades ✨
- **Cadastro e Gerenciamento de Produtos**: API em Go para criar e gerenciar dados de produtos, com processamento assíncrono via Kafka.
- **Carrinho de Compras Interativo**: O frontend em Vue.js permite que usuários adicionem produtos ao carrinho e prossigam para o checkout.
- **Reserva Temporária de Estoque**: Um microsserviço dedicado reserva o produto durante o processo de checkout, liberando-o se o pagamento não for realizado em 10 minutos.
- **Processamento de Mensagens com Kafka**: Assincronicidade e escalabilidade com mensageria para pedidos e reservas de estoque.
- **Clean Architecture**: Código bem organizado, modular e altamente manutenível.
## Tecnologias Utilizadas 🛠
- **Go (Golang)** Backend API.
- **Kafka** Mensageria assíncrona.
- **Vue.js** e **TypeScript** Frontend reativo e seguro.
- **PostgreSQL** Persistência de dados.
- **Docker** Ambiente de desenvolvimento isolado e consistente.
## Arquitetura Limpa + (DI) Injeção de Dependências 🧩
A aplicação segue o padrão Clean Architecture, com a divisão clara de responsabilidades entre camadas.
Além disso, a aplicação utiliza Injeção de Dependências (DI) para garantir que as dependências entre os componentes sejam gerenciadas de forma flexível e desacoplada. Isso facilita a manutenção, os testes unitários e a escalabilidade do sistema.
## Passo a Passo 🏃♂️
1. **Clonar o Repositório em seu ambiente local:**
```bash
git clone https://github.com/jalvess021/kartka.git
cd kartka
```
2. **Copie o arquivo `.env.example` para `.env` para configurar as variáveis de ambiente:**
```bash
cp .env.example .env
```
3. **Se você estiver utilizando o PostgreSQL localmente, acesse o terminal do banco de dados e crie o banco:**
```bash
psql -U seu_usuario
```
Depois, crie o banco de dados:
```sql
CREATE DATABASE kartka;
```
Agora, crie a tabela `products`:
```sql
CREATE TABLE products (
ID UUID PRIMARY KEY,
Name VARCHAR(255) NOT NULL,
Price NUMERIC(10, 2) NOT NULL
);
```
4. **Subir os Containers (Kafka, Zookeeper, PostgreSQL, API e Frontend):**
```bash
docker-compose up -d
```
5. **Acesse o container do KAFKA e crie o Tópico "product":**
```bash
kafka-topics --bootstrap-server localhost:9092 --create --topic product --if-not-exists
```
6. **Entre no container da API e execute o servidor:**
```bash
go run cmd/main.go
```
Após feito o passo a passo, o frontend estará acessível LOCALMENTE em: [http://127.0.0.1:5173](http://127.0.0.1:5173).
## Como Funciona? 🔄
1. **Mensagens Kafka**: A API consome mensagens do Kafka associadas ao tópico `product` e processa os dados.
2. **Backend**: A API armazena os dados processados no PostgreSQL.
3. **Frontend**: O Vue.js exibe os produtos de forma interativa, consumindo a API.
### Desenvolvido por [@jalvess021](https://github.com/jalvess021).