Skip to content

CodeAPretzel/FBLA-2025-Coding-and-Programming

Repository files navigation

- SmartAccount -


|       Kyle Smith and Bradin Gentry       |


SmartAccount Logo



 VISIT APPLICATION



 GO TO DOCUMENTATION 



Documentation



SmartAccount About 📜

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.



    SmartAccount Requirements 📑

    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.


    SmartAccount Inner Workings ⚙️

    This application is structured in the following steps:

    1. The user generates an account or authenticates themself.
    2. The user integrates their bank account into the application.
    3. Information is exchanged between the user and application securely and cannot be viewed by others, including the development team.
    4. 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:

    SmartAccount Logo



    SmartAccount Recognition ✨

    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



    SmartAccount Future Developments ☑️

    • Improve Resource Loading and Processing Management
    • Create a Q&A
    • Downloadable Report
    • More Customization
    • Go into Production