Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lightningfz/banking-app

Surge is a modern banking platform for everyone
https://github.com/lightningfz/banking-app

appwrite banking chartjs fintech nextjs plaid typescript

Last synced: 2 months ago
JSON representation

Surge is a modern banking platform for everyone

Awesome Lists containing this project

README

        

Here's how you can narrate this for your README as if you built "Surge," based on the template you provided:

---

# Surge

Surge is a powerful financial SaaS platform built using **Next.js**, designed to give users full control over their finances by connecting to multiple bank accounts. It allows users to view transactions in real-time, manage their finances, and transfer money securely to other platform users. Surge combines cutting-edge technology with a seamless user experience to help users manage their financial life effortlessly.

## ⚙️ Tech Stack

- **Next.js**: Core framework for building the front-end and back-end of the platform.
- **TypeScript**: Provides strong type definitions to improve code reliability.
- **Appwrite**: Back-end server handling authentication, user management, and database.
- **Plaid**: Enables seamless bank integration and real-time transaction tracking.
- **Dwolla**: Powers secure fund transfers between platform users.
- **React Hook Form**: Simplifies form management and validation.
- **Zod**: Schema validation library used for ensuring data integrity.
- **TailwindCSS**: Utility-first CSS framework for designing responsive layouts.
- **Chart.js**: Utilized for visualizing financial data through dynamic charts.
- **ShadCN**: Provides a comprehensive component library for styling and UI elements.

## 🔋 Features

- **Authentication**: Implements ultra-secure SSR authentication with robust validation and authorization mechanisms.
- **Connect Banks**: Links to multiple bank accounts through Plaid for real-time transaction data and balance updates.
- **Home Page Overview**: Displays a total account balance from all connected banks, recent transactions, categorized spending, and more.
- **My Banks**: Lists all connected banks with individual account details and balances.
- **Transaction History**: Users can view detailed transaction history with pagination and filtering options for specific accounts or date ranges.
- **Real-time Updates**: Reflects changes across all relevant pages when new accounts are linked, ensuring up-to-date information across the platform.
- **Funds Transfer**: Facilitates user-to-user fund transfers using Dwolla, with secure input fields for recipient bank details.
- **Responsiveness**: Ensures a smooth experience across desktop, tablet, and mobile, adjusting the layout for different screen sizes.

## 🤸 Quick Start

### Prerequisites

Before starting, ensure you have the following installed:

- Git
- Node.js
- npm (Node Package Manager)

### Cloning the Repository

```bash
git clone https://github.com/your-username/surge.git
cd surge
```

### Installation

Install the project dependencies:

```bash
npm install
```

### Set Up Environment Variables

Create a `.env` file in the root directory and add the following content:

```bash
#NEXT
NEXT_PUBLIC_SITE_URL=

#APPWRITE
NEXT_PUBLIC_APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1
NEXT_PUBLIC_APPWRITE_PROJECT=
APPWRITE_DATABASE_ID=
APPWRITE_USER_COLLECTION_ID=
APPWRITE_BANK_COLLECTION_ID=
APPWRITE_TRANSACTION_COLLECTION_ID=
APPWRITE_SECRET=

#PLAID
PLAID_CLIENT_ID=
PLAID_SECRET=
PLAID_ENV=
PLAID_PRODUCTS=
PLAID_COUNTRY_CODES=

#DWOLLA
DWOLLA_KEY=
DWOLLA_SECRET=
DWOLLA_BASE_URL=https://api-sandbox.dwolla.com
DWOLLA_ENV=sandbox
```

Make sure to replace the placeholder values with your actual credentials, which can be obtained by signing up on Appwrite, Plaid, and Dwolla.

### Running the Project

To start the development server, run:

```bash
npm run dev
```

Then open [http://localhost:3000](http://localhost:3000) in your browser to access the platform.

---

This setup showcases the key aspects of the app and provides detailed instructions for installation and running the project.