ProjetosProjects

Coisas que fiz, faço e ainda quero fazer. Algumas surgiram por necessidade, outras por curiosidade, e algumas vieram da faculdade ou do trabalho. Boa parte delas eu uso hoje, e outras acabaram sendo úteis para mais pessoas também. Things I have made, still make, and still want to make. Some came out of necessity, others out of curiosity, and some came from university or work. I use most of them today, and others turned out to be useful to more people too.

01privadoprivate

Norte

aplicativo de finanças pessoaispersonal finance app

Criei o Norte porque queria saber quanto do meu dinheiro está realmente livre para gastar, e não só quanto tenho na conta. Ele junta movimentações, fatura e gastos futuros para chegar nesse valor. Hoje sincroniza com meu banco e é o sistema que uso diariamente para organizar meu dinheiro.I created Norte because I wanted to know how much of my money is actually free to spend, not just how much is in the account. It combines transactions, the card statement and future expenses to reach that number. Today it syncs with my bank and is the system I use every day to organize my money.

  • Sincroniza conta e cartão pelo Open Finance, e também importa CSV e OFX.Syncs account and card through Brazilian Open Finance, and also imports CSV and OFX.
  • Trabalha pelo ciclo da fatura, não pelo mês do calendário.Works by the billing cycle, not by the calendar month.
  • Calcula quanto ainda sobra de verdade, contando o que ainda vou pagar no ciclo.Works out how much is actually left, counting what I still have to pay in the cycle.
  • Previsão de 60 dias, assinaturas reconhecidas no histórico e retrospectiva mês a mês.A 60-day forecast, subscriptions spotted in the history and a month-by-month retrospective.
estadostatus
Em uso pessoal, sem distribuição previstaIn personal use, with no distribution planned
papelrole
Projeto e implementaçãoDesign and implementation

Não se preocupe com os valores, as telas usam dados fictícios.Don't worry about the values, the screens use made-up data.

Como ele surgiuHow it startedfecharclose

Sempre gostei de organizar meus gastos, primeiro com anotações em cadernos e depois com planilhas no Excel. De toda maneira, quanto mais os gastos evoluíam, mais evidente ficava a necessidade de organizar tudo isso.I always liked keeping track of my spending, first with notes in notebooks and later with spreadsheets in Excel. Either way, the more my spending grew, the more obvious the need to organize all of it became.

Primeiro comecei a utilizar apps que já entregam isso “pronto”, mas efetivamente não achava que eles supriam o que eu queria de verdade. Por isso, quando comecei a entender mais de programação, decidi desenvolver o meu próprio aplicativo para entender melhor como funciona e para fazer algo mais específico para mim.I first started using apps that already deliver this “ready-made”, but I never really felt they gave me what I actually wanted. So when I started understanding more about programming, I decided to build my own app, both to understand how it works and to make something more specific to me.

O principal motivo que me levou a querer fazer o app foi responder uma pergunta bem simples, “quanto do meu dinheiro eu posso gastar agora?”The main reason that made me want to build the app was to answer a pretty simple question, “how much of my money can I spend right now?”

Você pode argumentar que basta ver o saldo, mas ele não mostra de verdade o quanto tenho disponível naquele momento. Se eu tiver R$ 500 de saldo, mas R$ 300 pendentes para pagar na semana que vem, então tenho efetivamente R$ 200, e eu queria que aparecesse R$ 200, e não R$ 500.You could argue that checking the balance is enough, but it doesn't really show how much I actually have available at that moment. If I have R$ 500 in my balance but R$ 300 due next week, then I effectively have R$ 200, and I wanted the app to show R$ 200, not 500.

A ideia central do app é levar em conta todos os meus gastos, não só o que passou, nem só contando a fatura do cartão que ainda vai vir. Queria algo que levasse em consideração minhas assinaturas programadas, meus Pix fixos para outras pessoas e qualquer outra forma de transferência que não é automaticamente contada no cartão.The app's core idea is to take all of my expenses into account, not just what has already happened, nor just counting the card statement that is still coming. I wanted something that would also consider my scheduled subscriptions, my recurring Pix transfers to other people and any other kind of transfer that isn't automatically counted on the card.

A ideia do nome veio do conceito de estar perdido financeiramente, e quem está perdido busca um norte. Já a logo e a identidade do app vêm da estrela Polaris e da constelação responsável por guiar os marinheiros antigamente.The name came from the idea of being financially lost, and whoever is lost looks for a north. The logo and the app's identity, in turn, come from the Polaris star and the constellation once responsible for guiding sailors.

Hoje dou uma olhada nele literalmente todos os dias. Realmente foi bem útil para mim.Today I literally check it every single day. It has genuinely been really useful for me.

Como ele funcionaHow it worksfecharclose

O app trabalha com o ciclo da fatura, podendo editar o dia de fechamento e pagamento. Considera todos os gastos antigos, presentes e corriqueiros, e tenta identificar assinaturas automaticamente, mas também é possível cadastrá-las.The app works around the billing cycle, and I can edit the closing and payment dates. It takes into account all past, present and recurring expenses, and it tries to automatically recognize subscriptions, though I can also register them by hand.

