Giter Site home page Giter Site logo

rxm0n / uburu Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 7.25 MB

Aplicativo de busca eficiente de códigos e strings em arquivos, utilizando indexação para agilizar o processo de pesquisa. A aplicação permite a rápida localização de palavras-chave e trechos de código em um conjunto de arquivos, proporcionando uma ferramenta útil para desenvolvedores e pesquisadores.

License: MIT License

Java 53.66% CSS 7.67% HTML 2.46% TypeScript 36.21%

uburu's Introduction

Uburu

Uburu

1. Contexto do projeto

O projeto de software proposto tem como objetivo resolver um problema comum no desenvolvimento de software: a duplicação de código. Esse problema aumenta a complexidade do sistema e gera arquivos inúteis, o que pode afetar negativamente a eficiência e a qualidade do software.

A solução proposta envolve a criação de uma ferramenta que permita identificar o código já existente que solucione um determinado problema em um contexto específico de desenvolvimento. Para isso, será necessário desenvolver algoritmos de comparação de código que possam analisar uma grande quantidade de arquivos de código-fonte e identificar soluções similares ou idênticas.

A ferramenta proposta terá a capacidade de localizar e destacar trechos de código duplicados em diferentes arquivos, além de permitir a visualização e a comparação desses trechos lado a lado. Além disso, a ferramenta poderá ser configurada para realizar buscas em diferentes repositórios de código-fonte, permitindo que desenvolvedores possam identificar soluções similares em diferentes projetos.

Com essa ferramenta, os desenvolvedores poderão identificar rapidamente o código duplicado e substituí-lo por soluções mais eficientes e elegantes, reduzindo a complexidade do sistema e melhorando a qualidade do software. Além disso, a ferramenta também poderá ser utilizada como uma ferramenta de aprendizado, permitindo que desenvolvedores iniciantes possam estudar diferentes soluções para um mesmo problema e aprender com as boas práticas utilizadas pelos desenvolvedores mais experientes.

2. Requisitos

2.1. Requisitos funcionais

  1. O aplicativo deve permitir ao usuário especificar o diretório a ser pesquisado.
  2. O aplicativo deve permitir ao usuário especificar um ou mais termos de busca.
  3. O aplicativo deve retornar uma lista de resultados que correspondam aos termos de busca.
  4. O aplicativo deve permitir ao usuário abrir e visualizar os arquivos que contêm os resultados da pesquisa.
  5. O aplicativo deve permitir ao usuário salvar os resultados da pesquisa em um arquivo ou imprimir a lista de resultados.
  6. O aplicativo deve permitir que o usuário refine a pesquisa usando filtros, como tipo de arquivo, data de modificação e tamanho do arquivo.
  7. O aplicativo deve ser capaz de pesquisar texto em uma ampla variedade de formatos de arquivo, incluindo PDFs, planilhas, documentos do Word, arquivos de texto, apresentações, e-mails, etc.
  8. O aplicativo deve exibir os resultados da pesquisa em uma lista com informações adicionais, como o nome do arquivo, localização e data de modificação.
  9. O aplicativo deve permitir que o usuário navegue pelos resultados da pesquisa e abra os arquivos relevantes.
  10. O aplicativo deve manter um registro do histórico de pesquisa para que o usuário possa acessar facilmente pesquisas anteriores.

2.2. Requisitos não funcionais

  1. O aplicativo deve ser eficiente na pesquisa e retorno dos resultados.
  2. O aplicativo deve ser fácil de usar, com uma interface intuitiva e amigável para o usuário.
  3. O aplicativo deve ser capaz de lidar com grandes quantidades de dados e arquivos sem falhas ou erros.
  4. O aplicativo deve ser seguro e proteger a privacidade dos usuários, não acessando arquivos sem permissão e não coletando dados pessoais sem consentimento explícito.
  5. O aplicativo deve ser seguro e não comprometer a privacidade ou a segurança dos dados do usuário.
  6. Ao menos 70% do código deve ser cobrido por testes unitários.

