▶ Try it live / Testar agora — no install required / sem instalação
Meeting notes organized by team and date, saved in a locally-encrypted JSON file. No server, no cloud, no tracking.
Notas de reunião organizadas por time e data, salvas em um arquivo JSON criptografado localmente no seu computador. Sem servidor, sem nuvem, sem rastreamento.
- Rich text editor with formatting toolbar
- Ctrl+B bold · Ctrl+I italic · Ctrl+U underline · Ctrl+⇧S strikethrough
- Text commands:
/h+ Enter for heading,/b+ Space/Enter for bullet list - Real-time character count
- Date history pills with notes indicator
- Full-text search across all team notes (Ctrl+F)
- Editor de rich text com toolbar de formatação
- Ctrl+B negrito · Ctrl+I itálico · Ctrl+U sublinhado · Ctrl+⇧S tachado
- Comandos de texto:
/h+ Enter para título,/b+ Espaço/Enter para lista de bullets - Contagem de caracteres em tempo real
- Histórico de datas com notas (pills de navegação)
- Busca full-text em todas as notas do time (Ctrl+F)
- Create as many teams as you want, each with an emoji and name
- Reorder teams by dragging the
⠿handle - Quick keyboard selection: Ctrl+1 … Ctrl+9
- Pinned notes per team (permanent info, hierarchy, contacts)
- Stakeholder management with name and role
- Crie quantos times quiser, cada um com emoji e nome
- Reordene times arrastando pelo handle
⠿ - Selecione rapidamente pelo teclado: Ctrl+1 … Ctrl+9
- Notas fixas por time (informações permanentes, hierarquia, contatos)
- Gerenciamento de stakeholders com nome e cargo
- Ctrl+← previous day · Ctrl+→ next day · Ctrl+↑ today
- Visual calendar with indicators for days that have notes
- Ctrl+← dia anterior · Ctrl+→ próximo dia · Ctrl+↑ hoje
- Calendário visual com indicação dos dias que têm notas
- JSON file encrypted with AES-GCM 256-bit
- Key derivation via PBKDF2 (200,000 iterations, SHA-256)
- All encryption done locally via the Web Crypto API
- No data ever leaves your computer
- Arquivo JSON criptografado com AES-GCM 256-bit
- Derivação de chave via PBKDF2 (200.000 iterações, SHA-256)
- Toda a criptografia é feita localmente via Web Crypto API
- Nenhum dado sai do seu computador
- 4 themes: ☀️ Light · 🌙 Dark · 🌿 Forest · 🌅 Sunset
- 4 fonts for notes: System · Mono · Serif · Sans
- Two languages: 🇧🇷 Português · 🇺🇸 English
- Installable as PWA (works offline)
- Help modal with all shortcuts (? in the header)
- 4 temas: ☀️ Claro · 🌙 Escuro · 🌿 Floresta · 🌅 Pôr do Sol
- 4 fontes para as notas: Sistema · Mono · Serif · Sans
- Dois idiomas: 🇧🇷 Português · 🇺🇸 English
- Instalável como PWA (funciona offline)
- Modal de ajuda com todos os atalhos (? no cabeçalho)
| Shortcut / Atalho | Action / Ação |
|---|---|
Ctrl+F |
Focus note search / Focar busca de notas |
Ctrl+← |
Previous day / Dia anterior |
Ctrl+→ |
Next day / Próximo dia |
Ctrl+↑ |
Go to today / Ir para hoje |
Ctrl+1 … Ctrl+9 |
Select team by position / Selecionar time por posição |
Ctrl+B |
Bold / Negrito |
Ctrl+I |
Italic / Itálico |
Ctrl+U |
Underline / Sublinhado |
Ctrl+⇧S |
Strikethrough / Tachado |
/h + Enter |
Insert heading / Inserir título |
/b + Space/Enter |
Bullet list / Lista de bullets |
Esc |
Close menu / window · Fechar menu / janela |
- Vanilla HTML + CSS + JavaScript — single file, no framework, no build step
- File System Access API — read/write local file (requires Chrome or Edge)
- Web Crypto API — native AES-GCM browser encryption
- IndexedDB — file handle persistence between sessions
- Service Worker — offline support and cache (PWA)
- Playwright + TypeScript — end-to-end test suite
Online: Open the live version directly in your browser.
Local: Download meeting-notes.html and open it in Chrome or Edge.
Requirement / Requisito: Chrome or Edge (required for the File System Access API).
To install as a desktop app: click the install icon in Chrome/Edge or use the Install App button inside the app.
Para instalar como app de desktop: clique no ícone de instalação no Chrome/Edge ou use o botão Instalar App dentro do app.
npm install
# Run all tests (182 tests in 16 files)
# Rodar todos os testes (182 testes em 16 arquivos)
npm test
# Playwright visual UI
# Interface visual do Playwright
npm run test:ui
# HTML report / Relatório HTML
npm run test:reportTests cover: welcome screen, settings, keyboard, password, teams, notes, history pills, search, date navigation, stakeholders, i18n, themes, rich text, shortcuts, team reorder and responsive layout.
Os testes cobrem: welcome screen, settings, teclado, senha, times, notas, pills de histórico, busca, navegação de datas, stakeholders, i18n, temas, rich text, atalhos, reordenação de times e layout responsivo.
meeting-notes.html # Full application (HTML + CSS + JS in a single file)
sw.js # Service Worker (offline cache)
manifest.json # PWA manifest
tests/ # Playwright test suite
01-welcome.spec.ts … 17-responsive.spec.ts
fixtures/helpers.ts
playwright.config.ts
package.json
Qual a motivação do projeto? Muitas coisas que aconteceram na mesma semana: uma provocação no trabalho sobre a programação com IA para os cargos de gestão, a licença do Notion ter expirado, a vontade de aprender mais sobre o uso do Claude, a vontade de partilhar o conhecimento com a esposa.
Why does this project exist? Several things happened in the same week: a challenge at work about AI-assisted programming for management roles, an expired Notion license, the desire to learn more about using Claude, and the desire to share that knowledge with my wife.
Por que uma solução tão simples? Vejo uma beleza poética em um sistema completo que tem um propósito e que está auto-contido dentro de um único arquivo HTML — nada mais é necessário, tudo ali. É uma limitação auto-imposta que aflige e desafia. Só uma escolha sem muito racional.
Why such a simple solution? There's a poetic beauty in a complete, purposeful system that fits entirely inside a single HTML file — nothing else needed, everything right there. It's a self-imposed constraint that both frustrates and challenges. Just a choice with no great rationale behind it.
O arquivo local de dados não é um ponto frágil? Fique à vontade para fazer o backup/sync desse arquivo com outras tantas aplicações/serviços na web. Não seria possível ser compatível com todos eles sem tornar o aplicativo mais complexo do que o objetivo permite.
Isn't the local data file a fragile point? Feel free to back up or sync that file using any app or service you like. Supporting all of them natively would make the application more complex than its purpose allows.
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See the LICENSE file for the full text.
Este projeto é licenciado sob a GNU Affero General Public License v3.0 (AGPL-3.0). Veja o arquivo LICENSE para o texto completo.
In short: you are free to use, modify and distribute this software, including for network services, as long as you keep the source open under the same license.
Em resumo: você pode usar, modificar e distribuir este software, inclusive para serviços em rede, desde que mantenha o código aberto sob a mesma licença.
Made with ❤️ by Raquel e Fabio — vibe coding exercise.
Feito com ❤️ por Raquel e Fabio — exercício de vibe coding.