Pitch: Nitrogen: trazendo conceitos de ORM para planilhas.
Pessoal, bom dia! Me chamo Abdiel e sou um entusiasta da programação e tecnologia há mais de 6 anos. Hoje eu gostaria de compartilhar um projeto que estou desenvolvendo e saber a opinião de vocês sobre ele. Dessa vez eu realmente gostaria de algumas dicas.
Porém, antes de falar sobre o projeto em si, eu preciso falar primeiro sobre as minhas motivações e dar um contexto para que vocês entendam melhor depois. Então peço apenas um pouco de paciência ao ler esse texto todo aí embaixo.
Contexto
Pois bem, vou dar um pouco de contexto primeiro: Neste exato momento tenho 20 anos de idade. Comecei a construir minha formação desde o ensino médio na área da indústria, especificamente em elétrica. Basicamente, já terminei a minha faculdade de ciência de dados também e agora quero começar a migrar para o mercado de dados.
Eu também sempre fui muito dedicado às atividades na igreja da qual faço parte. Atualmente, estou atuando como professor no IBUC, um projeto de ensino bíblico voltado para crianças e adolescentes. Existem núcleos espalhados por todo o Brasil e um deles está na minha igreja.
Acontece que todo o processo de administração e controle de recursos e dados no núcleo IBUC da minha igreja é meio arcaico. O pessoal de lá também é meio cru em tecnologia. Com o passar do tempo, eu comecei a ver algumas dificuldades na aplicação desse projeto que poderiam ser resolvidas com um sistema mais sólido de controle de dados, o que facilitaria muitas coisas.
Dessa forma, eu criei algumas planilhas do Google Sheets para me ajudar a realizar o controle de dados da minha turma e automatizar tarefas que seriam difíceis de realizar dentro da programação estabelecida pelo protocolo do IBUC nas nossas aulas, que por sinal é bastante corrida. Passei a organizar meus materiais de aula de forma virtual também.
Até um certo ponto, isso tudo deu certo e realmente me ajudou bastante. Porém, com o passar do tempo, esse pequeno sistema de planilhas começou a crescer e eu precisava automatizar cálculos e algumas regras de negócio que surgiram eventualmente. A princípio, consegui resolver o problema das automações com Apps Script, mas eu senti a necessidade de ter uma estrutura de organização ainda melhor, talvez até uma API separada que pudesse ser integrada com as minhas planilhas.
Sobre o projeto
Finalmente posso falar do projeto! Dado todo esse contexto aí em cima, eu tive a brilhante ideia de criar um projeto que eu resolvi chamar de Nitrogen. A proposta é simples: permitir que planilhas sejam definidas como código, de forma semelhante ao que ORMs fazem para bancos de dados.
Em vez de manipular células diretamente, seria possível declarar estruturas como:
import nitrogen.core as nt
class Product(nt.Sheet):
quantity = nt.Column(int)
price = nt.Column(float)
total = nt.Formula(quantity * price)
A partir dessa definição, o framework seria responsável por gerar e sincronizar a estrutura para diferentes backends, como Excel e Google Sheets. Além disso, o projeto pretende introduzir conceitos pouco comuns no ecossistema de planilhas:
- Modelagem declarativa de worksheets.
- Fórmulas definidas como código.
- Grafo de dependências entre cálculos.
- Migrações e versionamento de estruturas.
Penso que isso pode ser útil para escolas, igrejas, pequenos negócios, equipes administrativas e qualquer cenário onde planilhas acabam se tornando sistemas de informação.
Como eu criei esse projeto recentemente, ainda está em uma fase bem experimental. Se quiserem dar uma olhada no repositório, vou deixar o link logo abaixo: