About

Pinflow este o platformă de crowdsourced delivery menită să simplifice procesul de livrare a coletelor pe distanțe scurte și medii. 📦

Feature-uri ale platformei:

  • Plasare de comenzi: Dorești să trimiți un colet din punctul A în punctul B? Plasează o comandă și așteaptă ca un alt utilizator să accepte livrarea! 🚀
  • Livrează comenzi și încasează bani: Pe Pinflow poți vedea comenzile ce așteaptă să fie livrate în zona ta. Acceptă și livrează comanda pentru a fi recompensat! 💸
  • Urmărire în timp real a curierului: Ai un colet în curs de livrare? Urmărește locația curierului în timp real pentru a ști exact când va ajunge la destinație. 📍
  • Comunică prin chat în timp real: Comunică eficient cu curierul folosind chat-ul disponibil la fiecare livrare. 💬

Internaționalizare și accesibilitate

Arhitectura platformei

Am adoptat o arhitectură bazată pe microservicii, asigurând astfel că fiecare componentă a platformei este scalabilă și independentă. 🏗️

Tehnologii

Detaliile tehnice ale platformei Pinflow:

Frontend:

  • Next.js: Framework-ul principal utilizat pentru dezvoltarea aplicației frontend, oferind performanță și flexibilitate.
  • shadcn/ui: O colecție de componente UI care ajută la construirea unei interfețe moderne și coerente.
  • TailwindCSS: Un framework CSS utilitar ce permite stilizarea rapidă și eficientă a interfeței.

Backend:

  • tRPC: Soluția folosită pentru a conecta frontend-ul cu backend-ul într-un mod eficient și tipat.
  • Next.js App Router: Utilizat pentru a gestiona routing-ul aplicației web principale.
  • Go: Limbajul folosit pentru microserviciul de urmărire a locației curierului în timp real, datorită performanței sale ridicate și fiabilității.

Servicii third-party:

  • Stripe: Integrat pentru procesarea plăților, asigurând tranzacții sigure și rapide 💳
  • Flagsmith: Utilizat pentru implementarea de "feature flags" printr-o instanță self-hosted, oferind control granular asupra funcționalităților platformei 🏴

Develop, Test, Deploy!

În realizarea proiectului, am pus un accent deosebit pe testarea eficientă. Am scris teste de integrare folosind Jest (opens in a new tab) și Testcontainers (opens in a new tab) împreună cu Docker (opens in a new tab). De asemenea, am realizat teste end-to-end folosind Cypress (opens in a new tab). 🧪

Procesul de testare este automatizat folosind un pipeline de Continuous Integration prin intermediul GitHub Actions (opens in a new tab) ⚙️

Pentru deployment, folosesc Railway (opens in a new tab) atât pentru baza de date cât și pentru toate celelalte servicii utilizate în cadrul proiectului. 🚀

Cerințe de sistem

Pentru utilizarea platformei:

  • Browser modern (Google Chrome, Mozilla Firefox, Safari, etc.)
  • Conexiune la internet

Pentru dezvoltare:

  • MacOS, Linux sau Windows, cu cel puțin 8GB RAM, recomandat 16GB
  • Node.js 22.x
  • Go 1.22.x
  • Docker
  • Orice editor de text (VS Code, IntelliJ IDEA, etc.)