Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gianmen91/expatrio_tax_data_management
Flutter app designed to streamline the process of managing tax residency information for users. It encompasses a set of features including a user-friendly login page, a dedicated screen with a prominent Call-to-Action (CTA) for updating tax data, and a convenient bottom sheet for seamless input and editing of tax-related information.
https://github.com/gianmen91/expatrio_tax_data_management
dart flutter tax widget widget-testing
Last synced: about 1 month ago
JSON representation
Flutter app designed to streamline the process of managing tax residency information for users. It encompasses a set of features including a user-friendly login page, a dedicated screen with a prominent Call-to-Action (CTA) for updating tax data, and a convenient bottom sheet for seamless input and editing of tax-related information.
- Host: GitHub
- URL: https://github.com/gianmen91/expatrio_tax_data_management
- Owner: GianMen91
- Created: 2024-01-25T09:19:59.000Z (11 months ago)
- Default Branch: master
- Last Pushed: 2024-06-15T15:16:53.000Z (6 months ago)
- Last Synced: 2024-06-15T16:42:26.081Z (6 months ago)
- Topics: dart, flutter, tax, widget, widget-testing
- Language: Dart
- Homepage:
- Size: 20.9 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Expatrio Tax Data Management App
## Overview
Welcome to the Expatrio Tax Data Management App! This Flutter application is designed to streamline the process of managing tax residency information for users. It encompasses a set of features including a user-friendly login page, a dedicated screen with a prominent Call-to-Action (CTA) for updating tax data, and a convenient bottom sheet for seamless input and editing of tax-related information.
## Screenshots
## Features
1. **Login Screen**: A secure login page (with Expatrio authentication) that ensures users can access their tax-related information with confidence.
2. **Tax Data Screen**: After a successful login, the user is redirect in the Tax Data Screen, a screen with a prominent CTA to update his TAX DATA. When the user clicks on the "UPDATE YOUR TAX DATA" button, a bottom sheet open, prompting the user to input their tax data.
3. **Tax Form Widget**: A flexible widget that facilitates the input of tax residency information, allowing users to efficiently manage their primary and secondary tax residences.
- Via API call data is received and to pre-populate existing fields. Here the user can select a country from a list and also allow the user to input a TAX ID number for the field. A user can select multiple taxation countries by clicking the "ADD ANOTHER" button.
- A verification is applied so that the user is not able to choose a previously selected country.
- The user can also remove any additional countries by clicking on the "REMOVE" button. A verification is made so that by default, the user must have at least one country/tax pair available.
- The user is forced to check a checkbox verifying the accuracy of their information before being able to submit their tax data.
- The tax data is stored locally for the user’s ID and pushed to the backend via API call.
4. **Country Dropdown Widget**: A reusable widget for searching and selecting countries, ensuring a standardized and user-friendly approach across the application.
5. **Search Box Widget**: A search box that enhances the user's ability to find specific information quickly, improving overall usability.## Technologies Used
- **Flutter**: A powerful UI toolkit for building natively compiled applications for mobile, web, and desktop from a single codebase.
- **Lottie**: An animation library for Flutter that enables the use of After Effects animations in the app.
- **URL Launcher**: A Flutter plugin for launching URLs, providing a convenient way to open links in the default web browser.
- **HTTP**: A Dart package for making HTTP requests, facilitating communication with remote APIs.
- **Flutter Secure Storage**: A Flutter plugin for securely storing key-value pairs, ensuring sensitive data is stored safely.
- **Flutter SVG**: A Flutter plugin for rendering SVG images, offering scalable and resolution-independent graphics.
- **Flutter Lints**: A set of recommended lint rules for Flutter projects, ensuring good coding practices.
- **Flutter Test**: The Flutter testing package for writing unit and widget tests, ensuring the reliability of the codebase.
- **Flutter Shake My Widget**: A Flutter package for adding shake animations to widgets, enhancing the user interface with visual feedback.
- **Path**: A Dart package providing common operations for manipulating file paths.This project follows the best practices and coding standards outlined by the lint rules, ensuring clean, maintainable, and efficient code.
## Folder Structure
The project is organized following best practices to enhance maintainability and readability:
- **lib/src/screens**: Contains screen implementations (e.g., `login.dart`, `tax_data_screen.dart`).
- **lib/widgets**: Holds various reusable widgets used across the application (e.g., `country_dropdown.dart`, `search_box.dart`).
- **lib/models**: Houses data models (e.g., `tax_residence.dart`, `item_dropdown.dart`).
- **lib/services**: Includes service classes responsible for handling data retrieval and manipulation (e.g., `tax_data_service.dart`).
- **lib/shared**: Consists of shared constants and configurations (e.g., `constants.dart`, `countries_constants.dart`).
- **lib/main.dart**: The entry point of the application.## Responsiveness
The app is designed to work seamlessly across various screen sizes, providing a consistent and enjoyable experience on both small and large devices.
## Getting Started
Follow these steps to run the application locally:
1. Clone this repository to your local machine.
```bash
git clone https://github.com/GianMen91/expatrio_coding_challenge.git```
2. Navigate to the project directory.
```bash
cd expatrio_coding_challenge
```3. Run the application.
```bash
flutter run
```### Potential Improvements
1. **Localization**: Implement localization to support multiple languages.
2. **Testing**: Add more tests for robust and reliable code.
3. **Error Handling**: Strengthen error handling mechanisms to provide users with meaningful feedback in case of unexpected scenarios.
4. **Firebase Integration**: Explore integrating tools like Crashlytics for proactive crash reporting and real-time monitoring, enhancing overall app stability and user experience.