Stack de Tecnologias
O NeoTavern roda em uma stack deliberadamente convencional: Node.js 24 LTS, Fastify 5, React 19, Vite 8, TypeScript estrito, SQLite com Drizzle ORM e um shell de desktop Tauri 2.
Runtime e Linguagem
- Node.js 24 LTS — o runtime do backend e do sidecar de desktop incluído. O código permanece compatível com Node.js 22 onde for prático.
- TypeScript estrito — ativado em todo lugar.
anyinjustificado,as unknown as,@ts-ignoree asserções não nulas são proibidos. Fronteiras de sistema usamunknowne validação explícita. - Somente ESM — todos os aplicativos e pacotes usam módulos ES.
Backend
- Fastify 5 — o framework de API. Cada módulo do backend é um plugin Fastify isolado.
- TypeBox + Fastify Type Provider — cada entrada e saída de API tem um JSON
Schema, gerado de
@neotavern/contracts. - SSE — a geração em streaming roda sobre Server-Sent Events. WebSocket fica reservado para canais bidirecionais reais.
- AbortSignal — toda operação longa aceita um
AbortSignale expira limpo quando o cliente desconecta.
Frontend
- React 19 — um aplicativo de página única, sem renderização no servidor.
- Vite 8 — o bundler e servidor de desenvolvimento. O Vite é apenas ferramenta de build, não uma API de plugin de aplicativo.
- React Router — roteamento, com um único workspace de chat e superfícies do sistema renderizadas sobre ele.
- TanStack Query — o único store para estado do servidor.
- Zustand — apenas estado transitório de interface: o painel ativo, preferências de tema e idioma, o personagem fixado e rascunhos limitados à sessão.
- Radix Primitives — componentes headless acessíveis envolvidos por
@neotavern/ui.
Dados
- SQLite via better-sqlite3 — o único arquivo de banco de dados, aberto com
WAL,
foreign_keys = ON,busy_timeoute instruções preparadas. - Drizzle ORM — esquema tipado, repositórios e migrações.
- FTS5 — pesquisa de texto completo sobre personagens, chats e mensagens.
Estilo
- CSS Modules + custom properties + camadas em cascata + container queries — o kit de ferramentas de estilo. Temas sobrescrevem tokens de design e regras de camada sem brigar com especificidade.
Templates e Localização
- Handlebars — modelos de formato de instrução, renderizados em um ambiente com sandbox sem acesso a sistema de arquivos ou execução de código.
- i18next — todas as strings voltadas ao usuário, com namespaces e recursos por localidade.
Desktop
- Tauri 2 — o shell de desktop, com o servidor Node.js distribuído como binário sidecar autocontido.
- tauri-plugin-shell e tauri-plugin-updater — gerenciamento de processos e atualizações assinadas.
Ferramentas
- pnpm workspaces — o gerenciador de pacotes do monorepo.
- Vitest — testes unitários e de integração.
- Playwright — testes de ponta a ponta, incluindo smoke tests do shell de desktop.
O Que Está Deliberadamente Ausente
- Sem PostgreSQL, Redis, Docker ou qualquer outro serviço que você precise instalar ou executar.
- Sem SSR ou servidor Node para o frontend além do processo de API.
- Sem
node:vmcomo sandbox de segurança para plugins — plugins de backend não confiáveis rodam em um processo restrito separado.
Veja Visão Geral do Monorepo para entender como as peças se encaixam e Pacotes para saber quem é dono do quê.