3. Diagrama de casos de uso

UburuUseCase

4. Diagrama de classes

Search-Engine

5. Definição de tecnologias

5.1. Springboot

  1. Facilidade para a construção de APIs: O Spring Boot é uma estrutura de desenvolvimento que foi projetada especificamente para facilitar a criação de APIs. Com o Spring Boot, você pode criar APIs de alta qualidade de forma rápida e fácil, usando uma variedade de ferramentas e recursos disponíveis.
  2. Grande quantidade de recursos disponíveis: O Spring Boot é uma plataforma extremamente poderosa que oferece uma grande quantidade de recursos e funcionalidades que podem ser utilizados em uma ampla gama de projetos. Com o Spring Boot, você tem acesso a uma biblioteca extensa e diversificada de componentes, que podem ser facilmente integrados em projetos existentes, reduzindo o tempo e o esforço necessários para o desenvolvimento de novos recursos.
  3. Familiaridade com a linguagem Java: Os envolvidos no projeto tem conhecimento e anos de experiência em desenvolvimento utilizando a linguagem Java. Fora isso, todos já participaram do desenvolvimento de um projeto utilizando o framework SPringboot.
  4. Equilíbrio entre poder computacional e a dificuldade no desenvolvimento: O Spring Boot é altamente escalável e fornece um bom equilíbrio entre poder computacional e complexidade de desenvolvimento. Ele é leve, rápido e pode ser facilmente configurado para se adaptar às necessidades do seu projeto. Com o Spring Boot, você pode ter certeza de que sua aplicação terá um bom desempenho e será fácil de manter e atualizar.

5.2. Electron JS

  1. Cross-platform: O Electron JS é um framework cross-platform que permite criar aplicativos para desktop que podem ser executados em vários sistemas operacionais, incluindo Windows, macOS e Linux.
  2. Baseado em tecnologias web: O Electron JS é baseado em tecnologias web, como HTML, CSS e JavaScript. Isso significa que os envolvidos no projeto, que já estão familiarizados com essas tecnologias, podem facilmente criar aplicativos para desktop sem precisar aprender uma nova linguagem ou tecnologia. Além disso, como o Electron JS utiliza tecnologias web, é possível reutilizar muito do código de um aplicativo web existente para criar um aplicativo para desktop e vice-versa.
  3. Grande comunidade: O Electron JS é uma framework open-source com uma grande comunidade de desenvolvedores ativos. Isso significa que há uma grande quantidade de recursos disponíveis, incluindo documentação, bibliotecas e exemplos de código, o que facilita o desenvolvimento de aplicativos.
  4. Funcionalidades nativas: O Electron JS permite que os desenvolvedores criem aplicativos para desktop com funcionalidades nativas, como acesso a arquivos locais, notificações e integração com o sistema operacional. Isso permite que os aplicativos criados com o Electron JS tenham um desempenho semelhante ao de aplicativos nativos.

5.3 React JS

  1. O React permite a criação de componentes reutilizáveis que facilitam o desenvolvimento e manutenção do código, tornando-o mais escalável e modular.
  2. O React utiliza o fluxo de dados unidirecional, o que significa que a comunicação entre os componentes é clara e fácil de entender, tornando o código mais fácil de depurar.
  3. O React é altamente flexível e pode ser usado com outras bibliotecas e frameworks, permitindo a integração com diferentes plataformas e tecnologias.
  4. O React tem uma grande comunidade de desenvolvedores ativos, com muitos recursos disponíveis, como bibliotecas de componentes e ferramentas de desenvolvimento.

6. Dependências do projeto

  • Node.js & npm
  • React
  • Electron
  • JQuery
  • Concurrently
  • MUI

7. Canais de comunicação das APIs

  • {project_location}/api/v1/search: API de busca dos arquivos
  • {project_location}/api/v1/history: Registra o histórico de dados de todos os campos de texto (filtros, pastas e palavras buscadas)

uburu's People

Contributors

dheovani avatar higormarcelino avatar ramon-victor avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.