{"id":15041023,"url":"https://github.com/jorgeluisreis/askconsole","last_synced_at":"2025-04-14T19:35:56.984Z","repository":{"id":256671446,"uuid":"855936167","full_name":"Jorgeluisreis/AskConsole","owner":"Jorgeluisreis","description":"AskConsole é uma aplicação que une a simplicidade do CLI com a complexidade de uma IA (LLM), trazendo a oportunidade ter conversas com o Gemini da Google.","archived":false,"fork":false,"pushed_at":"2025-03-20T02:15:16.000Z","size":58,"stargazers_count":18,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T08:01:38.860Z","etag":null,"topics":["cli","gemini-ai","ia","java","json","llm"],"latest_commit_sha":null,"homepage":"https://github.com/Jorgeluisreis/AskConsole","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jorgeluisreis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-09-11T17:45:21.000Z","updated_at":"2025-03-20T02:15:20.000Z","dependencies_parsed_at":"2025-03-20T03:22:11.429Z","dependency_job_id":null,"html_url":"https://github.com/Jorgeluisreis/AskConsole","commit_stats":null,"previous_names":["jorgeluisreis/askconsole"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jorgeluisreis%2FAskConsole","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jorgeluisreis%2FAskConsole/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jorgeluisreis%2FAskConsole/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jorgeluisreis%2FAskConsole/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jorgeluisreis","download_url":"https://codeload.github.com/Jorgeluisreis/AskConsole/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248946791,"owners_count":21187573,"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","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":["cli","gemini-ai","ia","java","json","llm"],"created_at":"2024-09-24T20:45:24.956Z","updated_at":"2025-04-14T19:35:56.978Z","avatar_url":"https://github.com/Jorgeluisreis.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://i.imgur.com/8YBKZWj.png\" alt=\"AskConsole Logo\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e \u003ca href=\"https://github.com/Jorgeluisreis/AskConsole\"\u003e \u003cimg alt=\"GitHub last commit\" src=\"https://img.shields.io/github/last-commit/Jorgeluisreis/AskConsole\"\u003e \u003c/a\u003e \u003ca href=\"https://github.com/Jorgeluisreis/AskConsole/issues\"\u003e \u003cimg alt=\"GitHub issues\" src=\"https://img.shields.io/github/issues/Jorgeluisreis/AskConsole\"\u003e \u003c/a\u003e \u003ca href=\"https://github.com/Jorgeluisreis/AskConsole/pulls\"\u003e \u003cimg alt=\"GitHub pull requests\" src=\"https://img.shields.io/github/issues-pr/Jorgeluisreis/AskConsole\"\u003e \u003c/a\u003e \u003ca href=\"https://github.com/Jorgeluisreis/AskConsole\"\u003e \u003cimg alt=\"GitHub repo size\" src=\"https://img.shields.io/github/repo-size/Jorgeluisreis/AskConsole\"\u003e \u003c/a\u003e \u003ca href=\"https://github.com/Jorgeluisreis/AskConsole\"\u003e \u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/Jorgeluisreis/AskConsole\"\u003e \u003c/a\u003e \u003c/p\u003e\n\n# AskConsole\n\n🚀 **AskConsole** é uma aplicação Java interativa que permite criar e gerenciar conversas com uma interface de linha de comando (CLI). Desenvolvido com o intuito de oferecer uma experiência robusta para interação e salvamento de conversas, o AskConsole é ideal para quem busca uma ferramenta prática e eficiente para comunicação textual em ambiente de console.\n\n## 📚 Conceito\n\nO AskConsole foi criado com o intuito de utilizar a estrutura simples do CLI com uma aplicação escalável, no caso, um ecossistema de consumo de uma LLM, sendo o Gemini do Google. Há diversos conceitos implícitos nesta aplicação, desde uma simples interação no chat até a possibilidade de continuar uma conversa de onde parou.\n\n## 🛠️ Tecnologias Utilizadas\n\n- ![Java](https://img.shields.io/badge/Java-21-blue) - Linguagem de programação utilizada\n- ![Jansi](https://img.shields.io/badge/Jansi-2.4.1-blue) - Biblioteca para manipulação de cores no console\n- ![Google Cloud AI Platform](https://img.shields.io/badge/Google_Cloud_AI_Platform-3.49.0-blue) - API utilizada para interação com modelos de IA\n- ![ConsoleClear](https://img.shields.io/badge/ConsoleClear-1.0.0-blue) - Biblioteca personalizada para limpar o console criada por mim\n- ![Jackson](https://img.shields.io/badge/Jackson-2.17.2-blue) - Biblioteca para manipulação de JSON\n- ![JSON](https://img.shields.io/badge/JSON-20240303-blue) - Biblioteca para manipulação de JSON\n- ![Google Auth Library](https://img.shields.io/badge/Google_Auth_Library-1.24.1-blue) - Biblioteca para autenticação OAuth2\n\n## 🏛️ Arquitetura da Aplicação\n\n\u003cp align=\"center\"\u003e\n\n\u003cimg src=\"https://i.imgur.com/kKoqGPj.png\" alt=\"Arquitetura\"\u003e\n\n\u003c/p\u003e\n\n## 📐 Padrões e Metodologias Utilizadas\n\n- **SOLID Principles**:\n\n  - **Single Responsibility Principle (SRP)**\n  - **Open/Closed Principle (OCP)**: O sistema está projetado para permitir a adição de novas funcionalidades sem modificar o código existente, utilizando extensões de classes e interfaces.\n  - **Liskov Substitution Principle (LSP)**: As subclasses podem substituir as classes base sem alterar o comportamento esperado do sistema, garantindo consistência nas implementações.\n  - **Interface Segregation Principle (ISP)**: Interfaces são projetadas para serem específicas e focadas, evitando interfaces grandes e abrangentes e permitindo que as classes implementem apenas os métodos necessários.\n  - **Dependency Inversion Principle (DIP)**: Dependências são abstraídas por meio de interfaces, em vez de depender diretamente de implementações concretas, facilitando a substituição e o teste das dependências.\n\n- **Dependency Injection** - Para promover a inversão de controle e facilitar a gestão de dependências, permitindo uma arquitetura mais modular e testável.\n- **Asynchronous Programming** - Utilizado para melhorar a performance e a escalabilidade da aplicação, especialmente em operações de rede e I/O.\n- **Command Pattern** - Utilizado para encapsular todas as informações necessárias para executar uma ação, permitindo o uso de comandos de forma desacoplada e flexível.\n\n## 🌐 Funcionalidades\n\n- **Criar Conversas Interativas** - Permite iniciar e gerenciar conversas com uma interface de linha de comando.\n\u003cp align=\"center\"\u003e \u003cimg src=\"https://i.imgur.com/kqlRefx.png\" alt=\"Conversa interativa\"\u003e \u003c/p\u003e\n\n- **Salvar Conversas** - Guarda o histórico das conversas para consultas futuras.\n\n\u003cp align=\"center\"\u003e \u003cimg src=\"https://i.imgur.com/X5BSo7p.png\" alt=\"Conversas salvas\"\u003e \u003c/p\u003e\n\n- **Continuar Conversas** - Retoma conversas de onde pararam.\n\n\u003cp align=\"center\"\u003e \u003cimg src=\"https://i.imgur.com/leqmyAA.png\" alt=\"Continuar Conversas\"\u003e \u003c/p\u003e\n\n- **Importar Chave API** - Necessário para autenticação e uso da aplicação.\n\n\u003cp align=\"center\"\u003e \u003cimg src=\"https://i.imgur.com/b1V91rE.png\" alt=\"Importar Chave API\"\u003e \u003c/p\u003e\n\n## 📥 Requisitos Mínimos\n\n- **JRE 1.4.0** - Necessário para rodar a aplicação.\n- **Internet** - Necessário conexão com a internet.\n- **Chave API** - Obrigatória para autenticação e funcionamento da aplicação.\n\n## 🛠️ Instalação\n\n**OBS:** Clique [aqui](https://makersuite.google.com/app/apikey?hl=pt-br) para adquirir a sua chave API de forma gratuita para usar a aplicação.\n\n- É altamente recomendado habilitar o encoding UTF-8 do seu computador. Caso não saiba, clique [aqui](https://cursos.alura.com.br/forum/topico-problemas-de-codificacao-de-caracteres-na-saida-282140).\n\n### Windows\n\n1.  Faça o download da aplicação clicando [aqui](https://github.com/Jorgeluisreis/AskConsole/releases)\n\n2.  Descompacte o arquivo baixado usando o WinRAR ou 7-Zip.\n\n3.  Mova a pasta descompactada para um local do seu computador.\n\n**Observação:** Caso mova para a pasta \"Arquivos de Programas\", certifique-se de que as permissões de modificação da pasta estão adequadas.\n\n4. Ao abrir a aplicação pela primeira vez, será solicitado um arquivo `.ini` com a chave API. A estrutura do arquivo deve ser:\n\n```text\nAPI=(Sua API Aqui)\n```\n\nPor exemplo:\n\n```text\nAPI=AzKj231Azi8AqweKa\n```\n\n### Linux\n\n1.  Faça o download da aplicação clicando [aqui](https://github.com/Jorgeluisreis/AskConsole/releases)\n\n2.  Descompacte o arquivo baixado usando o `unzip` ou qualquer outra ferramenta de descompactação de sua preferência.\n\n3.  Mova a pasta descompactada para um local de sua escolha no sistema.\n\n4.  Torne o arquivo executável e execute a aplicação com os seguinte comando\n\n```text\nchmod +x AskConsole.jar\n```\n\n5. Execute a aplicação\n\n```text\njava -jar AskConsole.jar\n```\n\n7. Ao abrir a aplicação pela primeira vez, será solicitado um arquivo `.ini` com a chave API. A estrutura do arquivo deve ser:\n\n```text\nAPI=(Sua API Aqui)\n```\n\nPor exemplo:\n\n```text\nAPI=AzKj231Azi8AqweKa\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjorgeluisreis%2Faskconsole","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjorgeluisreis%2Faskconsole","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjorgeluisreis%2Faskconsole/lists"}