O LightNote é um editor de código e notas desenvolvido em C++20 e Qt6, com foco em ser um ambiente de codificação leve e nativo. O projeto atende a uma demanda por um editor de código e notas que seja leve e funcional, sem dependências de web ou frameworks de código aberto.

Pitch: Fiz um editor de código e notas, com IA nativo em C++/Qt6 que fica abaixo de 50MB de RAM

Arquitetura e Tecnologia

Linguagens e Ferramentas

  • C++20: A linguagem de programação escolhida para o desenvolvimento do LightNote.
  • Qt6: A biblioteca de interface de usuário (UI) usada para a criação do ambiente de codificação.
  • Scintilla: O núcleo do Notepad++ usado para o highlight de linguagens de programação.
  • DuckDB: Um banco de dados leve para armazenar grandes conjuntos de dados.
  • MCP: Um servidor de transporte de dados local para interagir com a IA.
  • Ripgrep: Uma ferramenta de busca global embutida.
  • OOXML: Um leitor de arquivos.xlsx próprio.
  • PDF: Renderização de PDFs através do Qt6::Pdf.

Recursos

  • Editor de Código: O LightNote usa Scintilla, o núcleo do Notepad++, para renderizar o código e realizar o highlight de linguagens de programação.
  • Notas: O editor de notas é baseado em um QPlainTextEdit com um QSyntaxHighlighter próprio, que permite a exibição de marcações de texto e a edição de texto comum.
  • Markdown: O editor de texto Markdown é implementado usando um QPlainTextEdit e um QSyntaxHighlighter próprio.
  • Terminal de IA: O terminal de IA é implementado usando ConPTY e MCP.
  • Busca Global: A busca global é implementada usando Ripgrep.
  • Grafos de Conexões: O grafo de conexões é renderizado usando QPainter e simula forças com Barnes-Hut.
  • Notas: As notas são armazenadas em um QAbstractTableModel paginado e indexado em background.
  • Multi-idioma: O LightNote suporta múltiplas línguas.
  • Captura de Notas: A captura de notas é feita através da bandeja.
  • API Tester: Um teste de API é fornecido através de um arquivo.lnh.
  • SSH/SFTP: O LightNote suporta SSH e SFTP.
  • Multi-idioma: O LightNote suporta múltiplas línguas.
  • Notas Autoadesivas: As notas podem ser armazenadas em um arquivo.ndjson.
  • Corretor Ortográfico: O LightNote possui um corretor ortográfico.
  • Versões de Kanban: O LightNote suporta múltiplas versões de Kanban.
  • Distribuição: O LightNote está disponível gratuitamente e pode ser instalado na Microsoft Store.

Desempenho e Eficiência

Memória

  • RAM: O LightNote ocioso ocupa menos de 40MB de RAM, em vez dos 1GB que um editor baseado em Electron pede para abrir um arquivo.txt.
  • Arquivos Gigantes: Arquivos grandes são abertos usando mmap read-only, edições são feitas em uma piece table, e a tela é desenhada de forma virtualizada.
  • DuckDB: Arquivos.parquet/.csv/.json são abertos como tabelas em DuckDB.
  • Busca Global: A busca global é implementada usando Ripgrep, sem o uso de índices binários ou FTS5.
  • PDF: O LightNote renderiza PDFs usando o Qt6::Pdf.
  • Excel: O LightNote possui um leitor próprio de arquivos.xlsx.
  • Zip: O LightNote suporta arquivos.zip.
  • PDF: O LightNote renderiza PDFs usando o Qt6::Pdf.

Conclusão

O LightNote é um editor de código e notas leve e nativo, focado em ser um ambiente de codificação leve e funcional. Ele usa Scintilla para o highlight de linguagens de programação, DuckDB para armazenar grandes conjuntos de dados, e MCP para interagir com a IA. O LightNote suporta múltiplas línguas, múltiplas versões de Kanban, e múltiplos formatos de arquivo, incluindo Excel, PDF, e Zip. O LightNote é um projeto promissor que atende a uma demanda por um editor de código e notas leve e nativo.

CodigoEditorFicaNativoNotas