Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Prominence Bank - Core Banking Platform

A comprehensive web-based core banking system with admin back office and customer portal, featuring modern banking operations, instrument management, and secure authentication.

Developer: Afaq Ahmad

Features

Admin Back Office

  • Customer Management: Create and manage customer accounts
  • Account Management: Handle multiple currency accounts with balance tracking
  • Deposits & Holds: Manual deposit processing with hold/release workflow
  • Banking Instruments: Manage CD, SBLC, BG, SKR, BCC, POF, BF, KTT, SWIFT instruments
  • Settings Management: Configure fees, rates, wallet addresses, and system parameters
  • Audit Logging: Complete audit trail for all sensitive operations

Customer Portal

  • Dashboard: Real-time balance overview with available and in-transit funds
  • Transaction History: Comprehensive transaction logging and filtering
  • Bank Instruments: View issued banking instruments and certificates
  • Secure Authentication: Email OTP for login and sensitive operations

Security Features

  • Email OTP: Secure authentication via email one-time passwords
  • Role-Based Access: Separate admin and customer access levels
  • Audit Trails: Complete logging of all financial operations
  • Balance Validation: Minimum balance enforcement and transaction limits

Technology Stack

  • Frontend: Next.js 16, React 19, TypeScript, Tailwind CSS
  • Backend: Next.js API Routes
  • Database: PostgreSQL with Prisma ORM
  • Authentication: JWT with email OTP
  • Email: Nodemailer with SMTP
  • UI Components: Radix UI, Lucide Icons

Getting Started

Prerequisites

  • Node.js 18+
  • PostgreSQL database
  • SMTP email server

Installation

  1. Clone the repository:
git clone <repository-url>
cd prominence-bank-platform
  1. Install dependencies:
pnpm install
  1. Set up environment variables:
cp .env.example .env

Edit .env with your configuration:

DATABASE_URL="postgresql://username:password@localhost:5432/prominence_bank"
NEXTAUTH_SECRET="your-secret-key"
NEXTAUTH_URL="http://localhost:3000"

# Email SMTP
SMTP_HOST="smtp.gmail.com"
SMTP_PORT="587"
SMTP_USER="your-email@gmail.com"
SMTP_PASS="your-app-password"
SMTP_FROM="noreply@prominencebank.com"
  1. Set up the database:
npx prisma generate
npx prisma db push
  1. Seed initial data (optional):
npx prisma db seed
  1. Start the development server:
pnpm dev

The application will be available at http://localhost:3000.

Database Schema

The system uses PostgreSQL with the following main entities:

  • Users: Authentication and role management
  • Customers: Customer profile information
  • Accounts: Banking accounts with balance tracking
  • Transactions: Financial transaction records
  • Deposits: Deposit processing with hold/release workflow
  • Holds: Account balance holds and restrictions
  • Instruments: Banking instruments (CD, SBLC, etc.)
  • Beneficiaries: Transfer beneficiaries
  • Settings: System configuration and fees

API Endpoints

Authentication

  • POST /api/auth/login - Request OTP for login
  • POST /api/auth/verify-otp - Verify OTP and authenticate

Admin APIs

  • GET/POST /api/admin/customers - Customer management
  • GET/POST /api/admin/accounts - Account management
  • GET/POST /api/admin/deposits - Deposit processing
  • GET/POST /api/admin/instruments - Instrument management
  • GET/POST /api/admin/settings - System settings

Customer APIs

  • GET /api/customer/accounts - Customer account information
  • GET /api/customer/transactions - Transaction history
  • GET /api/customer/instruments - Banking instruments

Deployment

Docker Deployment

# Build the application
docker build -t prominence-bank .

# Run with Docker Compose
docker-compose up -d

Environment Configuration

Ensure all environment variables are properly set for production:

  • Database connection string
  • SMTP configuration
  • JWT secrets
  • Next.js production settings

Security Considerations

  • All sensitive operations require OTP verification
  • Passwords are hashed using bcrypt
  • JWT tokens have expiration times
  • Audit logging for compliance
  • Role-based access control
  • Input validation and sanitization

Development

Project Structure

├── app/                    # Next.js app directory
│   ├── api/               # API routes
│   ├── admin/             # Admin pages
│   ├── dashboard/         # Customer portal
│   └── globals.css        # Global styles
├── components/            # Reusable components
├── lib/                   # Utility functions
├── prisma/                # Database schema
└── public/                # Static assets

Key Components

  • Authentication: Email OTP system
  • Balance Management: Available vs in-transit balances
  • Instrument Processing: Dynamic instrument creation
  • Settings Management: Configurable system parameters

License

This project is proprietary software for Prominence Bank.

Support

For technical support or questions, please contact the development team.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages