{"id":38234669,"url":"https://github.com/jalvess021/kartka","last_synced_at":"2026-01-17T01:04:05.556Z","repository":{"id":254928296,"uuid":"847758480","full_name":"jalvess021/kartka","owner":"jalvess021","description":"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.","archived":false,"fork":false,"pushed_at":"2025-01-16T15:39:28.000Z","size":86,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-14T15:13:59.366Z","etag":null,"topics":["clean-architecture","clean-code","dependency-injection","golang","javascript","kafka","repository-pattern","typescript","usecase","vue"],"latest_commit_sha":null,"homepage":"","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jalvess021.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-08-26T13:46:32.000Z","updated_at":"2025-01-16T15:39:31.000Z","dependencies_parsed_at":"2024-08-27T02:24:18.096Z","dependency_job_id":"605fc69b-3baa-46e8-98fb-7a18208525cd","html_url":"https://github.com/jalvess021/kartka","commit_stats":null,"previous_names":["jalvess021/api-golang","jalvess021/kartka"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jalvess021/kartka","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jalvess021%2Fkartka","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jalvess021%2Fkartka/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jalvess021%2Fkartka/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jalvess021%2Fkartka/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jalvess021","download_url":"https://codeload.github.com/jalvess021/kartka/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jalvess021%2Fkartka/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28490942,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T00:50:05.742Z","status":"ssl_error","status_checked_at":"2026-01-17T00:43:11.982Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clean-architecture","clean-code","dependency-injection","golang","javascript","kafka","repository-pattern","typescript","usecase","vue"],"created_at":"2026-01-17T01:04:05.414Z","updated_at":"2026-01-17T01:04:05.520Z","avatar_url":"https://github.com/jalvess021.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KARTKA: Plataforma de E-commerce com Microsserviços para Gestão de Pedidos e Estoque 🚀\n\nKartka é 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.\n\n## Funcionalidades ✨\n\n- **Cadastro e Gerenciamento de Produtos**: API em Go para criar e gerenciar dados de produtos, com processamento assíncrono via Kafka.\n- **Carrinho de Compras Interativo**: O frontend em Vue.js permite que usuários adicionem produtos ao carrinho e prossigam para o checkout.\n- **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.\n- **Processamento de Mensagens com Kafka**: Assincronicidade e escalabilidade com mensageria para pedidos e reservas de estoque.\n- **Clean Architecture**: Código bem organizado, modular e altamente manutenível.\n\n## Tecnologias Utilizadas 🛠\n\n- **Go (Golang)** Backend API.\n- **Kafka** Mensageria assíncrona.\n- **Vue.js** e **TypeScript** Frontend reativo e seguro.\n- **PostgreSQL** Persistência de dados.\n- **Docker** Ambiente de desenvolvimento isolado e consistente.\n\n## Arquitetura Limpa + (DI) Injeção de Dependências 🧩\nA aplicação segue o padrão Clean Architecture, com a divisão clara de responsabilidades entre camadas. \nAlé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.\n\n\n## Passo a Passo 🏃‍♂️\n\n1. **Clonar o Repositório em seu ambiente local:**\n```bash\n  git clone https://github.com/jalvess021/kartka.git\n  cd kartka\n```\n2. **Copie o arquivo `.env.example` para `.env` para configurar as variáveis de ambiente:**\n```bash\n  cp .env.example .env\n```\n3. **Se você estiver utilizando o PostgreSQL localmente, acesse o terminal do banco de dados e crie o banco:**\n```bash\n  psql -U seu_usuario\n```\n   Depois, crie o banco de dados:\n```sql\n  CREATE DATABASE kartka;\n```\n   Agora, crie a tabela `products`:\n```sql\n  CREATE TABLE products (\n    ID UUID PRIMARY KEY,\n    Name VARCHAR(255) NOT NULL,\n    Price NUMERIC(10, 2) NOT NULL\n);\n```\n4. **Subir os Containers (Kafka, Zookeeper, PostgreSQL, API e Frontend):**\n```bash\n  docker-compose up -d\n```\n5. **Acesse o container do KAFKA e crie o Tópico \"product\":**\n```bash\n  kafka-topics --bootstrap-server localhost:9092 --create --topic product --if-not-exists\n```\n6. **Entre no container da API e execute o servidor:**\n```bash\n  go run cmd/main.go\n```\n\nApó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).\n\n## Como Funciona? 🔄\n\n1. **Mensagens Kafka**: A API consome mensagens do Kafka associadas ao tópico `product` e processa os dados.\n2. **Backend**: A API armazena os dados processados no PostgreSQL.\n3. **Frontend**: O Vue.js exibe os produtos de forma interativa, consumindo a API.\n\n### Desenvolvido por [@jalvess021](https://github.com/jalvess021).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjalvess021%2Fkartka","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjalvess021%2Fkartka","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjalvess021%2Fkartka/lists"}