Skip to content

BankingSystemOrg/Banking-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏦 NU Bank - Modern Banking Platform

Next.js TypeScript Tailwind CSS License CI

NU Bank is a modern, full-featured banking platform that provides users with seamless account management, real-time transaction monitoring, and secure payment processing. Built with cutting-edge technologies and following industry best practices.

✨ Features

🏠 Dashboard & Overview

  • Real-time Balance Display: Animated counters showing total balance across all connected accounts
  • Account Summary: Quick overview of all linked bank accounts with current balances
  • Recent Transactions: Live feed of recent banking activities
  • Responsive Design: Optimized for desktop, tablet, and mobile devices

🏦 Bank Account Management

  • Multi-Bank Connectivity: Connect multiple bank accounts via Plaid integration
  • Account Types Support: Checking, savings, credit cards, and more
  • Real-time Balance Sync: Automatic balance updates from connected institutions
  • Institution Details: Complete bank information and branding

πŸ’³ Transaction Management

  • Transaction History: Comprehensive view of all banking transactions
  • Real-time Sync: Automatic transaction updates from Plaid
  • Category Classification: Automatic transaction categorization
  • Advanced Filtering: Search and filter transactions by date, amount, or category
  • Payment Channel Tracking: Track transactions by payment method

πŸ”„ Payment Transfer

  • Secure Transfers: Safe money transfers between connected accounts
  • Dwolla Integration: Professional payment processing infrastructure
  • Transfer Status Tracking: Real-time transfer status updates
  • Transfer History: Complete record of all money transfers

πŸ” Security & Authentication

  • Secure Authentication: User authentication and session management
  • Data Encryption: All sensitive data encrypted in transit and at rest
  • Bank-level Security: Industry-standard security protocols
  • Error Monitoring: Sentry integration for real-time error tracking

πŸ“Š Analytics & Insights

  • Interactive Charts: Beautiful data visualizations using Chart.js
  • Balance Analytics: Visual representation of account balances
  • Spending Patterns: Insights into spending behavior
  • Real-time Updates: Live data updates without page refresh

πŸ› οΈ Technology Stack

Frontend

Backend & APIs

  • Database: Appwrite for backend services
  • Banking API: Plaid for bank connectivity
  • Payment Processing: Dwolla for money transfers
  • Error Monitoring: Sentry for application monitoring

Development Tools

  • Package Manager: npm
  • Code Quality: ESLint for code linting
  • Charts: Chart.js with React wrapper
  • Animation: React CountUp for number animations

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • npm or yarn
  • Plaid account (for banking integration)
  • Appwrite account (for backend services)
  • Dwolla account (for payment processing)

Installation

  1. Clone the repository

    git clone https://github.com/your-username/nu-bank.git
    cd nu-bank
  2. Install dependencies

    npm install
  3. Environment Setup

    Create a .env.local file in the root directory:

    # Plaid Configuration
    PLAID_CLIENT_ID=your_plaid_client_id
    PLAID_SECRET=your_plaid_secret
    PLAID_ENV=sandbox # or development/production
    
    # Appwrite Configuration
    NEXT_PUBLIC_APPWRITE_ENDPOINT=your_appwrite_endpoint
    NEXT_PUBLIC_APPWRITE_PROJECT_ID=your_appwrite_project_id
    APPWRITE_API_KEY=your_appwrite_api_key
    
    # Dwolla Configuration
    DWOLLA_KEY=your_dwolla_key
    DWOLLA_SECRET=your_dwolla_secret
    DWOLLA_ENVIRONMENT=sandbox # or production
    
    # Sentry Configuration
    SENTRY_DSN=your_sentry_dsn
    SENTRY_ORG=your_sentry_org
    SENTRY_PROJECT=your_sentry_project
  4. Run the development server

    npm run dev
  5. Open your browser

    Navigate to http://localhost:3000

πŸ“ Project Structure

