This project is a collaboration between ukimsanov and rowflynnn. We have both contributed to its development.
This is a fully functional bank application to manage your transactions and transfers, check your balance and link your bank accounts.
This application is a project built following this guide.
- Next.js
- TypeScript
- Appwrite
- Plaid
- Dwolla
- React Hook Form
- Zod
- TailwindCSS
- Chart.js
- ShadCN
git clone https://github.com/ukimsanov/Banking-App.git
cd Banking-App npm installCreate a new file named .env at the root of your application and copy the following code to it:
#NEXT
NEXT_PUBLIC_SITE_URL=localhost:3000
#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=
NEXT_APPWRITE_KEY=
#PLAID
PLAID_CLIENT_ID=
PLAID_SECRET=
PLAID_ENV=sandbox
PLAID_PRODUCTS=auth,transactions,identity
PLAID_COUNTRY_CODES=US,CA
#DWOLLA
DWOLLA_KEY=
DWOLLA_SECRET=
DWOLLA_BASE_URL=https://api-sandbox.dwolla.com
DWOLLA_ENV=sandboxThis app requires connections to Plaid, Dwolla, and Appwrite.
- Navigate to Plaid and create an account
- Navigate to the keys section
- Copy
client_idand paste it in.envasPLAID_CLIENT_ID - Below this, in the secrets section, copy
sandboxand paste it in.envasPLAID_SECRET - Navigate to integrations and enable Dwolla integration
- Navigate to Dwolla Sandbox and create an account
- Navigate to the applications section
- Copy
KEYand paste it in.envasDWOLLA_KEY - Copy
SECRETand paste it in.envasDWOLLA_SECRET
- Navigate to Appwrite and create an account.
- Create a new Appwrite project.
- Copy the project ID next to your project's name and paste it in
.envasNEXT_PUBLIC_APPWRITE_PROJECT. - Create an API Key with access to all scopes.
- Copy the API Secret and paste it in
.envasNEXT_APPWRITE_KEY. - Navigate to Databases and create a database.
- Copy the database ID next to your database's name and paste it in
.envasAPPWRITE_DATABASE_ID. - Create a collection named
users. - Copy the collection ID and paste it in
.envasAPPWRITE_USER_COLLECTION_ID.
- type Email:
email, required - type String:
userId, size: 1000, required - type String:
dwollaCustomerUrl, size: 1000, required - type String:
dwollaCustomerId, size: 1000, required - type String:
firstName, size: 100, required - type String:
lastName, size: 100, required - type String:
address1, size: 100, required - type String:
city, size: 100, required - type String:
postalCode, size: 10, required - type String:
dateOfBrith, size: 100, required - type String:
ssn, size: 50, required - type String:
state, size: 50, required
- Create a collection named
transactions. - Copy the collection ID and paste it in
.envasAPPWRITE_TRANSACTION_COLLECTION_ID.
- type String:
name, size: 100, required - type String:
amount, size: 100, required - type String:
channel, size: 100, required - type String:
category, size: 100, required - type String:
senderId, size: 1000, required - type String:
receiverId, size: 1000, required - type String:
senderBankId, size: 1000, required - type String:
receiverBankId, size: 1000, required - type String:
email, size: 100, required (yes, String, not Email type)
- Create a collection named
banks. - Copy the collection ID and paste it in
.envasAPPWRITE_BANK_COLLECTION_ID.
- type String:
accountId, size: 1000, required - type String:
bankId, size: 1000, required - type String:
accessToken, size: 1000, required - type String:
fundingSourceUrl, size: 1000, required - type String:
shareableId, size: 1000, required - type Relationship:
userId, relationship: one-way, related collection:users, relation: many to one, on deleting: set NULL
npm run buildHost Site with Vercel
- Navigate to Vercel and create an account
- Add a new project
- Import your git repository
- Set
Framework PresettoNext.js - Copy entire
.envfile into environment variables - Deploy