PITCH: Criei um encurtador de URLs

Apresento-lhes a versão inicial do projeto que venho desenvolvendo no tempo livre, o Reducely.

Reducely Preview

O projeto é bem simples, nem tem nem um domínio personalizado, mas decidi mesmo assim publicar. Espero que gostem e que passem o feedback de vocês. O projeto é Open-Source, então sintam-se à vontade para contribuir (Repositório no GitHub).

O projeto está disponível em: https://reducely.vercel.app/

As tecnologias usadas foram:

  • React
  • TailwindCSS
  • Express.js
  • MongoDB
  • shadcn/ui

Show Emerson. E a sacada do nome foi massa hein reduce.ly

Parabéns 🚀🚀🚀

Valeu, @olavomello. 👊👊👊 Quando estava escolhendo o nome do projeto, todo nome que eu pensava eu ia olhar se o domínio estava disponível, afinal isso é bem importante caso eu queira botar o projeto pra frente.
Isso ai. O nome ficou show 🚀

Show, teu codigo ta do backend ta bem daora!

Obrigado, @pedroDarde!! 🤝 Fico feliz em saber que gostou, com esse projeto aprendi bastante sobre padrões de projeto e Clean Code.
Olhando ele percebi que algumas me lembraram bastante de um curso que fiz do Rodrigo Manguinho, tu tbm chegou a fazer ?
Não, apliquei tudo que aprendi assitindo vídeos no YouTube, principalmente os vídeos do Otávio Lemos e Rodrigo Branas.

Cara, ficou muito bom, como alguém que tá criando um encurtador também, fiquei bem impressionado com o estilo e com o código, parabéns mano!

Só tenho uma sugestão mano, vi no código que você faz o accessCount como um inteiro: ```typescript const updatedLink = { ...link, accessCount: link.accessCount + 1 }; await this.linksRepository.update(linkId, updatedLink); ``` Uma melhoria seria você encarar o clique como uma entidade do seu banco de dados, onde cada clique vai ser uma entrada, dessa forma você vai conseguir agregar por data, hora, aparelho e outras coisas, esse tipo de abordagem vai te dar mais flexibilidade caso você queira evoluir a aplicação! Abraço!
Essa abordagem também evita problemas de concorrência, pois para ter uma contagem precisa você teria que fazer uma operação atomica, o que impede escritas simultâneas, enquanto inserir uma linha na tabela não precisaria fazer nenhuma operação atomica. mas não li o codigo para saber qual banck esta zendo usado, mas acredito que o principio se aplique a varios bancos.
Tem razão e isso em conjunto com autenticação é algo que realmente eu quero adicionar em uma próxima versão. Valeu pela sugestão! 🤝

Código maravilhoso, design incrível e esse dark mode simplesmente dá um sentido diferente ao projeto.

Sensacional amigo, simplesmente sensacional.

Parabéns pelo projeto e por deixá-lo publico. Muita gente já falou coisas positivas sobre seu código, então não vou repetir :) Pensando em alguém que não está familiarizado com o código e passa o olho nesse trecho.

if (createLinkResponse.isLeft())
        return httpResponseUtils.badRequest(createLinkResponse.value);

Left ou Right não é uma coisa que fica claro pra mim, sei que é um jto Haskell de programar, eu acho confuso (o problema pode ser eu), sugestão:

if (createLinkResponse.failed())
       return httpResponseUtils.badRequest(createLinkResponse.value);

Para mim ficaria mais fácil a leitura, não sei o que os outros colegas acham, e o que vc acha tb?

A estrutra do código em si é clara, fácil de se localizar, métodos curtos, classes curtas, testes (super importante)

Concordo com você, uma pessoa que nunca viu esse tipo de tratamento de erro pode estranhar(não que seja o seu caso kk), porém isso já é meio que uma convenção. Agradeço pela sugestão. 🤝

O padrão estético que você seguiu é muito bacana, bem minimalista e limpo. Funciona maravilhosamente (esteticamente falando) nesse modo escuro tbm, na real.

Desculpa minha ignorancia, mas qual é a real vantagem das empresas fazerem projeto com código aberto no github?

Pergunto isso, pq recentemente me deparei com alguns projetos que cobram assinatura mensal, mas disponibilizam o código no GitHub.....qualquer um pode pegar o código e usar em outro dominio? ou não?

Não pode por causa das licenças, além de que provavelmente essa empresa que você viu deve ter uma parte do código aberta, justamente a que você viu, mas ainda tem muita coisa por trás para fazer aquilo funcionar como um todo. Em relação à código aberto, primeiro vale ressaltar que ser de código aberto não necessariamente quer dizer que qualquer um pode alterar, pode ser só para vê-lo, apesar que ver esse tipo de licença é raro. Entretanto, você permitir que seus usuários modifiquem seu código, de forma resumida, é bom pois você tem seu cliente fazendo o que ele deseja que seu produto tenha, sem necessariamente que você tenha que fazer aquilo, e falhas de segurança podem ser encontradas mais facilmente para serem resolvidas o quanto antes.
A resposta pode estar aqui > https://www.tabnews.com.br/uriel/por-que-ninguem-vai-roubar-sua-ideia
Não sei te dizer, com certeza, mas creio que sim. E a maior vantagem que eu vejo em uma empresa que adota o modo Open-Source de ser em seus projetos, é receber contribuição da comunidade, principalmente quando se trata de uma ferramenta voltada para desenvolvedores.

As vezes a ideia não é vender o produto(Codigo) mas sim vender o serviço(implementação). Exemplo: O glpi e um programa Open source, mas muitas empresas preferem contratar um serviço mesnal de implementação e de manutenção.

Uma sugestão: atualmente, está sendo possível reduzir um link já reduzido. Poderia fazer um bloqueio para reduções sob domínio Reducely.

https://reducely.vercel.app/Ig7xYfFZ -> https://reducely.vercel.app/YMmysyYR -> https://reducely.vercel.app/aH9VaNn7 -> https://reducely.vercel.app/