{"id":31287746,"url":"https://github.com/filipemt/paper-trading","last_synced_at":"2026-05-15T01:42:03.151Z","repository":{"id":315049817,"uuid":"1052934181","full_name":"Filipemt/paper-trading","owner":"Filipemt","description":"API RESTful para simulação de investimentos (Paper Trading), permitindo cadastro de usuários, criação de carteiras virtuais, e operações de compra e venda de ativos financeiros.","archived":false,"fork":false,"pushed_at":"2025-09-16T12:06:17.000Z","size":81,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-16T12:48:15.856Z","etag":null,"topics":["autentication","hexagonal-architecture","java","jpa","jwt","maven","validation"],"latest_commit_sha":null,"homepage":"","language":"Java","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/Filipemt.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":"2025-09-08T18:48:22.000Z","updated_at":"2025-09-16T12:06:20.000Z","dependencies_parsed_at":"2025-09-16T12:58:25.224Z","dependency_job_id":null,"html_url":"https://github.com/Filipemt/paper-trading","commit_stats":null,"previous_names":["filipemt/paper-trading"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Filipemt/paper-trading","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Filipemt%2Fpaper-trading","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Filipemt%2Fpaper-trading/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Filipemt%2Fpaper-trading/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Filipemt%2Fpaper-trading/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Filipemt","download_url":"https://codeload.github.com/Filipemt/paper-trading/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Filipemt%2Fpaper-trading/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276737524,"owners_count":25695700,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-24T02:00:09.776Z","response_time":97,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["autentication","hexagonal-architecture","java","jpa","jwt","maven","validation"],"created_at":"2025-09-24T11:06:42.428Z","updated_at":"2026-05-15T01:42:03.141Z","avatar_url":"https://github.com/Filipemt.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧾 Paper Trading API - Simulador de Investimentos\n\n## 📖 Sumário\n- [1. Visão Geral](#1-visão-geral)\n- [2. Arquitetura Hexagonal e Design](#2-arquitetura-hexagonal-e-design)\n- [3. Stack Tecnológica](#3-stack-tecnológica)\n- [4. Funcionalidades (v1.0)](#4-funcionalidades-v10)\n- [5. Como Executar Localmente](#5-como-executar-localmente)\n- [6. Documentação da API (Swagger)](#6-documentação-da-api-swagger)\n- [7. Roadmap (v2.0)](#7-roadmap-v20)\n\n---\n\n## 1. Visão Geral\n\nEste projeto é uma **API RESTful completa** para uma plataforma de **Paper Trading (simulação de investimentos)**, desenvolvida com **Java e Spring Boot**.\n\nO objetivo foi ir além de um CRUD básico, focando em uma **arquitetura robusta e limpa**, capaz de lidar com **regras de negócio complexas**, **autenticação**, **transações** e **integração com serviços externos**.\n\nA API permite que usuários:\n- Se cadastrem e gerenciem um portfólio virtual (com saldo inicial)\n- Simulem **compra e venda de ativos** (Ações e FIIs) com base em cotações do mercado atual\n- Consultem o **histórico de operações**\n\n\u003e Este repositório contém exclusivamente o **backend** da aplicação.\n\n---\n\n## 2. Arquitetura Hexagonal e Design\n\nA arquitetura é baseada nos princípios da **Arquitetura Hexagonal (Portas e Adaptadores)**.  \nIsso garante um **núcleo de negócio limpo, desacoplado e altamente testável**, isolado de detalhes de infraestrutura.\n\n### 🧩 Estrutura de Pacotes\n\n- **domain:**  \n  Contém as entidades (`@Entity`), exceções de negócio e interfaces (Ports) que definem os contratos da aplicação  \n  *(ex: `PortfolioRepositoryPort`, `PriceProviderPort`)*\n\n- **application:**  \n  Contém os **UseCases** (interfaces) e **Services** (implementações) que orquestram a lógica de negócio, dependendo apenas das Ports do domínio.\n\n- **infrastructure:**  \n  Contém os **Adapters** que implementam as Ports.  \n  Aqui estão os **Controllers**, a **configuração de segurança (Spring Security)**, os **clientes externos (OpenFeign)**, os **repositórios (Spring Data JPA)** e o **Flyway**.\n\n---\n\n## 3. Stack Tecnológica\n\n| Categoria | Tecnologia | Justificativa |\n|------------|-------------|---------------|\n| **Framework Base** | Spring Boot 3 / Java 17 | Ecossistema robusto, injeção de dependência e auto-configuração. |\n| **Segurança** | Spring Security 6 / JWT | Padrão de mercado para autenticação e autorização de APIs stateless. |\n| **Persistência** | Spring Data JPA / Hibernate | ORM padrão para abstração e produtividade no acesso a dados. |\n| **Banco de Dados** | PostgreSQL (Produção) / H2 (Dev) | Banco robusto + memória para testes. |\n| **Migrações** | Flyway | Versionamento confiável do schema do banco. |\n| **Cliente HTTP** | Spring Cloud OpenFeign | Clientes REST declarativos e limpos. |\n| **Caching** | Spring Cache / Caffeine | Otimização de performance em cotações externas. |\n| **Validação** | Spring Validation / Custom Validators | Garantia da integridade dos dados de entrada (ex: `@CPF`). |\n| **Documentação** | Springdoc (OpenAPI / Swagger) | Documentação da API interativa e auto-gerada. |\n| **Utilitários** | Lombok | Redução de código boilerplate. |\n\n---\n\n## 4. Funcionalidades \n\n### 🔐 Autenticação e Usuário (`/auth`)\n- **POST `/auth/register`** → Registro de novo usuário com criação de portfólio e saldo inicial.\n- **POST `/auth/login`** → Autenticação e geração de token JWT.\n\n### 📈 Mercado e Ativos (`/assets`)\n- **GET `/assets`** → Lista todos os ativos (Ações e FIIs), com paginação e preços atualizados (via API externa + cache).\n- **GET `/assets/{ticker}`** → Detalha um ativo específico com seu preço atual.\n\n### 💼 Gestão de Carteira (`/portfolios`)\n- **GET `/portfolios/me`** → Retorna o portfólio do usuário autenticado: saldo, valor total de ativos, patrimônio e posições com valores de mercado atualizados.\n\n### 💸 Operações de Negociação (`/orders`)\n- **POST `/orders`** → Criação de ordens de compra (BUY) e venda (SELL).\n    - **MARKET:** Executadas imediatamente, atualizam balance e posições.\n    - **LIMIT:** Validadas e salvas com status `PENDING`.\n- **GET `/orders`** → Lista histórico de ordens com filtros e paginação.\n- **DELETE `/orders/{id}`** → Cancela ordem `LIMIT` pendente.\n\n### 📜 Histórico (`/transactions`)\n- **GET `/transactions`** → Extrato de transações executadas, paginado e ordenado do mais recente para o mais antigo.\n\n---\n\n## 5. Como Executar Localmente\n\n### ⚙️ Pré-requisitos\n- **Java 17 (JDK)**\n- **Apache Maven 3.8+**\n- **Git**\n- *(Opcional)* **PostgreSQL 14+** (para perfil de produção)\n- *(Opcional)* **Chave de API da [Brapi.dev](https://brapi.dev)** (para o `PriceProvider` real)\n\n---\n\n### 📥 Clonar o Repositório\n```bash\ngit clone https://github.com/seu-usuario/paper-trading.git\ncd paper-trading\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffilipemt%2Fpaper-trading","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffilipemt%2Fpaper-trading","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffilipemt%2Fpaper-trading/lists"}