Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
a4ce490
Atualizar o package.json
joaovjo Apr 25, 2026
d5f01ac
feat(auth): implement flash data lifecycle in session
google-labs-jules[bot] Apr 25, 2026
73439d9
chore: add package-specific AGENTS.md files for isolated agent workflows
google-labs-jules[bot] Apr 25, 2026
33dc662
⚡ Optimize sequential relation loading in Collection
google-labs-jules[bot] Apr 25, 2026
a7ff81e
fix: ORM IN syntax, timingSafeEqual, Math.random usage and unprocessa…
google-labs-jules[bot] Apr 25, 2026
f87d9b3
Merge pull request #2 from joaovjo/chore/create-agent-md-files-430550…
joaovjo Apr 25, 2026
e1046e5
Merge pull request #1 from joaovjo/feat-implement-flash-logic-1530211…
joaovjo Apr 25, 2026
d722b2e
Merge pull request #3 from joaovjo/optimize-relation-loading-13844510…
joaovjo Apr 25, 2026
b253c2f
Merge pull request #4 from joaovjo/fix-security-and-packages-55637332…
joaovjo Apr 25, 2026
70c4ee3
Merge pull request #5 from joaovjo/joaovjo-patch-1
joaovjo Apr 25, 2026
51e085c
refactor: reorganize WSRoom class properties and methods for clarity
joaovjo Apr 26, 2026
e1e7121
Merge pull request #6 from joaovjo/feat/update-dependencies
joaovjo Apr 26, 2026
70272dd
feat: integrate all packages into framework entry point
joaovjo May 1, 2026
3c22203
docs: add sprint 1 plan, progress, and ADRs
joaovjo May 1, 2026
c756375
feat: module.jsonc manifesto + file-based routing
joaovjo May 1, 2026
42a3f33
feat: complete boot loop + nino CLI v0.3
joaovjo May 1, 2026
c1d9d15
refactor: reorganize test suite structure into feature and unit direc…
joaovjo May 2, 2026
a49df34
wip
joaovjo May 5, 2026
aabbaf2
refactor: standardize formatting and improve code readability across …
joaovjo May 5, 2026
f60acdd
refactor: remove unused TypeScript configuration and documentation se…
joaovjo May 5, 2026
dc546a4
feat: add visibility and MIME type methods to local adapter, enhance …
joaovjo May 6, 2026
21ae35d
refactor: Apply STYLEGUIDE formatting to Application.ts (Phase 1, Wee…
joaovjo May 6, 2026
006110b
chore: update TypeScript configuration and scripts
joaovjo May 6, 2026
1ab2379
chore: update TypeScript configuration and scripts for improved consi…
joaovjo May 7, 2026
a898d20
feat: configure build system with package exports, sub-package entry …
joaovjo May 9, 2026
7719d2d
wip
joaovjo May 9, 2026
732062e
chore: bump version to 0.3.0 for sprint 1 release
joaovjo May 10, 2026
ecbc25f
feat: bootstrap core framework packages including ORM, authentication…
joaovjo May 10, 2026
c31b6f2
chore: update CodeRabbit configuration to enable more assertive revie…
joaovjo May 10, 2026
6d0b2da
chore: relax commitlint rules to warnings to unblock CI
joaovjo May 10, 2026
010aa4a
fix: resolve upstream review blockers
joaovjo May 11, 2026
6cf5e0e
fix(auth): preserve argon parallelism config
joaovjo May 11, 2026
bd8de74
fix: address stacked PR review feedback
joaovjo May 11, 2026
a46c42a
fix: enable review status and disable drafts in CodeRabbit configuration
joaovjo May 11, 2026
5dd5d88
Merge pull request #7 from joaovjo/feature/styleguide-followup
joaovjo May 11, 2026
eee80a6
fix: harden CLI and auth publish paths
joaovjo May 11, 2026
3b2bdd6
Merge branch 'feature/sprint-1' of https://github.com/joaovjo/ninots-…
joaovjo May 11, 2026
49ae794
chore: fix git merge markers
joaovjo May 12, 2026
2cc320a
ci: detect git conflict markers
joaovjo May 12, 2026
b5f3400
docs(repairs): add conflict marker triage notes
joaovjo May 12, 2026
444bfeb
docs(repairs): add triage TODO and notes
joaovjo May 12, 2026
e4bcc33
fix(repairs): resolve merge conflict markers preferring HEAD (securit…
joaovjo May 12, 2026
a70c917
fix(encryption): remove duplicate hash/conflict remnants
joaovjo May 12, 2026
253ce9e
fix(repairs): remove obsolete merge conflict markers and related docu…
joaovjo May 12, 2026
93b2112
fix(lint): resolve framework Biome backlog
joaovjo May 12, 2026
3ea1c10
fix(markers): restore typed marker scripts
joaovjo May 12, 2026
1ad4890
fix(markers): remove obsolete conflict marker scripts
joaovjo May 12, 2026
f8f76ca
Merge pull request #8 from joaovjo/fix/git-marker-cleanup
joaovjo May 12, 2026
9e95029
chore: release main
github-actions[bot] May 12, 2026
525afa3
Merge pull request #9 from joaovjo/release-please--branches--main
joaovjo May 12, 2026
0ae4ecf
fix(workflows): remove obsolete conflict markers check workflow
joaovjo May 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 7 additions & 9 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,27 @@ language: "en"
early_access: false

reviews:
profile: "chill"
profile: "assertive"
request_changes_workflow: false
high_level_summary: true
poem: false
review_status: false
review_status: true
collapse_walkthrough: true
estimate_code_review_effort: false
sequence_diagrams: false
sequence_diagrams: true
changed_files_summary: false
commit_status: true

auto_apply_labels: true
auto_review:
enabled: true
drafts: false

finishing_touches:
docstrings:
enabled: false
enabled: true
unit_tests:
enabled: false

enabled: true
suggested_labels: true

chat:
auto_reply: false
auto_reply: true
art: false
52 changes: 34 additions & 18 deletions .commitlintrc.mjs
Original file line number Diff line number Diff line change
@@ -1,19 +1,35 @@
export default {
rules: {
'body-leading-blank': [1, 'always'],
'body-max-line-length': [2, 'always', 100],
'footer-leading-blank': [1, 'always'],
'footer-max-line-length': [2, 'always', 100],
'header-max-length': [2, 'always', 100],
'subject-case': [2, 'never', ['sentence-case', 'start-case', 'pascal-case', 'upper-case']],
'subject-empty': [2, 'never'],
'subject-full-stop': [2, 'never', '.'],
'type-case': [2, 'always', 'lower-case'],
'type-empty': [2, 'never'],
'type-enum': [
2,
'always',
['build', 'chore', 'ci', 'docs', 'feat', 'fix', 'perf', 'refactor', 'revert', 'style', 'test'],
],
},
};
rules: {
"body-leading-blank": [1, "always"],
"body-max-line-length": [1, "always", 100],
"footer-leading-blank": [1, "always"],
"footer-max-line-length": [1, "always", 100],
"header-max-length": [1, "always", 100],
"subject-case": [
1,
"never",
["sentence-case", "start-case", "pascal-case", "upper-case"],
],
"subject-empty": [1, "never"],
"subject-full-stop": [1, "never", "."],
"type-case": [1, "always", "lower-case"],
"type-empty": [1, "never"],
"type-enum": [
1,
"always",
[
"build",
"chore",
"ci",
"docs",
"feat",
"fix",
"perf",
"refactor",
"revert",
"style",
"test",
],
],
},
};
43 changes: 43 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
## PR Description

<!-- Describe what this PR does and why -->

## Changes Made

- [ ] Feature added
- [ ] Bug fixed
- [ ] Documentation updated
- [ ] Code refactored
- [ ] Dependencies updated

## ✅ Framework Compliance Checklist

- [ ] Code passes `bun run check:framework:style`
- [ ] No new STYLEGUIDE violations introduced (legacy violations listed below if present)
- [ ] Tests updated for logic changes
- [ ] No use of console.log (use logging system)
- [ ] TypeDoc comments on public APIs
- [ ] Filenames follow kebab-case convention
- [ ] No `any` types without `// biome-ignore` justification

## Known Violations (Phase 1-2 Legacy, Optional to Fix)

- [ ] None
- [ ] Listed below:

<!--
If there are known violations being left unfixed in this PR, list them here with justification.
Example: "HAS-001: forEach in utils/helpers.ts - Will fix in Phase 2"
-->

## Testing

<!-- Describe tests added or updated -->

## Related Issues

<!-- Link related issues: Closes #123 -->

## Additional Notes

<!-- Any additional context or information -->
4 changes: 2 additions & 2 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.2.0"
}
".": "0.4.0"
}
6 changes: 6 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"editor.codeActionsOnSave": {
"source.action.useSortedKeys.biome": "explicit",
"source.fixAll.biome": "explicit"
}
}
131 changes: 131 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

