docs: README alinhado com o estado atual do app
- Diagrama ASCII redesenhado: abas, árvore de categorias no sidebar, gutter com números de linha e marcador de coluna - Nota sobre o layout mobile (gaveta + painel em tela cheia) - Tamanho do binário (~7 MB com -trimpath), estrutura de diretórios, seção de testes e segurança (localStorage de preferências/abas)
This commit is contained in:
1 parent
70887b5b48
commit
0f2c32ae3d
1 file changed
+30
-20
@@ -4,29 +4,36 @@ Aplicação web completa para gerenciamento de notas inspirada no visual sóbrio
|
||||
**Mousepad** (editor de texto do XFCE): barra de menus superior, barra de ferramentas, área de
|
||||
texto limpa e barra de status na parte inferior.
|
||||
|
||||
Backend único em **Go** (binário estático de ~11 MB com o frontend já embutido), armazenamento em
|
||||
Backend único em **Go** (binário estático de ~7 MB com o frontend já embutido), armazenamento em
|
||||
disco no estilo **Git** (blobs endereçados por SHA-256 + histórico de revisões com diff e
|
||||
restauração) e autenticação por **token** (Bearer para API / cookie HttpOnly para o navegador).
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────────────────────────┐
|
||||
│ ☰ Notas Arquivo Editar Exibir Ajuda │ ← barra de menus
|
||||
├──────────────────────────────────────────────────────────────────────┤
|
||||
│ +Nova 💾Salvar ⬇Baixar │ B I S H1 H2 • 1 ❝ 🔗 </> { } │ Formato ▾ │ ← barra de ferramentas
|
||||
│ [ Editar | Preview ] 🕘Versões │
|
||||
├──────────────┬──────────────────────────────────────┬────────────────
|
||||
│ Buscar… │ Título da nota categoria │ HISTÓRICO DE │
|
||||
│ CATEGORIA ▾ ├──────────────────────────────────────┤ │ REVISÕES │
|
||||
│ TAGS │ # Placas │ │ hash · autor │
|
||||
│ #linux 2 │ **nvme** em `/dev/nvme0` │ │ mensagem · data│
|
||||
│ NOTAS │ - controladora #linux │ ├────────────────┤
|
||||
│ nota1 .md │ … │ │ diff unificado │
|
||||
│ nota2 .txt │ │ │ +restaurar │
|
||||
├──────────────┴──────────────────────────────────────┴────────────────┤
|
||||
│ nota.md .md Ln 4, Col 12 128 caracteres · 20 palavras ●● │ ← barra de status
|
||||
└──────────────────────────────────────────────────────────────────────┘
|
||||
┌──────────────────────────────────────────────────────────────────────────┐
|
||||
│ ☰ Notas Arquivo Editar Exibir Ajuda │ ← barra de menus
|
||||
├──────────────────────────────────────────────────────────────────────────┤
|
||||
│ ✚Nova 💾Salvar ⬇Baixar │ B I S H1 H2 ≡• 1 ❝ 🔗 </> { } │ Formato ▾ │ ← barra de ferramentas
|
||||
│ [ Editar | Preview ] 🕘Versões │
|
||||
├─────────────────┬────────────────────────────────────────────────────────┤
|
||||
│ Buscar… │ ┌ nota.md ● ─┬─ outra.md ─┐ ✚ │ ← abas │
|
||||
│ CATEGORIAS +pasta├─────────────┴─────────────┴──────────┴────────────────┤
|
||||
│ 🗂 Todas as notas│ Título da nota 🗀 devops +1 ▾ │
|
||||
│ 🗄 Sem categoria ├────────────────────────────────────────────────────────┤
|
||||
│ 📂 devops 1 │ 1 │ # Placas │
|
||||
│ · 📁 k8s 2 │ 2 │ │
|
||||
│ TAGS │ 3 │ **nvme** em `/dev/nvme0` │ ← números de linha, │
|
||||
│ #linux 2 #devops1│ 4 │ - controladora #linux │ cores, marcador │
|
||||
│ NOTAS 3 │ 5 │ … ┊ │ de coluna (80) │
|
||||
│ nota1 .md │ │
|
||||
│ nota2 .txt │ │
|
||||
├─────────────────┴────────────────────────────────────────────────────────┤
|
||||
│ nota.md .md Ln 4, Col 12 128 caracteres · 20 palavras ● não salvo│ ← barra de status
|
||||
└──────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
No celular (≤760px) a barra lateral vira **gaveta** com backdrop e o painel de versões
|
||||
ocupa a tela inteira; menus e toolbar rolam horizontalmente com botões só de ícone.
|
||||
|
||||
## Funcionalidades
|
||||
|
||||
- **3 formatos por nota**: Texto puro (`.txt`), Markdown (`.md`) e HTML (`.html`), alternáveis no
|
||||
@@ -90,9 +97,9 @@ restauração) e autenticação por **token** (Bearer para API / cookie HttpOnly
|
||||
.
|
||||
├── cmd/notas/ # main: flags, env, graceful shutdown
|
||||
├── internal/
|
||||
│ ├── store/ # persistência em disco + revisões (estilo Git)
|
||||
│ ├── store/ # persistência em disco, revisões (estilo Git) e árvore de categorias
|
||||
│ ├── diffx/ # diff unificado (gotextdiff/Myers)
|
||||
│ └── api/ # rotas HTTP, auth, render de Markdown
|
||||
│ └── api/ # rotas HTTP, auth, CRUD de categorias, render de Markdown
|
||||
├── web/ # frontend estático (go:embed no binário)
|
||||
│ ├── index.html css/app.css js/app.js
|
||||
├── Dockerfile # multi-stage: golang:alpine → scratch
|
||||
@@ -185,11 +192,14 @@ curl -X DELETE -H "Authorization: Bearer $T" $B/api/categories/<id> #
|
||||
a requisição chega por HTTPS/`X-Forwarded-Proto`. O modelo é **token único compartilhado**
|
||||
(sem usuários múltiplos); a imagem final é `scratch` non-root (uid 65534) — sem shell para
|
||||
`exec` de depuração, por design.
|
||||
- Preferências do editor e abas abertas ficam em `localStorage` (dados não sensíveis, por
|
||||
dispositivo/navegador); o token nunca vai para lá.
|
||||
|
||||
## Testes
|
||||
|
||||
```bash
|
||||
go test ./... # store (revisões/GC/tags), diffx (diff unificado), api (fluxo HTTP completo)
|
||||
go test ./... # store (revisões/GC/tags/árvore de categorias/migração),
|
||||
# diffx (diff unificado), api (fluxo HTTP completo + CRUD de categorias)
|
||||
go vet ./...
|
||||
node --check web/js/app.js
|
||||
```
|
||||
Reference in new issue
Block a user