As movimentações que entram são classificadas por regras fixas, e caso não se enquadrem, a API do Gemini as classifica dentro das categorias disponíveis. Caso ela erre, posso corrigir, e ela lembrará disso futuramente.Incoming transactions are classified by fixed rules, and when none of them fit, the Gemini API classifies them into the available categories. If it gets one wrong, I can correct it, and it will remember that going forward.

Depois de classificados, os dados entram efetivamente no cálculo do saldo e do disponível atual.Once classified, the data actually goes into the balance and current available amount calculations.

Diariamente, os dados são sincronizados automaticamente.Every day, the data is synced automatically.

Além disso, tem seções que inseri depois e que tratam de estatísticas, como a quantidade gasta por categoria, o dia da semana em que mais se gasta e outras assim. Também existe uma seção dedicada à previsão e outra para “dicas” de como deveria gastar e o quanto.There are also sections I added later that deal with statistics, like how much is spent per category, the day of the week with the most spending and a few others like that. There is also a section dedicated to forecasting, and another for “tips” on how and how much I should be spending.

Falando mais tecnicamente, o app é feito em Next.js e TypeScript, com Postgres guardando os dados. A sincronização com o banco e o cartão passa pela Pluggy, que faz a ponte com o Open Finance.Speaking more technically, the app is built with Next.js and TypeScript, with Postgres storing the data. Syncing with the bank and the card goes through Pluggy, which bridges to Open Finance.

Ainda quero podar o visual e a implementação de funções.I still want to trim down the visuals and finish implementing a few features.

02privadoprivate

Organizador pessoalPersonal organizer

aplicativo de organização pessoal (obviamente)personal organization app (obviously)

Começou como um app para controlar minhas faltas e acabou virando um organizador para faculdade, IC e estágio. Ele reúne notas, tarefas, horários, pesquisa e trabalho em um só lugar. A ideia é usar tudo isso para me ajudar a decidir melhor como organizar meu tempo durante a semana.It started as an app to track my absences and ended up becoming an organizer for university, undergraduate research and my internship. It brings together grades, tasks, schedules, research and work in one place. The idea is to use all of that to help me decide better how to organize my time during the week.

  • Tarefas, eventos, Inbox e agenda diária, com lembretes, recorrência, calendário e widgets.Tasks, events, an Inbox and a daily agenda, with reminders, recurrence, a calendar and widgets.
  • Semestres, disciplinas, horários, faltas, frequência, risco, avaliações e notas.Terms, courses, schedules, absences, attendance, risk, assessments and grades.
  • Importação assistida de PDF, imagem com OCR e CSV, sempre revisada antes de aplicar.Assisted import from PDF, images through OCR and CSV, always reviewed before being applied.
  • Estágio com sessões de entrada e saída, pausas, horas do mês e meta.Internship tracking with clock-in and clock-out sessions, breaks, monthly hours and a target.
estadostatus
Em desenvolvimento (principalmente melhorar esse visual seco)In development (mostly making this dry look better)
papelrole
Projeto e implementação integralEntirely designed and implemented by me