28 changes: 28 additions & 0 deletions CONTEXT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
- "nino.ts", "ninots", "ninoTS" é um projeto de código fonte aberto https://github.com/nino-ts
- Pertence a "pandowLABS" https://github.com/pandowlabs
- Criado por mim: https://github.com/joaovjo
- Atualmente desenvolvido por mim João Vitor de Jesus Oliveira (https://joaovjo.com.br, https://github.com/joaovjo) e pelo Victor Geruso (https://geruso.com, https://github.com/vgeruso)
- "ninoTS" é escrito em TypeScript e Bun native, inicialmente sem suporte a outros runtimes
- "ninoTS" não possui dependências externas, seu código é escrito inteiro do zero, usando APENAS as APIs nativas do Bun
- "ninoTS" não reescreve a roda, se um recurso já existe no Bun, ele usa esse recurso e às vezes faz um wrapper para simplificar a utilização
- "ninoTS" é um framework fullstack baseado na Developer Experience do Laravel e do Next.js, tentando absorver ao máximo os benefícios de ambos ecossistemas, mas NÃO POSSUI compatibilidade com ambos
- No GitHub nino-ts é a organização, nino-ts/framework é o meta-package e nino-ts/ninots é o starter kit, ou seja, o template de projeto para começar a usar o framework
- O framework é um monorepo, ou seja, tem vários pacotes dentro do mesmo repositório, cada um com sua função específica, como por exemplo: nino-ts/foundation, nino-ts/http, nino-ts/router, nino-ts/orm, etc
- O framework é modular, ou seja, cada pacote pode ser usado de forma independente, sem precisar instalar o framework inteiro, por exemplo, você pode usar apenas o nino-ts/http para criar um servidor HTTP, ou apenas o nino-ts/orm para usar o ORM, etc
- O ninots segue essa separação entre o starter kit e o framework baseando-se no mesmo formato do Laravel: https://github.com/laravel/laravel é o starter kit do Laravel, enquanto o https://github.com/laravel/framework é o framework base, ou seja, a implementação dos recursos do Laravel
- No ninots, o código do framework é importado como uma dependência, ou seja, você instala o nino-ts/framework e importa os recursos que precisa, por exemplo: import { createServer } from 'nino-ts/framework/http'
- O framework possui um src que é onde está a "cola" do framework, ou seja, a implementação dos recursos dos pacotes internos já que nenhum pacote interno importa outro pacote interno, ou seja, o nino-ts/http não importa o nino-ts/foundation, o nino-ts/orm não importa o nino-ts/router, etc, isso para evitar dependências cíclicas e manter a modularidade do framework
- O framework é escrito em TypeScript estrito e tem uma tipagem forte, ou seja, todas as funções, classes, interfaces, etc, possuem tipos definidos e o código é verificado pelo TypeScript para garantir a segurança de tipos
- O framework é testado usando o Bun test runner, ou seja, os testes são escritos usando a API de testes do Bun e são executados usando o comando bun test, garantindo que o código esteja funcionando corretamente e que as mudanças não quebrem funcionalidades existentes
- TDD é a abordagem de desenvolvimento utilizada no framework, ou seja, os testes são escritos antes do código de implementação, garantindo que o código seja testável e que as funcionalidades sejam implementadas de forma correta desde o início
- O framework é documentado usando o TypeDoc, ou seja, a documentação é gerada a partir dos comentários de código usando a sintaxe do TSDoc, garantindo que a documentação esteja sempre atualizada e que os usuários possam entender como usar os recursos do framework de forma fácil e rápida
- O framework é licenciado sob a licença MIT, ou seja, é um software de código aberto que pode ser usado, modificado e distribuído por qualquer pessoa, desde que a licença seja incluída em todas as cópias ou partes substanciais do software
- O framework é mantido por uma comunidade de desenvolvedores, ou seja, qualquer pessoa pode contribuir para o desenvolvimento do framework, seja corrigindo bugs, implementando novos recursos, escrevendo testes, melhorando a documentação, etc, e as contribuições são revisadas e aceitas pela equipe de manutenção do framework para garantir a qualidade do código e a consistência do projeto
- O framework é atualizado regularmente, ou seja, novas versões são lançadas com correções de bugs, melhorias de desempenho, novos recursos, etc, garantindo que o framework esteja sempre evoluindo e atendendo às necessidades dos usuários e da comunidade de desenvolvedores
- O framework é focado em ser leve e rápido, ou seja, o código é otimimizado para ter um desempenho excelente, utilizando as melhores práticas de desenvolvimento e as APIs nativas do Bun para garantir que as aplicações construídas com o framework sejam rápidas e eficientes, mesmo em cenários de alta carga e tráfego intenso
- O framework é projetado para ser fácil de usar e aprender, ou seja, a API do framework é intuitiva e consistente, seguindo as melhores práticas de design de APIs e a Developer Experience do Laravel e do Next.js, garantindo que os desenvolvedores possam começar a usar o framework rapidamente e sem dificuldades, mesmo que sejam iniciantes em desenvolvimento web ou em TypeScript
- O framework é flexível e personalizável, ou seja, os desenvolvedores podem configurar e estender o framework de acordo com suas necessidades, seja adicionando novos recursos, modificando o comportamento padrão, ou integrando com outras bibliotecas e ferramentas, garantindo que o framework possa ser adaptado para atender às necessidades específicas de cada projeto e equipe de desenvolvimento
- O framework é seguro, ou seja, possui recursos e práticas de segurança integrados para proteger as aplicações construídas com ele contra vulnerabilidades comuns, como injeção de SQL, cross-site scripting (XSS), cross-site request forgery (CSRF), etc, garantindo que as aplicações sejam protegidas contra ataques e que os dados dos usuários estejam seguros
- O framework é escalável, ou seja, pode ser usado para construir aplicações de qualquer tamanho e complexidade, desde pequenos projetos pessoais até grandes aplicações empresariais, garantindo que o framework possa crescer junto com as necessidades dos desenvolvedores e das equipes de desenvolvimento, e que possa ser usado para construir aplicações robustas e de alta qualidade em qualquer cenário
- O ninots segue uma arquitetura híbrida modular, os modulos da aplicação podem ser escritos uma única vez e copiados para outros projetos, ou seja, os modulos não possuem dependências entre si, garantindo que eles possam ser reutilizados em outros projetos sem precisar de ajustes ou modificações, e que possam ser compartilhados entre equipes de desenvolvimento para acelerar o processo de desenvolvimento e promover a colaboração entre desenvolvedores
- Guia de Estilos usados no projeto: https://google.github.io/styleguide/tsguide.html e https://ts.dev/style/
15 changes: 14 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,19 @@ See [ORM Documentation](./packages/orm/README.md) for full details.

MIT

## Code Standards

All code in this framework follows **STYLEGUIDE v1.0.0** and serves as the reference implementation for ninoTS.

### Before Contributing

- 📖 Read the [STYLEGUIDE](./STYLEGUIDE.md) (sections 4-6 for syntax and type rules)
- ✅ Review the [Contributor Checklist](./CONTRIBUTOR-CHECKLIST.md) before submitting PRs
- 🔍 Run `bun run check:framework:style` to verify compliance
- 🛠️ Use `bun run check:framework:style:write` to auto-fix violations

Key rules: arrow functions only, map/filter/reduce (no forEach), explicit types, 4-space indentation, 120-char lines, double quotes, kebab-case filenames.

## Contributing

Contributions are welcome! Please follow the project's coding standards defined in `GEMINI.md`.
Contributions are welcome! Please follow the framework's code standards (see [Code Standards](#code-standards) section above) and use the [Contributor Checklist](./CONTRIBUTOR-CHECKLIST.md) before submitting a pull request.
35 changes: 35 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# ninoTS Framework Roadmap

> ninoTS is a zero-dependency, high-performance web framework optimized for the Bun runtime.

## v0.3 — Foundation & Routing (Current Sprint)

- [ ] Integrar todos os 18 pacotes core no entry point
- [ ] Remoção da API legacy de validação
- [ ] Implementação de file-based routing via `Bun.FileSystemRouter`
- [ ] Boot loop completo utilizando `Bun.serve()`
- [ ] Scaffold CLI via Bun Shell (`nino dev`, `nino build`, `nino start`)
- [ ] Manifesto de módulo via `module.jsonc`
- [ ] Isolamento estrito de dependências modulares (Biome)
- [ ] `ROADMAP.md` e ADRs estabelecidos

## v0.5 — Ecosystem & DX

- [ ] Generators CLI avançados (`nino make:module`, `nino make:model`, `nino make:route`)
- [ ] CSRF middleware via `Bun.CSRF` nativo
- [ ] ORM engine completa usando `Bun.sql` com tagged templates
- [ ] Senhas com `Bun.password` e Hashing via `Bun.CryptoHasher`
- [ ] Wide Events logging implementados no pacote Logger
- [ ] Registro tipado de rotas (tRPC-like) gerado via `Bun.build` em build-time
- [ ] Suporte a WebSockets estruturados com fallback
- [ ] Starter kit com Docker e docker-compose.yml

## v1.0 — Production Ready

- [ ] Cache e Sessions robustas distribuídas
- [ ] Middleware stack avançada e configurável
- [ ] E2E Testing via `Bun.WebView` nativo
- [ ] Autenticação extensível com provedores OAuth integrados
- [ ] Documentação completa (site e API reference)
- [ ] Estabilização e benchmarks
- [ ] Auditoria de Segurança
Loading