Skip to content

eduardbonea/flow-payment

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌊 Flow payment 💵

Proiectul echipei Flow


📜 Despre Proiect

Acesta proiect este realizat în cadrul opționalului de Tehnologii Web și simulează o aplicație de solicitare a plăților, similar cu Tikkie. Utilizatorii pot crea cereri de plată introducând suma și motivul, generând un cod QR pe care prietenii îl pot scana pentru a accepta sau refuza plata. Aplicația urmărește statusul fiecărei cereri și trimite notificări push requester-ului atunci când requestee-ii acționează asupra cererii.

URL Aplicație: Flow Payment


🛠️ Tehnologii Folosite

Proiectul este construit folosind următoarele tehnologii:

Frontend

  • ArrowJS: Bibliotecă JavaScript pentru construirea interfețelor și gestionarea stării aplicației.
  • HTML: definește structura paginilor și elementele vizuale
  • CSS: stilizează elementele HTML

Backend

  • Node.js: Mediul de rulare JavaScript (runtime) pentru server.
  • Express.js: Un framework minimalist pentru Node.js, folosit pentru a construi API-ul RESTful.
  • Sequelize: Un ORM (Object-Relational Mapper) bazat pe promisiuni pentru Node.js. Simplifică interacțiunea cu baza de date (ex: PostgreSQL, MySQL, SQLite).
  • Baza de date: mysql.

✨ Funcționalități Principale

  • Autentificare Utilizatori: Acces în aplicație prin conturi unice per utilizator
  • Crearea cererilor de plată: Introducerea sumei și motivului, generarea unui cod QR.
  • Vizualizarea cererilor: Requesterii pot vedea statusul fiecărui requestee și totalul colectat.
  • Acceptare/Refuz cereri: Requestee-ii pot accepta sau refuza plățile prin interfața accesibilă cu QR code-ul.
  • Notificări push: Requesterii primesc notificări atunci când requestee-ii răspund cererilor.

🚀 Instalare și Rulare

Utilizarea Docker este cea mai simplă și rapidă metodă, eliminând cerințele de instalare Node.js, MySQL sau ArrowJS direct pe sistemul personal

0. Precondiții Esențiale

1. Clonarea Proiectului

Deschide terminalul și clonează repository-ul:

git clone [https://github.com/eduardbonea/flow-payment.git](https://github.com/eduardbonea/flow-payment.git)
cd flow-payment

2. Configurare Variabile de Mediu

Variabilele sunt definite în docker-compose.yml ca să fie importate din .env, este nevoie să creați un fișier .env în directorul backend/ cu următoarea structură:

# BACKEND
PORT=
JWT_SECRET=

#DOCKER
MYSQL_ROOT_PASSWORD=

#DATABASE
MYSQL_DATABASE=
MYSQL_USER=
MYSQL_PASSWORD=
DB_HOST=database
DB_DIALECT=mysql
DB_CHARSET=utf8

3. Pornirea Aplicației (Build & Run)

Execută această comandă pentru a construi imaginile Docker necesare și a porni toate serviciile (backend, frontend, bază de date) în fundal:

docker-compose up --build -d

4. Accesarea Aplicației

După ce containerele au pornit cu succes:

Serviciu Adresă Implicită
Frontend (Aplicația Web) http://localhost:80
Backend (API) http://localhost:3003
Database (mysql) http://localhost:3306

5. Oprirea și Curățarea

Pentru a opri și șterge containerele fără a pierde datele stocate în volume:

docker-compose down

Pentru a șterge complet toate containerele, imaginile și volumele de date (inclusiv datele MySQL stocate):

docker-compose down --rmi all -v

Rute API

Rută Generală

Funcționalitate Tip rută Path
Resetare baza de date GET /reset

Rute User

Funcționalitate Tip rută Path
Creare utilizator POST /api/user/create
Găsire profil utilizator GET /api/user/getProfile
Actualizare username PATCH /api/user/patchusername/{userId}
Actualizare parolă PATCH /api/user/patchpassword/{userId}
Actualizare email PATCH /api/user/patchemail/{userId}
Ștergere utilizator DELETE /api/user/delete/{userId}

Rute Payment

Funcționalitate Tip rută Path
Creare plată POST /api/payment/create
Istoric plăți GET /api/payment/getHistory
Detalii plată GET /api/payment/getDetails/{UUID}
Actualizare plată GET /api/payment/patch

🌐 Hostarea Web - DevOps

Aplicația Flow Payment este găzduită prin intermediul DigitalOcean pe un server Ubuntu 24.04.1 și este accesibilă printr-un domeniu gestionat cu DNS Cloudflare.

Configurație Server

  • Server OS: Ubuntu 22.04.01 (DigitalOcean Droplet)
  • Web server: Nginx – folosit pentru a direcționa cererile către backend și pentru a servi frontend-ul.
  • Docker: Platforma de Containerizare folosită pentru a rula aplicația în medii izolate și reproductibile (containere).

Flux General

  • Frontend-ul (Arrow.js + Vite build) este servit de Nginx ca fișiere statice.
  • Backend-ul (Node.js + Express) rulează ca proces gestionat de PM2 și expune API-ul RESTful pentru frontend.
  • DNS și SSL: Cloudflare gestionează domeniul și oferă SSL gratuit pentru securizarea conexiunilor HTTPS.
  • Acces public: Aplicația este accesibilă prin domeniul configurat în Cloudflare (https://flow-payment.eduardbonea.com).

👨🏻‍💻👩🏻‍💻 Membrii echipei

About

Proiectul echipei Flow - Payment Request App

Topics

Resources

Stars

Watchers

Forks