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.
- 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
- 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 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
- 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
- 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
- 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
- Framework: Next.js 14 with App Router
- Language: TypeScript for type safety
- Styling: Tailwind CSS for responsive design
- UI Components: Radix UI for accessibility
- Icons: Lucide React for consistent iconography
- Forms: React Hook Form with Zod validation
- Database: Appwrite for backend services
- Banking API: Plaid for bank connectivity
- Payment Processing: Dwolla for money transfers
- Error Monitoring: Sentry for application monitoring
- Package Manager: npm
- Code Quality: ESLint for code linting
- Charts: Chart.js with React wrapper
- Animation: React CountUp for number animations
- Node.js 18+
- npm or yarn
- Plaid account (for banking integration)
- Appwrite account (for backend services)
- Dwolla account (for payment processing)
-
Clone the repository
git clone https://github.com/your-username/nu-bank.git cd nu-bank -
Install dependencies
npm install
-
Environment Setup
Create a
.env.localfile 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
-
Run the development server
npm run dev
-
Open your browser
Navigate to http://localhost:3000
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
- Create a Plaid account
- Get your Client ID and Secret keys
- Configure allowed redirect URIs
- Set up webhooks for real-time updates
- Create an Appwrite project
- Set up database collections for users, banks, and transactions
- Configure authentication methods
- Generate API keys with appropriate permissions
- Register for Dwolla
- Obtain API credentials
- Configure sandbox/production environments
- Set up webhook endpoints
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLint
GET /api/bank/link-token- Create Plaid link tokenPOST /api/bank/add-funding-source- Add bank accountGET /api/debug/get-account- Get account details
POST /api/dwolla/transfer-status- Check transfer statusPOST /api/dwolla/poll- Poll transfer updatesPOST /api/dwolla/reconcile- Reconcile transfers
- Integrated with Plaid for real-time transaction sync
- Custom transfer tracking via Appwrite
- 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
π https://banking-system-theta-eight.vercel.app/sign-in
- Connect your GitHub repository to Vercel
- Configure environment variables in Vercel dashboard
- Deploy with automatic CI/CD
The application can be deployed on any platform supporting Next.js:
- Netlify
- AWS Amplify
- DigitalOcean App Platform
- Railway
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow TypeScript best practices
- Use ESLint for code quality
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
- Plaid for banking infrastructure
- Appwrite for backend services
- Dwolla for payment processing
- Next.js team for the amazing framework
- Tailwind CSS for the utility-first CSS framework
For support and questions:
- Create an issue
- Email: a.mohamed2350@nu.edu.eg
- Documentation: NU Bank Final Repo.pdf
Built with β€οΈ by the NU Bank Team