- About
- Features
- Getting Started
- Technical Architecture
- Development
- Contributing
- Deployment and Release
- License
Taskly is a simple and intuitive task management tool built with Flutter. It provides a clean graphical interface for efficiently creating, organizing, and tracking tasks. Whether you're managing personal to-dos or team projects, Taskly helps you stay organized and focused.
- β Create, edit, and delete tasks with ease
- π Organize tasks into customizable lists
- π Set due dates with smart shortcuts
- π― Mark tasks as complete with visual feedback
- πΎ Automatic data persistence using SQLite
- π Cross-platform compatibility (Windows, macOS, Linux, Android, iOS, Web)
- π¨ Simple and clean user interface built with Material Design
- π State management with Provider
- π§© Modular architecture for easy maintainability
- π± Responsive design for different screen sizes
- Flutter 3.10.7 or later
- Dart 3.10.7 or later
- Git
- IDE (VS Code, Android Studio, or IntelliJ IDEA recommended)
-
Clone the repository
git clone https://github.com/jrtxio/taskly.git cd taskly-flutter -
Install dependencies
flutter pub get
flutter run -d chromeflutter run -d windowsflutter run -d macosflutter run -d linuxflutter run -d androidflutter run -d iosTaskly follows a modular architecture with clear separation of concerns:
- lib/: Main application code
-
interfaces/: Abstract interfaces for services and repositories
config_service_interface.dart: Configuration service interfacedatabase_service_interface.dart: Database service interfacelist_repository_interface.dart: List repository interfacetask_repository_interface.dart: Task repository interface
-
locator/: Dependency injection setup
service_locator.dart: GetIt service locator configuration
-
models/: Data models
app_error.dart: Application error handlingtask.dart: Task data modeltodo_list.dart: Todo list data model
-
providers/: State management providers
app_provider.dart: Application-wide state managementlist_provider.dart: Task list state managementtask_provider.dart: Task state management
-
repositories/: Data access layer
list_repository.dart: Task list repository implementationtask_repository.dart: Task repository implementation
-
screens/: UI screens
main_screen.dart: Main application screenwelcome_screen.dart: Welcome/onboarding screen
-
services/: Core services
config_service.dart: Configuration servicedatabase_service.dart: SQLite database service
-
utils/: Utility functions
path_utils.dart: File path utilities
-
widgets/: Reusable UI components
list_navigation.dart: List navigation widgettask_list_view.dart: Task list view widget
-
main.dart: Application entry point
-
- User interacts with UI widgets
- Widgets trigger state changes in providers
- Providers call repositories for data operations
- Repositories use services for database access
- Database changes are reflected back to providers
- Providers update the UI widgets
- All data is automatically persisted
Taskly uses SQLite for data persistence with a simple schema:
-- Lists table
CREATE TABLE IF NOT EXISTS lists (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
created_at TEXT NOT NULL
);
-- Tasks table
CREATE TABLE IF NOT EXISTS tasks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT,
due_date TEXT,
completed INTEGER DEFAULT 0,
list_id INTEGER,
created_at TEXT NOT NULL,
FOREIGN KEY (list_id) REFERENCES lists(id)
);Taskly has a comprehensive test suite to ensure functionality works as expected:
# Run all tests
flutter test
# Run specific test files
flutter test test/services/config_service_test.dart
flutter test test/services/database_service_test.dart- All code follows Flutter's style guide
- Modules are designed to be independent and testable
- Uses Provider for state management
- Uses GetIt for dependency injection
- Follows clean architecture principles
- Comments are used to explain complex logic
- Use Flutter's built-in debugger for UI applications
- Enable verbose logging for database operations
- Test core functionality in isolation before UI integration
- Use
print()ordebugPrint()for quick debugging output - Use Flutter DevTools for performance profiling
Contributions are welcome! Whether you're reporting bugs, suggesting new features, or submitting code changes, we appreciate your help.
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Make your changes
- Run the test suite to ensure everything works
- Commit your changes with a descriptive message
- Push to the branch (
git push origin feature/your-feature) - Open a pull request
- All changes must pass the test suite
- Code must follow the project's style guide
- Changes should be focused and minimal
- Add tests for new functionality
- Write clear commit messages
-
Web
flutter build web
-
Windows
flutter build windows
-
macOS
flutter build macos
-
Linux
flutter build linux
-
Android
flutter build apk
-
iOS
flutter build ios --release
- Releases are managed through GitHub Releases
- Version numbers follow semantic versioning (MAJOR.MINOR.PATCH)
- Release notes are generated from commit messages
Taskly is licensed under the MIT License. See the LICENSE file for details.
Built with β€οΈ using Flutter