This project was developed to learn more about Flutter and implement an electronic time clock app that communicates with a REST API. The app is cross-platform, working on Android, iOS, and Desktop.
- Time Clock: Users can clock in and out directly from the app.
- REST API Integration: The app communicates with an API to log the clock entries, ensuring synchronization across devices.
- Supported Platforms: Android, iOS, and Desktop (Windows, Linux, macOS).
- Flutter: The main framework for cross-platform development.
- Dart: The programming language used with Flutter.
- REST API: For communication between the app and the backend.
- SQLite / SharedPreferences: For local storage on the device.
Before running the project, ensure you have the following installed on your machine:
-
Flutter: For mobile and desktop app development.
- Follow the official Flutter installation guide to install Flutter on your machine.
-
Android Studio or VS Code: To edit the code and run the app on Android.
-
Xcode (only for iOS): If you're developing for iOS, you will need Xcode, available only on macOS.
-
Clone the repository:
git clone https://github.com/your-username/electronic-time-clock.git cd electronic-time-clock
-
Open the project in your preferred code editor (Android Studio or VS Code).
-
Install the dependencies:
flutter pub get
-
Connect an Android/iOS device or use an emulator/simulator.
-
Run the project:
flutter run
-
Clone the repository:
git clone https://github.com/your-username/electronic-time-clock.git cd electronic-time-clock
-
Open the project in your code editor.
-
Install the dependencies:
flutter pub get
-
Run the project on your desktop:
flutter run -d windows # For Windows flutter run -d macos # For macOS flutter run -d linux # For Linux
-
lib/
: Contains the main Dart files of the app.main.dart
: The entry point of the app.screens/
: Contains the main screens of the app.services/
: Contains the services for API communication.models/
: Contains the model classes for the data the app uses.
-
assets/
: Contains images and other resources used by the app.
This project uses several libraries to implement its features:
- Usage: This library is used to handle time zone conversion, ensuring that time entries are logged with the correct time zone information.
- Usage: The main SDK for developing cross-platform applications with Flutter, providing all necessary tools and widgets.
- Usage: Provides icons for iOS-style applications.
- Usage: Used to make HTTP requests to the REST API for logging time entries.
- Usage: A flexible and customizable map widget that allows the display of maps in the app.
- Usage: Used in conjunction with
flutter_map
to handle geographical coordinates (latitude and longitude) for location-based features.
- Usage: Used to access the device's location to record the GPS coordinates during clock-in and clock-out actions.
- Usage: Provides platform-specific code for handling Android, iOS, and desktop behaviors.
- Usage: A powerful HTTP client for making network requests with additional features like interceptors, global configuration, and more.
- Usage: Used for running system processes and commands, particularly useful for platform-specific tasks that may require external scripts or commands.
- Usage: Used to store simple key-value pairs locally on the device, such as user preferences or last logged time.
- Usage: Used to check the device's network connectivity status to handle cases where the app needs to synchronize data when online.
If you'd like to contribute to this project, follow these steps:
- Fork the repository.
- Create a branch for your feature (
git checkout -b feature/feature-name
). - Commit your changes (
git commit -am 'Add new feature'
). - Push to the remote repository (
git push origin feature/feature-name
). - Open a Pull Request.
This project was developed by Henrique Biondo Nicolli Soares.
Feel free to reach out for collaboration or questions regarding the project!
- GitHub: henriquenicolli
- Email: henrique.nicolli@gmail.com
- LinkedIn: Henrique Biondo Nicolli Soares