Git Product home page Git Product logo

psr-rifas's Introduction

Logo do Projeto

License Actions tests with vitest and PHPUnit Actions Check Code Follow me on Twitter: valdeirpsr

PSRifas

Hoje eu quero compartilhar com vocês um projeto de estudo incrível que eu desenvolvi: um sistema de rifa digital, que permite que você crie e gerencie suas próprias rifas online.

Com esse sistema, você pode escolher sua forma de pagamento preferida, criar rifas personalizadas, definir o ganhador e ter uma página exclusiva para vender seus bilhetes.

É muito fácil, rápido e divertido! Você pode usar esse sistema para arrecadar dinheiro para uma causa nobre, para realizar um sonho, para estudar o funcionamento do projeto ou simplesmente para se divertir com seus amigos. O sistema é seguro, confiável e transparente. Você pode acompanhar todas as informações das suas rifas em tempo real e receber o pagamento diretamente na sua conta.

Demonstração

Comprando bilhetes Definindo bilhete premiado
Vídeo de demonstração - Parte 1 Vídeo de demonstração - Parte 2

Variáveis de Ambiente

Para rodar esse projeto, você vai precisar adicionar as seguintes variáveis de ambiente no seu .env

# Prazo de pagamento
# Caso o prazo seja atingido e o pagamento não seja feito,
# o pedido será removido e os números liberados
RIFA_EXPIRE_AT_MINUTES=60
# Access Token do MercadoPago para gerenciar seu pagamento
MERCADOPAGO_ACCESS_TOKEN=<string>

Rodando localmente

Clone o projeto

  git clone https://github.com/valdeirpsr/psr-rifas.git

Entre no diretório do projeto

  cd psr-rifas

Instale as dependências do PHP

  composer require

Crie a estrutura do banco de dados

  php artisan migrate

  # Com dados fakes (opcional)
  php artisan migrate --seed

Instale as dependências do javascript

  pnpm i

Inicie o servidor do PHP

  php artisan serve

Inicie vite

  pnpm dev

Rodando localmente com Docker Compose

Clone o projeto

  git clone https://github.com/valdeirpsr/psr-rifas.git

Entre no diretório do projeto

  cd psr-rifas

Execute o comando abaixo no seu terminal

  docker run --rm --volume "$PWD:/app" composer require --ignore-platform-reqs;
  docker-compose up -d

Caso seja necessário, acesse o container laravel.test e execute o vite

  docker-compose exec laravel.test sh -c "pnpm dev"

Rodando os testes

Para rodar os testes do JavaScript, rode o seguinte comando

  npx vitest

Para rodar os testes do Laravel, rode o seguinte comando

  php artisan test

Deploy

Leia Deployment com Laravel

Stack utilizada

Front-end: Vue 3, Vite, Typescript, InertiaJs, TailwindCSS

Back-end: PHP 8.2, Laravel 10.10.x

Roadmap

  • Utilizar Repositories para realizar busca através dos Models

  • Integrar o sistema com o mecanismo de busca Meilisearch

  • Criar uma página para visualização das informações de rifa no painel de controle: número de bilhetes vendidos, gráfico com vendas por data, ranking dos compradores. Nota 1

  • Adicionar suporte para desconto por quantidade

  • Adicionar agendamento para publicação das rifas

  • Adicionar outras formas de pagamento

  • Adicionar mecanismo de análise de código PHP

Aprendizados

Durante a construção deste projeto, aprendi muito sobre a estrutura e o funcionamento do Laravel, que é um framework PHP poderoso e flexível para o desenvolvimento web. Entendi melhor alguns padrões que podem ser usados no Laravel e o funcionamento de alguns deles.

Além disso, aprofundei meus conhecimentos sobre testes no Laravel, explorando diversas abordagens para garantir a qualidade do código e a estabilidade do projeto. Tanto testes de integração quanto testes diretamente no models. Ainda não testei o PHPest, mas não fará oportunidade para conhecê-lo e usá-lo.

Um dos maiores desafios que enfrentei foi entender completamente o funcionamento do Eloquent ORM, mas foi resolvido com o fácil suporte em queries complexas.

Outro desafio que encontrei foi a integração direta do Laravel com o Vue.js. No início, cogitei transformar o Laravel em um sistema de API e usar requisições no Vue 3 para exibir os dados para o usuário. No entanto, fui capaz de superar esse obstáculo com o uso do pacote Inertia.js.

Ademais, o Filament me ajudou a criar toda estrutura do painel de controle. Foi uma oportunidade de aprender como integrar soluções externas ao projeto, aproveitando suas funcionalidades para economizar tempo e esforço no desenvolvimento.

No geral, o processo de construção deste projeto foi muito enriquecedor. Conheci algumas limitações e pude aprender a superá-las. Ao final, sinto que ganhei um conhecimento valioso sobre o ecossistema Laravel e sua integração com tecnologias.

psr-rifas's People

Contributors

dependabot[bot] avatar valdeirpsr avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.