Banking-system/
β”œβ”€β”€ app/                          # Next.js App Router
β”‚   β”œβ”€β”€ (auth)/                  # Authentication pages
β”‚   β”œβ”€β”€ (root)/                  # Main application pages
β”‚   β”‚   β”œβ”€β”€ my-banks/           # Bank management
β”‚   β”‚   β”œβ”€β”€ payment-transfer/   # Payment transfer
β”‚   β”‚   β”œβ”€β”€ transaction-history/ # Transaction history
β”‚   β”‚   └── page.tsx            # Dashboard home
β”‚   β”œβ”€β”€ api/                    # API routes
β”‚   β”‚   β”œβ”€β”€ bank/              # Banking operations
β”‚   β”‚   β”œβ”€β”€ dwolla/            # Payment processing
β”‚   β”‚   β”œβ”€β”€ plaid/             # Plaid integration
β”‚   β”‚   └── debug/             # Debug endpoints
β”‚   β”œβ”€β”€ global-error.jsx       # Global error boundary
β”‚   β”œβ”€β”€ layout.tsx             # Root layout
β”‚   └── globals.css            # Global styles
β”œβ”€β”€ components/                  # Reusable components
β”‚   β”œβ”€β”€ ui/                     # Base UI components
β”‚   β”œβ”€β”€ AuthForm.tsx           # Authentication
β”‚   β”œβ”€β”€ BankCard.tsx           # Bank account cards
β”‚   β”œβ”€β”€ DoughnutChart.tsx      # Data visualization
β”‚   β”œβ”€β”€ PaymentTransferForm.tsx # Transfer interface
β”‚   β”œβ”€β”€ RecentTransactions.tsx # Transaction display
β”‚   β”œβ”€β”€ Sidebar.tsx            # Navigation
β”‚   └── ...
β”œβ”€β”€ lib/                        # Utility libraries
β”‚   β”œβ”€β”€ actions/               # Server actions
β”‚   β”‚   β”œβ”€β”€ bank.actions.ts    # Banking operations
β”‚   β”‚   β”œβ”€β”€ user.actions.ts    # User management
β”‚   β”‚   β”œβ”€β”€ transaction.actions.ts # Transaction handling
β”‚   β”‚   └── dwolla.actions.ts  # Payment processing
β”‚   β”œβ”€β”€ appwrite.ts            # Appwrite configuration
β”‚   β”œβ”€β”€ plaid.ts               # Plaid client setup
β”‚   └── utils.ts               # Utility functions
β”œβ”€β”€ types/                      # TypeScript definitions
β”‚   └── index.d.ts             # Type declarations
β”œβ”€β”€ public/                     # Static assets
β”‚   └── icons/                 # Application icons
β”œβ”€β”€ constants/                  # Application constants
β”‚   └── index.ts               # Configuration constants
β”œβ”€β”€ package.json               # Dependencies
β”œβ”€β”€ tailwind.config.ts         # Tailwind configuration
β”œβ”€β”€ next.config.mjs            # Next.js configuration
└── tsconfig.json              # TypeScript configuration

πŸ”§ Configuration

Plaid Setup

  1. Create a Plaid account
  2. Get your Client ID and Secret keys
  3. Configure allowed redirect URIs
  4. Set up webhooks for real-time updates

Appwrite Setup

  1. Create an Appwrite project
  2. Set up database collections for users, banks, and transactions
  3. Configure authentication methods
  4. Generate API keys with appropriate permissions

Dwolla Setup

  1. Register for Dwolla
  2. Obtain API credentials
  3. Configure sandbox/production environments
  4. Set up webhook endpoints

πŸƒβ€β™‚οΈ Available Scripts

  • npm run dev - Start development server
  • npm run build - Build for production
  • npm run start - Start production server
  • npm run lint - Run ESLint

πŸ“– API Documentation

Banking Endpoints

  • GET /api/bank/link-token - Create Plaid link token
  • POST /api/bank/add-funding-source - Add bank account
  • GET /api/debug/get-account - Get account details

Payment Endpoints

  • POST /api/dwolla/transfer-status - Check transfer status
  • POST /api/dwolla/poll - Poll transfer updates
  • POST /api/dwolla/reconcile - Reconcile transfers

Transaction Endpoints

  • Integrated with Plaid for real-time transaction sync
  • Custom transfer tracking via Appwrite

πŸ”’ Security

  • Data Encryption: All sensitive data encrypted in transit and at rest
  • Secure Authentication: JWT-based authentication system
  • Bank-level Security: Industry-standard security protocols
  • Environment Isolation: Separate configurations for dev/staging/prod
  • Error Monitoring: Comprehensive error tracking and alerting

πŸš€ Deployment

πŸš€ Live Demo

πŸ‘‰ https://banking-system-theta-eight.vercel.app/sign-in

Vercel (Recommended)

  1. Connect your GitHub repository to Vercel
  2. Configure environment variables in Vercel dashboard
  3. Deploy with automatic CI/CD

Other Platforms

The application can be deployed on any platform supporting Next.js:

  • Netlify
  • AWS Amplify
  • DigitalOcean App Platform
  • Railway

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow TypeScript best practices
  • Use ESLint for code quality
  • Write meaningful commit messages
  • Add tests for new features
  • Update documentation as needed

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

πŸ“ž Support

For support and questions:


Built with ❀️ by the NU Bank Team

About

NU Bank is a modern banking platform for everyone. Banking system with Next.js 16, TypeScript, and Tailwind CSS

Topics

Resources

License

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •