Skip to content

soujoaomoraes/noto-git-notes

Repository files navigation

📝 Noto - Aplicativo de Anotações com Integração Git

License: MIT TypeScript React Electron

Noto é um aplicativo desktop multiplataforma para criação e edição de notas em Markdown com integração direta ao Git/GitHub, oferecendo controle total e versionamento das anotações.

🎯 Visão Geral

Noto resolve a necessidade de centralizar todas as anotações em um único local com controle de versão, oferecendo:

  • Editor Markdown com preview em tempo real
  • 🔄 Integração Git nativa para versionamento
  • 📁 Organização hierárquica de arquivos e pastas
  • 💾 Auto-save e sincronização automática
  • 🎨 Interface elegante com temas claro/escuro
  • 🔍 Busca avançada de arquivos
  • 📱 Multiplataforma (Windows, Mac, Linux)

🚀 Funcionalidades

✅ Implementadas (v1.0 - MVP Funcional)

  • Editor Markdown: Split screen com código e preview em tempo real
  • Sistema de Arquivos: Persistência real de arquivos Markdown
  • Workspace: Configurado em ~/Documents/Noto
  • Interface Responsiva: Sidebar colapsável, temas dinâmicos
  • Auto-save: Salvamento automático após 2 segundos
  • Organização: Criação de pastas e estrutura hierárquica
  • Shortcuts: Atalhos de teclado (Ctrl+N, Ctrl+S, Ctrl+K)
  • Status Visual: Indicadores de sincronização e erro
  • Criação de Notas: Funcionando com auto-save
  • Navegação: Funcionando entre arquivos

🔄 Em Desenvolvimento

  • Sincronização Git: Corrigir erro spawn /bin/sh ENOENT
  • Testes Unitários: Cobertura de 80%+
  • Busca Full-text: Busca no conteúdo dos arquivos
  • Histórico Visual: Visualização de versões Git
  • Sincronização Automática: Programada e em background
  • Plugins: Sistema de extensões

🛠️ Stack Tecnológico

Frontend

  • React 18.3.1 - Biblioteca para interfaces
  • TypeScript 5.5.3 - Tipagem estática
  • Vite 5.4.1 - Build tool rápido
  • Tailwind CSS 3.4.11 - Framework CSS
  • Radix UI + shadcn/ui - Componentes acessíveis
  • React Query - Gerenciamento de estado

Desktop

  • Electron 37.2.5 - Framework desktop
  • Node.js - Runtime JavaScript
  • electron-builder - Build multiplataforma

Desenvolvimento

  • ESLint - Linting e formatação
  • TypeScript - Verificação de tipos
  • Git - Controle de versão

📦 Instalação

Pré-requisitos

  • Node.js 18+ (instalar com nvm)
  • npm ou yarn
  • Git (para funcionalidades de versionamento)

Desenvolvimento

# 1. Clonar o repositório
git clone https://github.com/joaomoraes/noto-git-notes.git
cd noto-git-notes

# 2. Instalar dependências
npm install

# 3. Iniciar desenvolvimento
./dev.sh

# Para parar: Ctrl+C

📊 Status Atual

✅ v1.0 - MVP Funcional

  • App funcionando: Interface carregada e responsiva
  • Criação de notas: Funcionando com auto-save
  • Criação de pastas: Funcionando
  • Navegação: Funcionando entre arquivos
  • Workspace: Configurado em ~/Documents/Noto
  • Editor Markdown: Split screen funcionando
  • Temas: Claro/escuro funcionando

❌ Problema Conhecido

  • Sincronização Git: Erro spawn /bin/sh ENOENT - Ver detalhes

📋 Próximos Passos

  1. Corrigir sincronização Git (prioridade crítica)
  2. Implementar testes unitários
  3. Melhorar UX e feedback visual

Build para Produção

# Build da aplicação web
npm run build

# Build da aplicação desktop
npm run electron:build

# Build para distribuição
npm run electron:dist

🏗️ Arquitetura

Noto segue uma arquitetura híbrida cliente-servidor com Electron:

┌─────────────────────────────────────────────────────────────┐
│                    APLICAÇÃO NOTO                          │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────────┐    ┌─────────────────┐              │
│  │   PROCESSO      │    │   PROCESSO      │              │
│  │   PRINCIPAL     │◄──►│   RENDERER      │              │
│  │   (Electron)    │    │   (React)       │              │
│  └─────────────────┘    └─────────────────┘              │
│           │                       │                       │
│           ▼                       ▼                       │
│  ┌─────────────────┐    ┌─────────────────┐              │
│  │   SISTEMA DE    │    │   INTERFACE     │              │
│  │   ARQUIVOS      │    │   DE USUÁRIO    │              │
│  │   (Node.js fs)  │    │   (React + UI)  │              │
│  └─────────────────┘    └─────────────────┘              │
│           │                       │                       │
│           ▼                       ▼                       │
│  ┌─────────────────┐    ┌─────────────────┐              │
│  │   CONTROLE DE   │    │   GERENCIAMENTO │              │
│  │   VERSÃO        │    │   DE ESTADO     │              │
│  │   (Git)         │    │   (React Query) │              │
│  └─────────────────┘    └─────────────────┘              │
└─────────────────────────────────────────────────────────────┘

