Show HN: Nash - notas autônomas feitas em um único arquivo HTML
(keepworking.github.io)- Nash é uma nota autônoma baseada em HTML que pode ser aberta e editada no navegador, sem precisar de serviço separado
- As notas salvas podem ser editadas também offline, com a proposta de serem tratadas como arquivos de documento em vez de depender de Notion ou Word
- Pode ser usado para criar conteúdo em formato de documento HTML, como blogs estáticos, conteúdo de página única ou anexos como fotos de pizza de uma galeria
- Ao enviar por mensageiros, é possível visualizá-lo em prévia, permitindo também um fluxo de compartilhamento de conteúdo longo como se fosse um arquivo
- Nash foi lançado como código aberto, e a página de nota em branco pode ser modificada e usada livremente
Notas HTML usadas só com o navegador
- Nash é uma nota autônoma voltada ao conceito de note as HTML
- Não requer software ou serviço separado; basta ter um navegador web, algo normalmente já instalado
- As notas salvas oferecem suporte a edição offline
- Uma nota em branco pode ser aberta em nash.html
Tipos de conteúdo e forma de compartilhamento
- Pode ser usado para criar blogs estáticos ou conteúdo de página única
- Também permite criar conteúdo anexando, por exemplo, fotos que estão na galeria
- Quando enviado por mensageiros, pode ser visto em prévia, o que permite compartilhar conteúdo longo
- Surgiu da experiência de fazer POCs de ideias simples com um único HTML, sendo uma primeira tentativa de criar um arquivo de documento que funcione sem serviço ou software separado
- Nash foi publicado como código aberto, podendo ser modificado e usado livremente
2 comentários
Nash, notas que funcionam em um único arquivo HTML
Você postou isso no Show GN e também no Hacker News, e recebeu muitos votos. Parabéns!
Comentários do Hacker News
Boa parte do trabalho pesado é resolvida por um único atributo HTML simples, mas poderoso, e surpreendentemente parece que muitos desenvolvedores não o conhecem
É um recurso que existe há bastante tempo
O Writely foi a startup que depois virou o Google Docs, e digo isso como um dos fundadores
Os outros 90% eram código de backend que tivemos de escrever para sincronizar corretamente as edições, porque cada navegador tinha bugs estranhos e diferentes na implementação de contenteditable :-)
Só que (1) estilizar no WP era trabalhoso demais e eu não queria manter isso, (2) eu não queria depender de funcionalidades de plugins e de upgrades do WP, e (3) eu queria permitir que pessoas com permissões diferentes editassem partes diferentes da mesma página, o que era praticamente impossível na maioria dos CMSs
Então criei um CMS quase do zero baseado apenas em contenteditable e TinyMCE, marcando as áreas editáveis com essa tag. Claro que, antes de salvar, o backend verificava quem podia editar o quê
Quando um cliente ou funcionário faz login, ele pode editar diretamente apenas as áreas da página para as quais tem permissão, e o CMS mostra uma borda pontilhada nas partes editáveis. Fontes e cores ficam salvas na configuração do TinyMCE, então não é preciso vasculhar nem mexer no HTML. Se quiser, também dá para mexer diretamente
Para o cliente, isso parece bem mágico. Em vez de ir para uma página de edição separada para ver como a alteração vai ficar, ele faz a edição no próprio lugar na página, salva, e a mudança é publicada imediatamente
A maioria desses sites continua no ar hoje, 5 a 10 anos depois, e quase não exige manutenção da minha parte
https://news.ycombinator.com/item?id=43179649
contenteditable="true"no div de nível superiorAcho que já trabalhei com isso 20 anos atrás
ContentEditable foi introduzido pela primeira vez no IE 5.5 em 2000 e, em 2007, já podia ser usado em todos os principais navegadores
Gostei muito, e gostei ainda mais ao ver o código-fonte porque está sendo escrito em JavaScript puro
Hoje se subestima o quanto dá para criar apps web bastante interativos sem bibliotecas nem frameworks
A ideia de criar um app web local simples como uma única página HTML também é excelente. Uma vez fui com meu filho a um museu de ciências e usamos um animador simples de stop motion; depois criei um app web parecido e copiei como um único arquivo HTML para o notebook dele, para que pudesse usar sem internet
Só que eu tenho preguiça de escrever JavaScript puro diretamente, então fiz com React e um bundler, e o resultado final fica empacotado em um único arquivo HTML. Talvez um dia eu publique no Show HN
Com JavaScript puro comum e um bom nível de habilidade, dá para fazer quase tudo de forma mais limpa e mais fácil de manter
Depois de décadas mantendo coisas feitas por outras pessoas, vi que um design quase estupidamente simples feito por alguém inteligente vence as outras combinações
Bem feito
Vale considerar mudar o comportamento para que, ao abrir a página pelo navegador a partir do disco local, ela entre automaticamente em modo de edição, e, quando estiver publicada no site de alguém e acessível pela web pública, vire uma visualização normal somente leitura. Basta verificar se o endereço é http/https
Claro, ainda deve haver alguma forma de contornar isso para ver também em modo de edição, como um parâmetro de query string ou um fragmento mágico de URL
Também deveria ser possível definir exceções para determinados domínios ou prefixos de URL. Se o padrão for keepworking.github.io ou <https://keepworking.github.io/nash/>, o modo de edição continuaria ativo nesse site e não seria preciso fazer nada especial para a demo
Seria ainda melhor se essa exceção pudesse ser alterada pelo usuário. Assim, por exemplo, outras pessoas também poderiam obter o mesmo comportamento sem o truque do item 1
Pessoalmente, acho ótimo e gostaria que continuasse exatamente como está
Com https://rpdillon.net/redbean-tiddlywiki-saver.html, dá para transformá-lo em um app portátil autossuficiente com salvamento “de verdade”
Assim ficaria muito mais próximo de um recurso em que você pode ter favoritos pessoais quando quiser
Bom. Houve uma discussão anterior que mencionava essa ideia e o TiddlyWiki
https://news.ycombinator.com/item?id=43179649
Eu gostaria que os navegadores dessem suporte melhor a apps web locais
Se arquivos locais pudessem acessar facilmente armazenamento persistente, isso abriria muitas oportunidades para apps com GUI rápidos e fáceis. Na prática, seria o caminho oposto ao Electron
Legal. Talvez por eu estar tão acostumado a escrever a parte em JavaScript de um site fora do HTML de fato, quando vi pela primeira vez pensei: “uau, que curioso que dá para fazer isso só com HTML”
Mas, ao olhar o código-fonte, vi que havia JavaScript dentro de uma tag
scriptcomum, e isso me fez lembrar de novo que também dá para fazer desse jeitoA maior parte das telas que vemos todos os dias, até mesmo editores de código, são páginas HTML
O mais surpreendente é que as pessoas usam frameworks e colocam dentro do HTML coisas que nem são JavaScript, com estruturas em que um JavaScript externo é anexado depois ou precisa fazer hidratação. Parece juntar o pior dos dois lados
Eu estou mais no extremo oposto: JavaScript é o centro e, tirando
index.html, não tenho arquivos com extensão.html. Também não coloco HTML dentro do JavaScript. Os templates parciais são todos.htme são hidratados antes de serem adicionados ao DOMSeria bom aparecer um aviso ao tentar fechar a página depois de editar sem salvar
Vale considerar adicionar um manipulador
onbeforeunloadGosto desse tipo de ferramenta simples. Há pouco tempo criei uma “homepage”/dashboard personalizado simples: https://github.com/rcarmo/onepage-by-spec
Muito bom. É frustrante ver cada vez mais softwares escondendo atrás de uma assinatura recursos que poderiam ser facilmente executados localmente e que já eram assim, além de impor limitações artificiais
Estou criando um editor Markdown gratuito que roda só dentro do navegador e consegue editar arquivos locais por meio da nova File System Access API. Essa API só está disponível em navegadores baseados em Chromium
https://zareith.github.io/chillmd/