Backend
A estrutura de backend do Nerdify é construída sobre o sólido e consagrado framework Ruby on Rails, que fornece a base para toda a lógica de autenticação, autorização, roteamento e controle de requisições. Todo o ecossistema Nerdify se apoia em uma API RESTful organizada, estruturada e baseada em boas práticas da comunidade Rails.
💎 Ruby on Rails
Ruby on Rails é um framework web completo, opinativo e produtivo, criado para tornar o desenvolvimento de aplicações web elegante e sustentável. Ele promove o uso de convenções, evita repetições e facilita a criação de aplicações robustas.
Para quem deseja se aprofundar:
O Nerdify utiliza o Rails para montar uma estrutura de API-only, focada em performance e integração com frontend desacoplado.
🌐 API Restful
No Nerdify, o backend é estruturado como uma API RESTful. Isso significa que os recursos são representados por URLs e manipulados por métodos HTTP padronizados (GET, POST, PUT, DELETE).
Essa organização garante previsibilidade, escalabilidade e compatibilidade com qualquer cliente — especialmente o frontend do próprio Nerdify.
Cada rota está associada a um controlador responsável por responder com JSON estruturado conforme o padrão Nerdify, interpretado automaticamente no frontend.
🔐 Autenticação e Autorização
A autenticação no Nerdify utiliza tokens JWT renováveis, com a gem devise_token_auth. Cada requisição autenticada exige o envio dos headers:
access-token: <token>
client: <identificador>
uid: <email ou id>
Os tokens são renovados a cada requisição e o frontend já lida com esse processo automaticamente.
A autorização de acesso às funcionalidades da API é feita com o padrão Ability, utilizando a gem cancancan. Cada controlador respeita as permissões definidas na classe Ability, como por exemplo:
can :manage, Cliente, empresa_id: user.empresa_id
Essa arquitetura garante segurança e controle fino sobre as ações disponíveis por perfil, grupo ou contexto do usuário.
📤 Formato de requisição: GET e POST
O Nerdify utiliza um padrão aninhado para passagem de parâmetros em requisições HTTP.
GET
Consultas utilizam o padrão:
?filters[search]=joao&page=1
O backend acessa os parâmetros da seguinte forma:
params[:filters][:search]
params[:page] # => 1
O Nerdify usa essas informações automaticamente para realizar buscas, paginação e filtros.
POST
Envio de dados para criação ou atualização segue o mesmo padrão de estrutura:
{
"customer": {
"nome": "João",
"email": "joao@exemplo.com"
}
}
No backend:
params[:customer][:nome] # => "João"
Esse padrão facilita o parsing e permite o uso natural de strong_parameters no Rails.
🛠️ O frontend do Nerdify já envia tudo nesse padrão automaticamente. O backend também recebe e trata isso automaticamente seguindo estas convenções. Esta explicação serve para entender como os dados são enviados e chegam ao backend. Mas tudo isso é abstraído e o desenvolvedor não precisa se preocupar com isso em 99% das vezes.
PUT, DELETE
- ✏️ Atualizações devem ser feitas com
PUT. - 🗑️ Exclusões com
DELETE, utilizando a rota do recurso com o:idcorrespondente.
PUT /clientes/42
DELETE /clientes/42
📦 Formato de resposta com componentes
A resposta padrão do Nerdify é estruturada em torno do método page_json do controlador, que retorna:
{
"name": "action",
"options": {...},
"components": [...],
"resources": {
"customer": {"name": "João", ...},
"addresses": [...]
},
"translated": {...}
}
name: nome da action retornadaoptions: opções da página (layout, controller, filters, etc)components: estrutura visual da página (cards, tabelas, formulários, etc)resources: dados utilizados nos componentestranslated: traduções dos textos dinâmicos dos componentes
Essa resposta completa permite que o frontend monte toda a interface dinamicamente, sem nenhum HTML ou template adicional.
📄 Formato de resposta sem componentes
Caso o frontend deseje apenas os dados, é possível enviar o parâmetro:
?only_resources=true
E a resposta será enxuta, apenas com os dados, sem componentes, opções e traduções:
{
"name": "João",
"id": ...
}
Essa funcionalidade é últil para requisições de background, consumo interno de dados ou componentes que apenas precisam de resources sem remontar a interface. Ou para disponibilizar o acesso de recursos específicos do backend para serem acessados por aplicações e APIs externas que precisam se integrar ao seu sistema.
Com essa arquitetura, o backend do Nerdify é eficiente, padronizado, seguro e automatizado. O desenvolvedor pode focar no que importa: modelos, regras de negócio e integrações reais — o Nerdify cuida do resto.