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
- 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
- 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
- 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
- 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
- Node.js 18+
- PostgreSQL database
- SMTP email server
- Clone the repository:
git clone <repository-url>
cd prominence-bank-platform- Install dependencies:
pnpm install- Set up environment variables:
cp .env.example .envEdit .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"- Set up the database:
npx prisma generate
npx prisma db push- Seed initial data (optional):
npx prisma db seed- Start the development server:
pnpm devThe application will be available at http://localhost:3000.
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
POST /api/auth/login- Request OTP for loginPOST /api/auth/verify-otp- Verify OTP and authenticate
GET/POST /api/admin/customers- Customer managementGET/POST /api/admin/accounts- Account managementGET/POST /api/admin/deposits- Deposit processingGET/POST /api/admin/instruments- Instrument managementGET/POST /api/admin/settings- System settings
GET /api/customer/accounts- Customer account informationGET /api/customer/transactions- Transaction historyGET /api/customer/instruments- Banking instruments
# Build the application
docker build -t prominence-bank .
# Run with Docker Compose
docker-compose up -dEnsure all environment variables are properly set for production:
- Database connection string
- SMTP configuration
- JWT secrets
- Next.js production settings
- 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
├── 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
- Authentication: Email OTP system
- Balance Management: Available vs in-transit balances
- Instrument Processing: Dynamic instrument creation
- Settings Management: Configurable system parameters
This project is proprietary software for Prominence Bank.
For technical support or questions, please contact the development team.