Executando verificação de segurança...
6

Estou tentando resolver um problema pessoal (que talvez voce tambem tenha) - Preciso de feedback

Recentemente decidi criar uma biblioteca open-source — tanto para exercitar a mente quanto para tentar agregar algo à comunidade. No começo, eu não tinha muita certeza do que desenvolver, então acabei optando por criar uma ferramenta de scaffolding.

O CRUDius é uma aplicação CLI que permite gerar uma API REST a partir de um arquivo JSON. Com isso, você já começa com um backend funcional, incluindo endpoints, relacionamento entre tabelas e conexão com o banco de dados previamente configurados.

Você pode estar pensando: “Tá, mas por que isso seria útil pra mim?”
E a resposta honesta é: talvez não seja, dependendo do seu contexto.

A ideia principal do CRUDius é agilizar a criação de MVPs. Se você tem uma ideia e não quer perder tempo copiando e colando código repetitivo para montar toda a base do projeto, o CRUDius gera essa estrutura inicial para você. Assim, você pode focar diretamente nas regras de negócio, que é onde o valor do produto realmente está.

Outro ponto importante é que o código gerado não segue a lógica de “vibe coding”. A proposta é entregar um código legível, organizado e fácil de entender, permitindo total liberdade para adaptar e modificar conforme o seu caso de uso.

Abaixo está um exemplo simples de um arquivo JSON com duas entidades (User e Post) e um relacionamento entre elas:

{
  "generationConfigs": [
    {
      "entityName": "User",
      "properties": [
        { "field": "id", "type": "number", "primary": true },
        { "field": "name", "type": "string", "searchable": true },
        { "field": "email", "type": "string", "unique": true }
      ]
    },
    {
      "entityName": "Post",
      "properties": [
        { "field": "id", "type": "number", "primary": true },
        { "field": "title", "type": "string", "searchable": true },
        { "field": "content", "type": "string" }
      ],
      "relations": [
        {
          "type": "many-to-one",
          "target": "User",
          "foreignKey": "user_id"
        }
      ]
    }
  ]
}

Com esse único arquivo, o CRUDius consegue gerar:

As tabelas users e posts
O relacionamento entre elas
Endpoints CRUD completos
Estrutura base de controllers, providers/services e conexão com o banco

A partir disso, o desenvolvedor só precisa evoluir as regras de negócio conforme a necessidade do projeto.

O projeto ainda está em evolução, e feedbacks, críticas e contribuições são mais do que bem-vindos.

link do projeto:https://github.com/pedrovjesus/CRUDius

Carregando publicação patrocinada...
4

Se você usar:
```json
{
"entityName": "User",
"properties": [
{ "field": "id", "type": "number", "primary": true },
{ "field": "name", "type": "string", "searchable": true },
{ "field": "email", "type": "string", "unique": true }
]
}
```

O seu código fica colorido assim:

{
    "entityName": "User",
    "properties": [
        { "field": "id", "type": "number", "primary": true },
        { "field": "name", "type": "string", "searchable": true },
        { "field": "email", "type": "string", "unique": true }
    ]
}

A sintaxe é:
Três crases seguido do nome da linguagem.
Depois seu código.
Depois 'fecha' com outras três crase.

Crase é o acento pro outro lado (do lado da tecla P)

O nome da linguagem é opcional.

exemplo:
```javascript
console.log(x);
```

4

Muito obrigado, eu ainda sou novo no tab, to aprendendo os comandos, você é fera demais, nos proximos consigo fazer agora do jeito certo rsrs

3
1

Voce pode descrever o "contrato" da sua API usando OpenAPI e pedir para a IA gerar sua api a partir do seu contrato. Só especificar no prompt qual linguagem, framework e banco de dados que voce quer usar.

Pra facilitar pode usar o Swagger Editor ou plugin da sua IDE.

OBS: Pode usar a IA para te ajudar a gerar o contrato também.

1

Atualmente a biblioteca funciona no modelo code-first: o contrato acaba sendo gerado a partir do próprio código, usando o Swagger para mapear rotas e tipos (em /docs).

Mas você trouxe um ponto bem interessante.Irei dar uma estudada em uma abordagem contract-first, onde seja possível expor apenas o contrato OpenAPI, sem necessariamente precisar disponibilizar o código junto. Acho que isso pode fazer bastante sentido em alguns cenários.

Ainda tem bastante coisa que quero implementar na biblioteca, como:

  • geração automática de login/logout usando JWT;
  • validação nos controllers com Yup;
  • e outras melhorias que venham a facilitar o uso no dia a dia.

Mas se no caso o contrato for referente a biblioteca, isso preciso ver como posso fazer, visto que o fluxo de entrada dela é bem simples.

Estou aberto a ideias, sugestões e também a PRs