Camadas da Aplicação

  • Camada de Apresentação: React, TypeScript, Tailwind CSS
  • Camada de Aplicação: React Hooks, Custom Hooks
  • Camada de Serviços: TypeScript, Node.js APIs
  • Camada de Sistema: Electron IPC, Node.js fs, child_process

📁 Estrutura do Projeto

src/
├── components/                 # Componentes React
│   ├── ui/                    # Componentes base (shadcn/ui)
│   └── noto/                  # Componentes específicos
│       ├── NotoApp.tsx        # Componente principal
│       ├── Editor.tsx         # Editor Markdown
│       ├── Sidebar.tsx        # Navegação de arquivos
│       └── ...                # Outros componentes
├── services/                  # Camada de serviços
│   ├── FileSystemService.ts   # Operações de arquivo
│   └── GitService.ts          # Operações Git
├── hooks/                     # Custom hooks
│   ├── useFileSystem.ts       # Hook para arquivos
│   └── useGit.ts              # Hook para Git
└── types/                     # Tipos TypeScript

electron/                      # Código do processo principal
├── main.js                    # Processo principal
└── preload.js                 # Script de preload

docs/                          # Documentação
├── produto/                   # Documentação de produto
└── dev/                       # Documentação técnica
    ├── architecture.md        # Arquitetura do sistema
    ├── status.md              # Status atual
    └── todo.md                # Próximas tarefas

📚 Documentação

Documentação Técnica

  • Arquitetura - Visão geral da arquitetura do sistema
  • Status - Status atual do desenvolvimento
  • TODO - Próximas tarefas e roadmap
  • Changelog - Histórico de mudanças

Documentação de Produto

🚀 Scripts Disponíveis

# Desenvolvimento
./dev.sh                 # Script simples para desenvolvimento
npm run build            # Build da aplicação
npm run electron:dev     # Electron em modo desenvolvimento

# Build
npm run build            # Build da aplicação
npm run build:dev        # Build em modo desenvolvimento
npm run electron:build   # Build da aplicação desktop
npm run electron:dist    # Distribuição multiplataforma

# Qualidade
npm run lint             # Linting do código

# Electron
npm run electron         # Executar Electron
npm run electron:dev     # Electron em modo desenvolvimento

🎯 Roadmap

Fase 1: MVP Funcional ✅ CONCLUÍDO

  • Interface básica de criação/edição
  • Editor Markdown com preview
  • Integração básica GitHub
  • Funcionalidade offline

Fase 2: Qualidade e Estabilidade (Atual)

  • Testes unitários (80%+ cobertura)
  • Melhorias de UX e feedback visual
  • Otimizações de performance
  • Tratamento robusto de erros

Fase 3: Funcionalidades Avançadas

  • Busca full-text no conteúdo
  • Histórico de versões visual
  • Resolução de conflitos de merge
  • Sincronização automática programada

Fase 4: Open Source

  • Documentação completa
  • Guias de contribuição
  • Release público

🤝 Contribuindo

Como Contribuir

  1. Fork o projeto
  2. Clone seu fork: git clone https://github.com/seu-usuario/noto-git-notes.git
  3. Crie uma branch: git checkout -b feature/nova-funcionalidade
  4. Desenvolva seguindo os padrões do projeto
  5. Teste suas mudanças
  6. Commit: git commit -m 'feat: adiciona nova funcionalidade'
  7. Push: git push origin feature/nova-funcionalidade
  8. Abra um Pull Request

Padrões de Desenvolvimento

  • Commits: Seguir Conventional Commits
  • Código: TypeScript com tipagem completa
  • Testes: Jest + Testing Library
  • Linting: ESLint configurado
  • Documentação: Manter documentação atualizada

Estrutura de Commits

feat: adiciona nova funcionalidade
fix: corrige bug na sincronização
docs: atualiza documentação
refactor: refatora componente Editor
test: adiciona testes para FileSystemService
perf: otimiza performance do preview
chore: atualiza dependências

📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.

👨‍💻 Autor

João Moraes

🙏 Agradecimentos


⭐ Se este projeto te ajudou, considere dar uma estrela!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published