- SmartAccount About 📜
- SmartAccount Requirements 📑
- SmartAccount Access 🔧
- SmartAccount Inner Workings ⚙️
- SmartAccount Recognition ✨
- SmartAccount Future Developments ☑️
Do you need to manage your finances? SmartAccount is an application that allows users to manage and track finances through real-world banking accounts. With this application, you can view details about your balance, income, and expenses—such as the amount, category, date of each transaction, and more!
Each bank account you create will be stored on our server, hosted by Appwrite. Appwrite ensures the authenticity and secure transmission of account information.
This software meets the requirements illustrated in the guidelines here: FBLA GUIDELINES
- The application should be easily accessible and usable for the user.
- Application has intuitive and manageable user interfaces.
- The application should have features detailed in the requirements.
- Application can validate user input, provide bank account information, filter categorized information, and has other options.
- The application should store data that the user provides.
- Application securely stores data on our Appwrite server.
This application is structured in the following steps:
- The user generates an account or authenticates themself.
- The user integrates their bank account into the application.
- Information is exchanged between the user and application securely and cannot be viewed by others, including the development team.
- The user can view their transactions and manage bank accounts.
Below are example environment variables used in the application and their specific use case:
#NEXT
NEXT_PUBLIC_SITE_URL="https://smartaccount-fbla.vercel.app/" // Site for deployment
#APPWRITE
NEXT_PUBLIC_APPWRITE_ENDPOINT="https://cloud.appwrite.io/v1" // Site for Appwrite endpoint fetching
NEXT_PUBLIC_APPWRITE_PROJECT="<>" // ID for this application in Appwrite
APPWRITE_DATABASE_ID="<>" // ID for database
APPWRITE_USER_COLLECTION_ID="<>" // ID for user data
APPWRITE_BANK_COLLECTION_ID="<>" // ID for bank data
APPWRITE_TRANSACTION_COLLECTION_ID="<>" // ID for transaction data
NEXT_APPWRITE_KEY="<>" // Private key for Appwrite and client communication
#PLAID
PLAID_CLIENT_ID="<>" // ID for this application in Plaid
PLAID_SECRET="<>" // Secret for this application in Plaid
PLAID_ENV="sandbox" // Development type for Plaid { sandbox, development, production }
PLAID_PRODUCTS="auth,transactions,identity" // Product types for client
PLAID_COUNTRY_CODES="US,CA" // Banks within countries codes
#DWOLLA
DWOLLA_KEY="<>" // Private key for Dwolla and Plaid communication
DWOLLA_SECRET="<>" // Secret for this application in Dwolla
DWOLLA_BASE_URL="https://api-sandbox.dwolla.com" // Site for Dwolla endpoint fetching
DWOLLA_ENV="sandbox" // Development type for Dwolla { sandbox, production }
Below is a simplified diagram of what the application looks like logically:
We used the following applications for our project:
Nextjs: The framework of the application.
Shadcn: Provided useful UI components.
TailwindCSS: Provided Pre-defined CSS classes for Shadcn.
Chartjs: Library that the application used for its charts.
Appwrite: The database of the application for user data.
Sentry: A developer analytics tools for debugging.
Vercel: Our hosting platform for our application.
Plaid: Third-party component in the application for integrating real-world banks.
Dwolla: Used by Plaid to access user information for the banks.
Tutorial by JavaScript Mastery: https://www.youtube.com/watch?v=PuOVqP_cjkE
- Improve Resource Loading and Processing Management
- Create a Q&A
- Downloadable Report
- More Customization
- Go into Production