Skip to content

Latest commit

Β 

History

History
114 lines (82 loc) Β· 2.64 KB

File metadata and controls

114 lines (82 loc) Β· 2.64 KB
Project Logo

payNEXT

payNEXT is a next-generation digital wallet platform.

πŸ“– About The Project

payNEXT is a digital wallet platform developed for Web Programming Lab II.

The project uses an MVC-based backend and provides API-driven features for common wallet operations, including:

  • Wallet balance management
  • Transaction history
  • Peer-to-peer money requests
  • Merchant payments
  • User authentication

The application runs as a Docker-based multi-container system.

✨ Features

  • πŸ’³ Digital Wallet: Manage wallet balances and transactions.
  • πŸ”’ Automatic HTTPS: Caddy manages HTTPS and Let's Encrypt certificates.
  • 🐳 Docker Support: Run the application and its services with Docker Compose.

πŸ› οΈ Tech Stack

  • Frontend: HTML, CSS, JavaScript
  • Web Server: Nginx
  • Backend: Node.js, Express.js
  • Architecture: MVC
  • Database: PostgreSQL 16
  • Reverse Proxy: Caddy v2
  • SSL/TLS: Let's Encrypt
  • Containerization: Docker, Docker Compose
  • CI/CD: GitHub Actions

πŸ—οΈ Architecture

payNEXT uses four main services:

  1. Caddy

    • Receives incoming web traffic.
    • Redirects HTTP traffic to HTTPS.
    • Manages Let's Encrypt certificates.
    • Routes /api/* requests to the backend.
    • Routes frontend requests to Nginx.
  2. Web

    • Runs Nginx.
    • Serves the frontend files.
    • Handles client-side routing.
  3. API

    • Runs the Node.js and Express.js backend.
    • Handles authentication and wallet operations.
    • Processes transactions and money requests.
    • Communicates with PostgreSQL.
  4. Database

    • Runs PostgreSQL 16.
    • Stores users, wallets, transactions, money requests, and other application data.

The request flow looks like this:

User
  β”‚
  β–Ό
Caddy
  β”‚
  β”œβ”€β”€ / ──────────► Nginx
  β”‚                   β”‚
  β”‚                   β–Ό
  β”‚                Frontend
  β”‚
  └── /api/* ─────► Node.js
                       β”‚
                       β–Ό
                   PostgreSQL

πŸš€ Getting Started

Prerequisites

Install these tools before running the project:

Stopping the Application

Stop the containers with:

docker compose down

To also remove Docker volumes:

docker compose down -v

Use the -v option only when you want to remove the stored local database data.

payNEXT - Powering Your Next Move. Next Generation Digital Wallet.