O NoteSync é um sistema web moderno para criação e gerenciamento de notas organizadas por cadernos, oferecendo uma experiência intuitiva e eficiente para usuários que precisam manter suas anotações organizadas e acessíveis em qualquer dispositivo através da sincronização com o Google Drive.
- Organização por Cadernos: Crie e gerencie múltiplos cadernos para diferentes temas ou projetos
- Notas Ricas: Editor com suporte a formatação de texto, listas, imagens e anexos
- Etiquetas e Categorias: Organize suas notas com etiquetas personalizáveis
- Sincronização com Google Drive: Mantenha suas notas seguras e acessíveis em qualquer dispositivo
- Modo Offline: Acesse e edite suas notas mesmo sem conexão com a internet
- Pesquisa Avançada: Encontre rapidamente suas notas com busca por texto, etiquetas ou cadernos
- Interface Responsiva: Experiência consistente em dispositivos desktop e móveis
- Microserviços: Arquitetura baseada em serviços independentes para autenticação, cadernos, notas, etiquetas, pesquisa e sincronização
- Para detalhes completos, consulte o diagrama de arquitetura
- Next.js 14: Framework React com renderização híbrida para melhor performance e SEO
- TypeScript: Tipagem estática para código mais seguro e manutenível
- Tailwind CSS: Framework CSS utilitário para design responsivo e customizável
- TipTap: Editor de texto rico baseado em ProseMirror
- Zustand: Gerenciamento de estado global simplificado
- React Query: Gerenciamento de estado do servidor e cache
- Axios: Cliente HTTP para requisições à API
- Node.js: Ambiente de execução JavaScript do lado do servidor
- Express.js: Framework web minimalista e flexível para Node.js
- fs-extra: Extensão do fs para manipulação de arquivos JSON
- JWT: Autenticação baseada em tokens
- Google Drive API: Integração para sincronização de dados
- Zod: Validação de dados e schemas
- Winston: Sistema de logging estruturado
- Arquivos JSON: Armazenamento simples e portátil em formato JSON
- Redis: Cache distribuído para melhorar a performance
- LocalStorage: Cache local para suporte offline no frontend
- Docker: Containerização para ambiente de desenvolvimento consistente
- GitHub Actions: CI/CD para automação de testes e deploy
- Vercel/Netlify: Hospedagem do frontend
- Railway/Render: Hospedagem do backend
- Arquitetura Técnica: Diagrama e detalhes da arquitetura de microserviços
- Esquema de Dados: Estrutura dos arquivos JSON e relacionamentos
- Workflow de Desenvolvimento: Processo de desenvolvimento completo
- Workflow Frontend: Detalhes específicos do desenvolvimento frontend
- Mock API: Sistema para desenvolvimento frontend independente
- Requisitos: User stories e critérios de aceitação
- Node.js (v18 ou superior)
- Docker e Docker Compose
- Conta no Google Cloud Platform (para API do Google Drive)
- Redis (opcional, para ambiente de desenvolvimento completo)
- Clone o repositório:
git clone https://github.com/seu-usuario/notesync.git
cd notesync
- Instale as dependências do backend:
cd backend
npm install
- Instale as dependências do frontend:
cd ../frontend
npm install
- Configure as variáveis de ambiente:
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env
- Inicie os serviços com Docker:
docker-compose up -d
- Inicialize os arquivos JSON para armazenamento de dados:
cd backend
npm run init-data
- Inicie o servidor de desenvolvimento do backend:
npm run dev
- Inicie o servidor de desenvolvimento do frontend:
cd ../frontend
npm run dev
- Acesse a aplicação em
http://localhost:3000
O NoteSync suporta desenvolvimento frontend sem necessidade do backend, utilizando um sistema de Mock API. Para detalhes, consulte MOCK_API_README.md.
notesync/
├── backend/ # Servidor Node.js/Express
│ ├── data/ # Diretório para arquivos JSON
│ ├── src/
│ │ ├── api/ # API Gateway
│ │ ├── services/ # Microserviços
│ │ │ ├── auth/ # Serviço de autenticação
│ │ │ ├── notebooks/ # Serviço de cadernos
│ │ │ ├── notes/ # Serviço de notas
│ │ │ ├── tags/ # Serviço de etiquetas
│ │ │ ├── search/ # Serviço de pesquisa
│ │ │ └── sync/ # Serviço de sincronização
│ │ ├── middlewares/ # Middlewares Express
│ │ ├── models/ # Modelos de dados
│ │ ├── utils/ # Utilitários
│ │ └── app.js # Configuração do Express
│ ├── .env # Variáveis de ambiente
│ └── package.json # Dependências do backend
│
├── frontend/ # Aplicação Next.js
│ ├── public/ # Arquivos estáticos
│ ├── src/
│ │ ├── app/ # Rotas e páginas (App Router)
│ │ ├── components/ # Componentes React
│ │ ├── hooks/ # Hooks personalizados
│ │ ├── lib/ # Bibliotecas e utilitários
│ │ ├── services/ # Serviços de API
│ │ ├── utils/ # Utilitários
│ │ │ └── mockApi.ts # Sistema de Mock API
│ │ ├── store/ # Estado global (Zustand)
│ │ └── styles/ # Estilos globais
│ ├── .env # Variáveis de ambiente
│ └── package.json # Dependências do frontend
│
├── docs/ # Documentação técnica
├── docker-compose.yml # Configuração do Docker
└── README.md # Documentação do projeto
Contribuições são bem-vindas! Por favor, siga estes passos para contribuir:
- Faça um fork do repositório
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade
) - Faça commit das suas alterações (
git commit -m 'Adiciona nova funcionalidade'
) - Faça push para a branch (
git push origin feature/nova-funcionalidade
) - Abra um Pull Request
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para mais detalhes.