Capturas de uma versão beta, não julgue :(Screenshots from a beta version, don't judge :(

Como surgiuHow it startedfecharclose

A ideia começou por um motivo bem específico. Como entrei no curso com algumas matérias já adiantadas, percebi que, em certas disciplinas, eu podia administrar algumas faltas sem prejudicar meu desempenho. Às vezes esse tempo seria mais útil estudando para outra matéria, trabalhando em um projeto, fazendo experimentos da IC ou resolvendo alguma coisa do estágio.The idea started for a pretty specific reason. Since I entered the course with some subjects already advanced, I noticed that, in certain classes, I could manage some absences without hurting my performance. Sometimes that time would be more useful studying for another subject, working on a project, running research experiments or handling something from my internship.

Só que eu não queria fazer isso no improviso. Queria saber exatamente quantas aulas poderia perder, o que tinha pela frente e quando realmente faria sentido usar esse tempo. Então comecei a planejar um aplicativo bem simples para controlar minhas faltas.But I did not want to do that on the fly. I wanted to know exactly how many classes I could miss, what was coming up, and when it would actually make sense to use that time. So I started planning a really simple app to track my absences.

Só que, enquanto fazia isso, percebi que havia outro problema que eu já tinha há algum tempo. Minha organização inteira estava no calendário do celular. Ele funcionava muito bem, principalmente pelos widgets, mas faculdade, trabalho, IC e vida pessoal acabavam todos misturados no mesmo lugar. Eu queria continuar tendo essa praticidade, mas separar melhor cada parte da minha rotina.But while I was doing that, I realized there was another problem I had had for a while. My whole organization lived in my phone's calendar. It worked really well, mostly because of the widgets, but university, work, research and personal life all ended up mixed together in the same place. I wanted to keep that convenience, but separate each part of my routine better.

Foi aí que o pequeno controle de faltas começou a virar um organizador feito especificamente para a forma como eu estudo e trabalho.That is when the small absence tracker started turning into an organizer built specifically for the way I study and work.

Hoje ele já está em uma espécie de beta. As funções principais estão funcionando, e comecei a usá-lo de verdade no dia a dia.Today it is already in a kind of beta. The main features are working, and I have started really using it day to day.

Como funcionaHow it worksfecharclose

A ideia original das faltas continua lá. Para cada disciplina, o aplicativo acompanha minhas faltas e calcula quantos dias ainda posso faltar. Já na parte acadêmica, consigo cadastrar avaliações e definir a nota que quero alcançar em uma matéria. A partir disso, ele calcula quanto preciso tirar nas próximas avaliações, considerando o peso de cada uma. Isso ajuda principalmente naquelas disciplinas em que a nota é dividida entre vários trabalhos e provas com pesos completamente diferentes.The original idea for absences is still there. For each subject, the app tracks my absences and calculates how many days I can still miss. As for the academic side, I can also register assessments and set the grade I want to reach in a subject. From that, it calculates how much I need to score on the next assessments, taking the weight of each one into account. That helps mostly in subjects where the grade is split across several assignments and tests with completely different weights.

Ele também monta uma grade que não considera só as aulas. Ela coloca no mesmo planejamento as disciplinas, o estágio e a IC, porque, na prática, são essas coisas que disputam meu tempo durante a semana.It also puts together a schedule that does not consider only classes. It places subjects, my internship and my research on the same plan, because, in practice, those are the things competing for my time during the week.

A IC ganhou uma área própria. Nela consigo guardar os papers que estou lendo, anotações, experimentos e acompanhar o que estou fazendo na pesquisa. Fiz algo parecido para o estágio, onde registro tarefas, coisas que ainda preciso fazer, testes e trabalhos que já concluí.Research got its own area. In it I can keep the papers I am reading, notes, experiments and track what I am doing in my research. I did something similar for my internship, where I log tasks, things I still need to do, tests and work I have already finished.

As tarefas também podem ter duração estimada e nível de importância. Isso alimenta uma das partes que mais quero desenvolver no projeto, o Planejar.Tasks can also have an estimated duration and a level of importance. That feeds one of the parts I most want to develop in the project, Planning.

Em vez de eu simplesmente olhar uma lista enorme de coisas para fazer, o aplicativo tenta montar uma sugestão para a minha semana. Ele considera minhas aulas, estágio, IC, tarefas, duração estimada, prioridades e importância das disciplinas para decidir onde cada coisa pode entrar. Em situações específicas, pode até apontar que usar uma falta em determinada aula abriria tempo para algo mais urgente, desde que isso esteja dentro do limite que defini para aquela disciplina.Instead of me simply looking at a huge list of things to do, the app tries to put together a suggestion for my week. It considers my classes, internship, research, tasks, estimated duration, priorities and how important each subject is to decide where everything can fit. In specific situations, it can even point out that using an absence in a certain class would open up time for something more urgent, as long as that stays within the limit I set for that subject.

Sinceramente, ainda não tenho ideia de como vou implementar isso, mas deixo aqui registrado o planejamento.Honestly, I still have no idea how I am going to implement this, but I am leaving the plan on record here.

Também fiz widgets inspirados no que eu gostava no calendário do celular, e outros para informações que sentia falta de conseguir ver rapidamente.I also built widgets inspired by what I liked in my phone's calendar, and others for information I felt I was missing being able to see quickly.

Ainda tem bastante coisa que quero testar e mudar. Por enquanto, estou usando essa versão no meu próprio dia a dia e descobrindo, na prática, o que realmente ajuda e o que parecia uma boa ideia só no papel.There is still a lot I want to test and change. For now, I am using this version in my own day to day and finding out, in practice, what actually helps and what only seemed like a good idea on paper.

03públicopublic

Fundamentos de ProgramaçãoFundamentals of Programming

Repositório para estudosStudy repository

Criei este material enquanto era monitor de Fundamentos de Programação, tanto para ajudar os alunos quanto para aprender melhor enquanto ensinava. O repositório reúne aulas, exemplos, exercícios, desafios e materiais da disciplina em um só lugar. Hoje, alguns professores também o disponibilizam diretamente para seus alunos.I created this material while I was a teaching assistant for Fundamentals of Programming, both to help students and to learn better while teaching. The repository brings together lessons, examples, exercises, challenges and course material in one place. Today, some professors also make it directly available to their students.

  • 19aulaslessons
  • 19exercícios de debugdebugging exercises
  • 7listas com gabaritosets with solutions
  • MIT · CC BY-SA
estadostatus
Material aberto, mantido ativamenteOpen material, actively maintained
o acervothe archive ci182-fundamentos-de-programacao abrir no GitHubopen on GitHub

índiceindex

Guia de estudoStudy guidecomo usar este materialhow to use this material

readmeMarkdown

Bem-vindoWelcome

Repository banner reading import fundamentos, Fundamentos de Programação, CI182/CI240 UFPR

Material de apoio à monitoria de CI182/CI240, Fundamentos de Programação de Computadores da UFPR. Feito por um estudante e monitor, para ajudar quem está aprendendo e para fixar melhor o próprio conteúdo.Support material for the CI182/CI240 teaching assistance at UFPR, Fundamentals of Computer Programming. Written by a student and teaching assistant, to help whoever is learning and to make the content stick better for me too.

Não sou profissional nem programador avançado, e fico feliz em ouvir qualquer sugestão ou correção de erros.I am not a professional nor an advanced programmer, and I am glad to hear any suggestion or correction.

Escolha uma categoria aqui do lado para ter um gostinho do que tem no repo.Pick a category here on the side to get a taste of what is in the repo.

LinguagemLanguagePython 3Python 3 Público-alvoWritten forIniciantes em programaçãoProgramming beginners AtualizadoUpdatedagosto de 2026August 2026

→ Ver github→ View GitHub

Por que criei isso?Why I created this?fecharclose

Esse repositório nasceu durante o período em que fui monitor de Fundamentos de Programação. Eu queria criar um material que ajudasse os alunos que eu atendia, mas também percebi que escrever e explicar os conteúdos seria uma boa forma de eu mesmo entender melhor alguns conceitos.This repository was born during the time I was a teaching assistant for Fundamentals of Programming. I wanted to create material that would help the students I supported, but I also realized that writing and explaining the content would be a good way for me to understand some concepts better myself.

No começo, imaginava algo bem menor. Conforme fui escrevendo, porém, percebi que dava para reunir praticamente tudo que um aluno pudesse precisar em um único lugar. Passei o período organizando e escrevendo o conteúdo em um repositório aberto, que acabou crescendo junto com a monitoria.At first, I pictured something much smaller. As I kept writing, though, I realized I could gather practically everything a student might need in a single place. I spent the term organizing and writing the content in an open repository, which ended up growing along with the teaching assistant work.

Reescrevi os assuntos da disciplina do meu jeito, tentando explicar as coisas que eu gostaria de ter encontrado quando estava aprendendo. E isso acabou sendo útil para mim também. Quando você precisa explicar um conceito para outra pessoa, percebe muito rápido quais partes realmente entende e quais só achava que entendia.I rewrote the course's topics my own way, trying to explain the things I wish I had found when I was learning. And that ended up being useful for me too. When you need to explain a concept to someone else, you notice very quickly which parts you truly understand and which ones you only thought you understood.

Além das aulas, fui colocando códigos de exemplo comentados, exercícios, pequenos projetos e desafios de debug, em que o aluno recebe um programa com problemas e precisa descobrir o que está errado. Também reuni listas, slides, trabalhos e outros materiais utilizados pelos professores, além de um FAQ feito a partir das dúvidas que apareciam durante a monitoria.Besides the lessons, I kept adding commented example code, exercises, small projects and debugging challenges, where the student gets a program with problems and has to figure out what is wrong. I also gathered problem sets, slides, assignments and other material used by the professors, plus a FAQ built from the questions that came up during the sessions.

Algumas dessas dúvidas iam além do que a disciplina precisava ensinar. Em vez de simplesmente deixar esses assuntos de fora, criei apêndices para quem tivesse curiosidade de continuar. Nunca quis que o repositório servisse apenas para estudar para uma prova ou passar na matéria. Queria que ele também desse um caminho para quem começasse a gostar de programação e quisesse entender um pouco mais.Some of those questions went beyond what the course needed to teach. Instead of simply leaving those subjects out, I created appendices for anyone curious enough to keep going. I never wanted the repository to serve only for studying for a test or passing the course. I wanted it to also offer a path for anyone starting to enjoy programming who wanted to understand a bit more.

Hoje o material já é usado além da minha monitoria. Entrei em contato com professores da disciplina e alguns passaram a disponibilizar o repositório diretamente para seus alunos, o que acabou dando ao projeto uma continuidade que eu não esperava quando comecei.Today the material is already used beyond my own teaching assistant work. I reached out to professors of the course, and some of them started making the repository directly available to their students, which ended up giving the project a continuity I did not expect when I started.

Ainda pretendo acrescentar materiais, corrigir o que puder ser melhorado e continuar atualizando o conteúdo conforme ele for sendo usado. Por ser aberto, também deixo espaço para correções e sugestões de quem encontrar algum problema ou tiver algo a acrescentar.I still plan to add more material, fix whatever can be improved and keep updating the content as it gets used. Since it is open, I also leave room for corrections and suggestions from anyone who finds a problem or has something to add.

Como ele éWhat it's likefecharclose

Tudo é Python 3. As aulas, o glossário, o FAQ e os apêndices são Markdown puro, versionados como qualquer outro arquivo do repositório. As sete listas têm gabarito em Jupyter, para abrir direto no Colab sem instalar nada.Everything is Python 3. The lessons, glossary, FAQ and appendices are plain Markdown, versioned like any other file in the repository. The seven problem sets ship a Jupyter answer key, meant to open straight in Colab with nothing to install.

O projeto da Copa de Pênaltis é o único código maior do repositório, dividido em módulos (jogadores.py, campeonato.py, partida.py, visual.py e main.py) só com recursos que as próprias aulas ensinam, sem nenhuma biblioteca externa.The Penalty Shootout project is the only larger piece of code in the repository, split into modules (jogadores.py, campeonato.py, partida.py, visual.py and main.py) using only what the lessons themselves teach, with no external library.

Todo o conteúdo das aulas, exemplos e exercícios foi elaborado por mim. Em alguns momentos, usei ferramentas de IA como apoio para melhorar a formatação e a organização dos arquivos Markdown.All the lesson content, examples and exercises were written by me. At some points, I used AI tools as support to improve the formatting and organization of the Markdown files.

04privadoprivate

Gerador de orçamentosQuote generator

Ferramenta para criar orçamentosTool for creating quotes

The quote generator's first version, a form on a single page
a primeira versãothe first versionum HTML só, sem servidor, pensado nas duas empresas.a single HTML file, no server, built for the two companies.

Por um tempo, orçamento significava abrir planilha, conferir medida, somar material, ajustar valor, montar o documento e gerar o PDF. Depois fazer tudo de novo no próximo.For a while, a quote meant opening a spreadsheet, checking the measurement, adding up the material, adjusting the value, putting the document together and generating the PDF. Then doing it all again for the next one.

Em algum momento ficou meio óbvio que eu estava gastando tempo demais repetindo um processo que o computador podia fazer melhor.At some point it became pretty obvious that I was spending too much time repeating a process the computer could do better.

Comecei com uma automação simples. Hoje virou uma aplicação multiempresa, funciona offline e sincroniza quando for preciso.I started with a simple automation. Today it has become a multi-company application, it works offline and syncs when needed.

Como ele surgiuHow it came to befecharclose

Como dito no resumo, ele surgiu basicamente da necessidade de fazer orçamentos misturada com a vontade de programar (e, honestamente, um pouco de preguiça de fazer os PDFs sempre).As I mentioned above, it basically came out of the need to make quotes mixed with the wish to program (and, honestly, a bit of laziness about always having to make the PDFs).

Comecei com uma versão simplória, que tinha um único modelo, fixo para a empresa que eu fazia mais, com as coisas posicionadas fixamente em suas posições. Funcionou bem para os três primeiros orçamentos, mas obviamente essa ideia de fixar tudo era péssima.I started with a simple version that had a single, fixed model for the company I did the most work for, with everything placed in fixed positions. It worked fine for the first three quotes, but obviously that idea of fixing everything in place was terrible.

Portanto, mudei a estratégia e fui atrás de encontrar uma maneira mais flexível, que não quebrasse com mais de uma página. Encontrei uma solução, e aos poucos fui adicionando e removendo funcionalidades e coisas para customização.So I changed strategy and went looking for a more flexible way, one that would not break with more than one page. I found a solution, and little by little I kept adding and removing features and things for customization.

Depois, quando outra empresa me pediu para fazer os orçamentos, eu tive que deixar tudo mais abrangente. Não dava para deixar fixa a logo de outra empresa. Então, o programa ficou mais elástico, aceitando mais modificações.Later, when another company asked me to make their quotes, I had to make it more general. I could not leave another company's logo fixed in place. So the program became more flexible, accepting more changes.

Depois de um tempo, comecei a pesquisar sobre formas de criar cadastro em aplicativos e decidi implementar isso no programa de orçamentos. Dessa forma, no lugar de eu ir no app, gerar, enviar, aí verificarem e só depois disso mandarem para o cliente, daria para os próprios responsáveis utilizarem e gerarem seus PDFs na hora.After a while, I started researching ways to build sign-ups into apps, and decided to add that to the quotes program. That way, instead of me going into the app, generating it, sending it, having them check it and only then sending it to the client, the people in charge themselves could use it and generate their own PDFs on the spot.

Com isso, o app ficou ligeiramente mais completo (apesar de que ainda existem boas melhorias a serem feitas), e hoje é utilizado por essas empresas e mantido por mim.With that, the app got slightly more complete (though there are still good improvements to be made), and today it is used by those companies and maintained by me.

Como ele funcionaHow it worksfecharclose

Primeiro, começou como um único arquivo HTML. Logo foi ficando enorme com o tempo, e vi que não precisava ficar preso àquilo.It started out as a single HTML file. It kept getting bigger over time, and I realized I did not need to stay stuck with that.

Hoje é uma aplicação multiempresa. Dá para cadastrar qualquer empresa, salvar clientes e itens que aparecem com frequência, montar os orçamentos e gerar o PDF já com logo, Pix, condições comerciais, assinaturas e outras informações.Today it is a multi-company application. Any company can be registered, clients and frequently used items can be saved, quotes can be put together and the PDF comes out with logo, Pix, commercial terms, signatures and other details.

Uma coisa que eu quis manter desde o começo foi o funcionamento sem internet. Os dados ficam salvos no próprio aparelho, e o orçamento continua podendo ser feito normalmente. Depois, adicionei uma conta opcional para sincronizar os dados entre dispositivos, mas ela não é necessária para usar o aplicativo.One thing I wanted to keep from the start was working without internet. The data is stored on the device itself, and a quote can still be made normally. Later, I added an optional account to sync data across devices, but it is not needed to use the app.

O PDF é montado com pdfmake, direto no navegador.The PDF is put together with pdfmake, right in the browser.

A conta opcional de sincronização usa Supabase. Quando ativada, os dados locais e os da nuvem são comparados e mesclados, para poder editar em mais de um aparelho ou aba sem perder nada.The optional sync account uses Supabase. When it's turned on, the local and cloud data are compared and merged, so I can edit from more than one device or tab without losing anything.

estadostatus
em uso por empresasin use by companies
Primeira página de um orçamento em PDF gerado pelo aplicativo, com dados fictícios de demonstração
a saídathe outputPDF gerado que a empresa envia para o cliente, com logo, dados do cliente, itens e tudo mais. Sim, minha empresa fictícia valoriza muito a mão de obra.the generated PDF the company sends to the client, with logo, client details, items and everything else. Yes, my fictitious company really values labor.
O aplicativo aberto em tela larga no navegador, com o total do mês em destaque e a lista de orçamentos recentes
no navegadorin the browsero mesmo aplicativo, aberto numa tela cheia, com o resumo do mês e os orçamentos recentes.the same app, open on a full-width screen, with the month's summary and recent quotes.

05

Circuito digital e protótipo físicoDigital circuit and physical prototype

Computador de 8 bits8-bit computer

Depois da disciplina de Circuitos Digitais, onde aprendemos a montar alguns circuitos simples no Logisim, fiquei com vontade de aumentar a escala e construir um computador inteiro.After the Digital Circuits course, where we learned to build a few simple circuits in Logisim, I wanted to raise the scale and build a whole computer.

Foi assim que comecei a montar, no Logisim, o circuito completo de um computador de 8 bits.That is how I started building, in Logisim, the complete circuit of an 8-bit computer.

Também pretendo montar essa máquina fisicamente. Já comprei todos os componentes necessários, mas a montagem está parada por enquanto.I also plan to build this machine physically. I have already bought all the necessary components, but the build is paused for now.

  • Montagem completa do circuito no Logisim.Complete circuit built in Logisim.
  • Arquitetura e montagem baseadas na série do WR Kits.Architecture and build based on the WR Kits series.
  • Montagem completa em protoboard, ainda travada.Complete breadboard build, still stalled.
por que eu comecei issowhy I started thisfecharclose

A matéria tinha me mostrado a lógica por trás dos circuitos, mas eu queria ir além da teoria e acompanhar cada parte trabalhando junto. A versão lógica já tem ULA, registradores, memória e outras partes parcialmente construídas. Também comprei os componentes para uma versão física, mas a montagem em protoboard ficou parada por enquanto.The course had shown me the logic behind the circuits, but I wanted to go beyond the theory and watch every part working together. The logical version already has an ALU, registers, memory and other parts partially built. I also bought the components for a physical version, but the breadboard build is paused for now.

Não é um projeto pensado para ter alguma utilidade prática imediata. Estou fazendo porque quero entender o funcionamento de um computador por dentro, acompanhar o caminho dos sinais e descobrir, na prática, por que cada parte funciona do jeito que funciona.It is not a project meant to have any immediate practical use. I am doing it because I want to understand how a computer works on the inside, follow the path of the signals, and find out, in practice, why each part works the way it does.

paradohalted

Diagrama da arquitetura do computador de 8 bits. A unidade de controle no topo, o contador de programa, o registrador de endereço e a RAM à esquerda, o barramento de 8 bits no centro, os registradores A e B com a ULA à direita, e o registrador de instrução, o registrador de saída e o display embaixo.Architecture diagram of the 8-bit computer. The control unit at the top, the program counter, the address register and the RAM on the left, the 8-bit bus in the middle, registers A and B with the ALU on the right, and the instruction register, the output register and the display at the bottom. SINAIS DE CONTROLECONTROL SIGNALS BARRAMENTOBUS BUS -- CLOCK RUN · STEP UNIDADE DE CONTROLECONTROL UNIT MICROCÓDIGOMICROCODE SEQUENCIADORSEQUENCER DECIDE OS SINAIS DE CADA CICLODECIDES THE SIGNALS FOR EACH CYCLE PC PRÓXIMA INSTRUÇÃONEXT INSTRUCTION 20h MAR ENDEREÇO ATUALCURRENT ADDRESS 00h RAM PROGRAMA + DADOSPROGRAM + DATA -- IR INSTRUÇÃO ATUALCURRENT INSTRUCTION -- A ACUMULADORACCUMULATOR 00h ULA A + B · A − B -- B 2º OPERANDO2ND OPERAND 00h OUT REG. DE SAÍDAOUTPUT REG. 00h FLAGS Z 0 C 0 DISPLAY 00h ↔ arraste↔ drag
inspeçãoinspection

Um programa de exemplo roda dentro da máquina: carrega 54, soma 5 e guarda o resultado. O visor vai se completando conforme cada passo acontece de verdade.An example program runs inside the machine: it loads 54, adds 5 and stores the result. The display fills in as each step actually happens.

Visor de 7 segmentos mostrando a equação do programa, preenchida conforme ele rodaSeven-segment display showing the program's equation, filled in as it runs

Primeiro aparece o número carregado da memória, depois o + e o segundo número, e só no fim o = com o resultado. Clique em step ou run, aqui embaixo.First the number loaded from memory appears, then the + and the second number, and only at the end the = with the result. Click step or run, below.

µESTADOSTATE T0 BUS -- PC 20h Z 0 · C 0 programa de exemploexample program
estadostatus
Simulação em construção no Logisim, protoboard pausada por enquantoSimulation under construction in Logisim, breadboard build paused for now
papelrole
Projeto e implementação individualEntirely designed and implemented by me

06internointernal

IA veicularVehicle AI

Contagem e classificação de veículosVehicle counting and classification

Este é um projeto que eu estou desenvolvendo no meu trabalho. Por ser um sistema interno, vou descrever o funcionamento sem mostrar código, telas, configurações ou dados sensíveis.This is a project I am developing at my job. Since it is an internal system, I will describe how it works without showing code, screens, configuration or sensitive data.

  • Detecção dos veículos no vídeo com um transformer.Vehicle detection on video with a transformer.
  • Deduplicação própria antes do rastreamento. Ajuda a cortar duplicatas.A purpose-built deduplication step before tracking. It helps cut duplicates.
  • Rastreamento que mantém a identidade de cada veículo ao longo do percurso.Tracking that keeps each vehicle's identity throughout its path.
  • Contagem por cruzamento de linha, feita a partir dos tracks.Counting by line crossing, computed from the tracks.
  • Classificação temporal por track.Temporal classification per track.
estadostatus
Uso e evolução contínuaIn use, with continuous evolution
papelrole
Responsável pelo aprimoramento, correção e evolução da IAResponsible for improving, fixing and evolving the AI
resultados reaisreal-world results
95%+

de acurácia média, com um ganho de 46% à noite sobre o modelo anterior em cenas de baixa visibilidade ou com objetos atrapalhando a câmera.average accuracy, with a 46% gain at night over the previous model in low-visibility scenes or with things blocking the camera.

−36%

em veículos duplicados, uma média de 12 a cada 1.000 (1,2%), o que ajuda a verificação manual e agiliza os procedimentos da empresa.in duplicate vehicles, an average of 12 per 1,000 (1.2%), which helps manual review and speeds up the company's procedures.

Ainda em aprimoramento, mas já com um ganho real considerável.Still being refined, but already with a real, sizable gain.

outras ferramentas do trabalhoother tools I built at workfecharclose

IA para contagem e classificação de veículosAI for vehicle counting and classification

Trecho real da câmera, com o processamento do sistema por cima. A caixa de detecção é a saída do modelo.A real camera clip, with the system's processing on top. The detection box is the model's output.
recortes por trackcrops per track
Recorte real de um caminhão com carreta, detectado pelo sistema numa rodovia
Recorte real de um caminhão, detectado pelo sistema numa rodovia
Recorte real de um carro, detectado pelo sistema numa rodovia
Recorte real de uma caminhonete, detectada pelo sistema numa rodovia

Os vários recortes de cada track já servem para montar um dataset próprio com dados reais de rodovias. A ideia é treinar e comparar classificadores visuais próprios futuramente.The many crops from each track are already being used to build a custom dataset from real road data. The goal is to train and compare custom visual classifiers in the future.

07

Outros projetos e trabalhos acadêmicosOther projects and coursework

Projetos menores e trabalhos de disciplina, guardados aqui como registro de onde eu comecei.Smaller projects and coursework, kept here as a record of where I started.

→ Ver github→ View GitHub

primeiro projetofirst project

Calculadora POOOOP calculator

Escrevi por conta própria a parte que interpreta e resolve as expressões, em vez de usar o avaliador pronto da linguagem.I wrote the part that parses and solves the expressions myself, instead of using the language's built-in evaluator.

  • Python 3.12
circuitos digitaisdigital circuits

ULA de 8 bits8-bit ALU

Uma ULA de 8 bits em portas NAND que soma, subtrai e multiplica, com a operação escolhida por um MUX.An 8-bit ALU built out of NAND gates that adds, subtracts and multiplies, with the operation selected by a MUX.

  • Logisim
circuitos digitaisdigital circuits

Cronômetro de voltasLap timer

Controla o tempo de dois carros, registra cada volta e calcula a diferença entre eles.It times two cars, records each lap and works out the difference between them.

  • Logisim
SENAI · PetrobrasSENAI · Petrobras

Plataforma offshore para painéis solaresOffshore platform for solar panels

Simulação e criação de proposta para aplicação de painéis solares em plataformas offshore da Petrobras.Simulation and proposal for applying solar panels to Petrobras offshore platforms.

primeiro projetofirst project

Calculadora POOOOP calculator

Foi meu primeiro projeto e também o mais clássico de quem está começando. Fiz uma calculadora para praticar Python, orientação a objetos e lógica, mas quis evitar que ela fosse só uma interface em cima de funções prontas.It was my first project, and also the classic one everyone starting out makes. I built a calculator to practice Python, object-oriented programming and logic, but I wanted to avoid it being just an interface on top of ready-made functions.

O programa respeita a ordem das operações, trata os parênteses de dentro para fora e calcula o resultado sem depender de um avaliador pronto da linguagem. Também cuidei da organização do código, separando bem as responsabilidades de cada parte.The program respects the order of operations, handles parentheses from the inside out, and computes the result without relying on the language's built-in evaluator. I also took care with how the code was organized, keeping each part's responsibilities well separated.

A calculadora tem interface gráfica, histórico e tratamento de erros. É um projeto simples, mas foi a primeira vez que transformei o que estava aprendendo em algo completo.The calculator has a graphical interface, a history and error handling. It's a simple project, but it was the first time I turned something I was learning into something complete.

→ ver repositório→ view repository Python 3.12

circuitos digitaisdigital circuits

ULA de 8 bits8-bit ALU

Uma atividade da própria disciplina de Circuitos Digitais já tinha me dado um primeiro contato com isso, antes de eu começar o computador completo, e foi um dos motivos que me fez querer construir e montar um computador de 8 bits completo. Implementei sozinho, no Logisim, uma ULA de 8 bits capaz de somar, subtrair e multiplicar, ou seja, funciona como uma ULA normal, com a operação escolhida por um MUX e a lógica toda construída em portas NAND.An assignment in the Digital Circuits course itself had already given me a first taste of this, before I started the complete computer, and it was one of the reasons I wanted to build and put together a complete 8-bit computer. On my own, in Logisim, I implemented an 8-bit ALU that can add, subtract and multiply, working like a regular ALU, with the operation selected by a MUX and the whole logic built out of NAND gates.

Trecho do circuito da ULA no Logisim, com o somador de 8 bits, o subtrator, o multiplicador e o MUX de saída
Uma parte do circuito no Logisim, com o somador de 8 bits.A part of the circuit in Logisim, with the 8-bit adder.

Logisim

circuitos digitaisdigital circuits

Cronômetro de voltasLap timer

Outro trabalho de Circuitos Digitais foi um cronômetro de voltas feito no Logisim usando Flip-Flops JK. O circuito controla o tempo de dois carros, registra cada volta, soma o tempo total da corrida e calcula a diferença entre eles. Cada pulso do clock representa um centésimo de segundo, então o cronômetro conta em centésimos, décimos, segundos e minutos.Another Digital Circuits assignment was a lap timer built in Logisim using JK flip-flops. The circuit times two cars, records each lap, adds up the total race time and works out the difference between them. Each clock pulse stands for a hundredth of a second, so the timer counts in hundredths, tenths, seconds and minutes.

Circuito do cronômetro de voltas no Logisim, com os contadores de tempo dos dois carros lado a lado
O circuito no Logisim, com os dois carros lado a lado.The circuit in Logisim, with both cars side by side.

Logisim

SENAI · PetrobrasSENAI · Petrobras

Plataforma offshore para painéis solaresOffshore platform for solar panels

Protótipo de uma plataforma offshore com a implementação de painéis solares. É um projeto para apresentação interna para a Petrobras, e inclui ficha técnica, detalhes de engenharia, a apresentação propriamente dita, um vídeo de proposta publicado no YouTube, simulação e um protótipo físico simples para retratar o funcionamento eletroeletrônico.A prototype of an offshore platform with solar panels added to it. It's a project for an internal presentation to Petrobras, and includes a technical file, engineering details, the presentation itself, a proposal video published on YouTube, a simulation and a simple physical prototype to show how the electrical and electronic side works.

Por enquanto está só a foto do protótipo. Depois incluo o restante dos documentos e criações feitas, quando forem autorizados.For now there's only the photo of the prototype. I'll add the rest of the documents and work once they're authorized.

Protótipo físico de uma plataforma offshore em MDF, com um painel solar, servomotores e fiação sobre a estrutura
O protótipo físico simples, com o painel solar e os servomotores por cima da estrutura.The simple physical prototype, with the solar panel and servo motors on top of the structure.