Student: Surya Vamsi Kalaga
Roll No: IMT2020552
Date: December 9, 2023
TrackExp is a Flutter-based mobile application designed for seamless financial management. Users can securely log in or sign up using email/password or OAuth authentication via Google and Facebook. The primary focus is on transaction management, allowing users to view and add transactions based on selected days. Additionally, users can link their accounts with Email, Google, or Facebook for a personalized and integrated experience.
https://drive.google.com/file/d/1-Df6YOaJSWQPEnWc5EbXbb2Q7yBlaISN/view?usp=sharing
OAuth (Open Authorization) is a crucial aspect of the project, enabling users to grant limited access to their resources securely. The key objectives of OAuth include secure authentication, user control over resource access, and standardization for application developers.
Authorization Flow:
- Client Registration: Application registers with the OAuth provider to obtain Client ID and Client Secret.
- Authorization Request: Client requests user authorization from the authorization server with Client ID and permissions.
- User Authorization: User accepts permissions, and the authorization server sends a code to the client.
- Token Request: Client sends Client ID, Client Secret, and authorization code to the Authorization server, receiving an Access Token.
- Access Token: Time-bound key for accessing user data.
The goal is to create an Android application for tracking daily and monthly expenses. Users can sign in using email, Google, or Facebook accounts. The app includes pages for sign-up, login, adding expenses, viewing details and monthly expenses, and a profile page with options to link accounts and log out.
- Sign Up Page: Collects user information (Name, Email, Password).
- Login Page: Supports email, Google, and Facebook login via OAuth.
- Expense Adding Page: Allows users to add expenses with details.
- View Details and Monthly Expenses: Displays a calendar for selecting dates and viewing transaction details.
- Profile Page: Shows user's name, total expenditure for the current month, and options to link accounts or log out.
-
Google:
- Enable Google Sign-In API.
- Generate OAuth client IDs.
- Set up consent screen and specify scopes.
- Enable Google sign-in method in Firebase console.
-
Facebook:
- Create a developer account on the Facebook developer website.
- Create a new app and provide package name.
- Use App ID and App Secret.
- Enable Facebook sign-in method in Firebase console.
-
Linking Multiple Providers:
- Sign in through one provider, get a unique user identifier.
- AuthCredentials linked to the UUID of the existing user.
- Users can use any provider to log in.
Run the following command to get the required dependencies:
flutter pub get
Ensure that USB debugging is enabled on your Android device. For instructions, refer to the Android Developer Documentation.
Connect your Android device to your computer and run the app using the following command:
flutter run
This will build the app and install it on your connected Android device.
To build the standalone APK of the application, use the following command:
flutter build apk
- Flutter SDK: Software development kit for building Flutter applications.
- IDE: Visual Studio Code or IntelliJ IDEA with Dart and Flutter plugins.
- Firebase SDK: Integration of Firebase services into the app.
- Dart: Programming language for Flutter app development.
- Emulators and Simulators: Android Emulator for testing the application.
- Connect your phone to USB and enable developer options for testing on a physical device.