Sincronize seus commits do Github no Google Agenda automaticamente
POR QUÊ?
Decidi fazer esse projeto para combater o latente sentimento de improdutividade, mesmo quando passo o dia inteiro contribuindo ativamente em projetos, estudando e fazendo diversas tarefas.
E como essa ferramenta resolve o problema? simples: ela mostra o seu progresso e o seu trabalho ao longo dos dias. ela mostra que, apesar de não ter acontecido nenhuma coisa incrível hoje (promoção, trabalho novo, reconhecimento), a sua parte você fez.
COMO?
Basicamente, para realizar essa sincronização, utilizamos:
- api do github: obter os seus commits;
- gcal-sync: um pacote que criei e disponibilizei no npm, para facilitar atualizações;
- conta no google: para permitir usar o google agenda e o google apps scripts;
- google apps scripts: rodar um código em javascript a cada 5 minutos;
O tutorial completo para colocar a ferramenta para funcionar pode ser encontrado aqui, e conta com vários gifs e imagens para ser o mais didático possível.
FUNCIONALIDADES
Além da mencionada sincronização dos commits do github, o gcal-sync também:
- Permite sincronizar suas tarefas concluídas do ticktick no google calendar;
- Forçar sincronização acessando um link disponibilizado pelo google apps scripts;
- Opção de mandar (ou não) email a cada sincronização com items;
- Opção de mandar (ou não) email ao final do dia com todas as operações;
- Opção de mandar (ou não) email sobre nova versão disponível do gcal-sync;
- Opção de mandar (ou não) email se algum erro ocorreu;
CURIOSIDADES
- Esse projeto foi inspirado nesse, que basicamente sincronizava as tarefas do ticktick. Porém ele apagava as minhas tarefas concluídas, e meu calendário acabava ficando vazio, o que eu não gostava.
- Consegui usar typescript no projeto o que trouxe uma produtividade enorme, uma vez que consegui obter os tipos das APIS do google. Acredito que a técnica que usei é interessante pois permite teste e deploy bem otimizados.
- Um ponto interessante de se comentar é que por conta de um comportamento misterioso do github, precisei fazer o script checar se as informações do github são a mesma por 3 vezes seguidas. Se sim, aí adicionar/apagar as informações no seu calendário. Isso implica que em média, os commits serão sincronizados a cada 15 minutos.
CONCLUSÃO
Como disse, a minha maior motivação de fazer esse projeto foi combater o sentimento de improdutividade, mesmo quando estou me esforçando ao meu máximo, e depois de dois meses digo que esse sentimento foi substituído por um toque de orgulho do meu desempenho ao ver meu calendário cheio de tarefas (verde) e commits (preto) concluídos:
Por fim, gostaria de deixar essa mensagem que pelo menos pra mim faz sentido: focar nas suas ações e no que você fez, ao invés de depender sua satisfação (em termos de produtividade/progresso) de resultados/reconhecimentos externos.