A comprehensive Flutter mobile kit monorepo with 11 modular packages and 200+ production-ready widgets
Documentation β’ Getting Started β’ Contributing β’ Widgetbook
hexaMobileShare is a production-ready Flutter mobile kit monorepo designed to accelerate cross-platform mobile app development. It provides 11 specialized kits with modular widgets, services, and utilities built with modern Flutter best practices.
- π¦ 11 Modular Kits β Analytics, Auth, Core UI, Data, Forms, Localization, Media, Monetization, Navigation, Notifications, Storage
- π¨ Material Design 3 β Beautiful, themeable widgets following Material Design 3 guidelines
- π Widgetbook Integration β Interactive component catalog with 218 story files (Live Preview)
- π Type-Safe β Leveraging Dart's strong type system
- βΏ Accessibility-First β Built with screen readers and inclusive design in mind
- π Production-Ready β Tested, documented, and optimized for performance
- π Internationalization β Built-in i18n support with localization_kit
- π§ͺ Well-Tested β Comprehensive unit and widget tests
- π± Cross-Platform β Works seamlessly on iOS, Android, Web, macOS, Linux, and Windows
The monorepo contains 11 specialized kits organized for maximum modularity:
| Package | Description | Key Features |
|---|---|---|
| analytics_kit | Analytics, logging, feature flags | Event tracking, screen analytics, logger, feature toggles |
| auth_kit | Authentication & authorization | OAuth, JWT, biometric auth, session management |
| core_kit | Core UI widgets & theming | Buttons, layout, typography, Material Design 3 theme |
| data_kit | HTTP client & API handling | REST client, pagination, error mapping, retry policies |
| forms_kit | Form management & validation | Form controllers, validators, custom form fields |
| localization_kit | Internationalization (i18n) | Multi-language support, translation management |
| media_kit | Media handling | Audio/video players, image pickers, camera integration |
| monetization_kit | In-app purchases & subscriptions | IAP handling, subscription management, payment flows |
| navigation_kit | Routing & deep linking | Declarative routing, deep links, navigation guards |
| notifications_kit | Push & local notifications | Firebase Cloud Messaging, local notifications, badges |
| storage_kit | Local storage & caching | Secure storage, key-value store, database abstraction |
| Tool | Description |
|---|---|
| widgetbook_kit | Interactive component catalog with 218 stories (Live Preview) |
- Flutter SDK 3.x+ (Install Flutter)
- Dart SDK 3.x+
- Node.js 18+ and pnpm 9+:
npm install -g pnpm # Verify pnpm --version
-
Clone the repository:
git clone https://github.com/hTuneSys/hexaMobileShare.git cd hexaMobileShare -
Install dependencies (installs Node.js dependencies and bootstraps all Flutter packages):
pnpm install
This will automatically:
- Install Node.js dependencies (Husky, Commitlint)
- Bootstrap all Flutter packages via Melos
- Setup Git hooks for commit validation
-
Run Widgetbook (explore components interactively):
pnpm storybook
Opens at http://localhost:8080
Live Preview: https://story.mobile.dev.hexatune.com
Add individual kits to your Flutter project:
# pubspec.yaml
dependencies:
core_kit:
git:
url: https://github.com/hTuneSys/hexaMobileShare.git
path: packages/core_kit
auth_kit:
git:
url: https://github.com/hTuneSys/hexaMobileShare.git
path: packages/auth_kitNote: Packages will be published to pub.dev in the future for easier installation.
import 'package:core_kit/core_kit.dart';
import 'package:flutter/material.dart';
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
Gap(height: 16), // From core_kit/layout
ResponsivePadding( // From core_kit/layout
child: Text('Welcome to hexaMobileShare!'),
),
],
),
);
}
}import 'package:forms_kit/forms_kit.dart';
final formController = FormController(
fields: {
'email': FormFieldConfig(
validators: [EmailValidator(), RequiredValidator()],
),
'password': FormFieldConfig(
validators: [PasswordValidator(minLength: 8), RequiredValidator()],
),
},
);
// In your widget
AppForm(
controller: formController,
onSubmit: (values) {
print('Form submitted: $values');
},
child: Column(
children: [
FormFieldWrapper(name: 'email'),
FormFieldWrapper(name: 'password'),
],
),
);import 'package:data_kit/data_kit.dart';
final apiClient = ApiClient(baseUrl: 'https://api.example.com');
// Fetch paginated data
final paginationController = PaginationController<User>(
fetchPage: (page) async {
final result = await apiClient.get('/users?page=$page');
return PaginatedResponse.fromJson(result.data);
},
);
// In your widget
PagedListView(
controller: paginationController,
itemBuilder: (context, user, index) => UserListItem(user: user),
);# Install dependencies and bootstrap all packages
pnpm install
# Run tests across all packages
pnpm test
# Run static analysis
pnpm analyze
# Format all Dart code
pnpm format
# Auto-fix formatting issues
pnpm format:fix
# Clean build artifacts
pnpm clean
# Run Widgetbook in Chrome (web)
pnpm storybook
# or
pnpm widgetbook:web
# Build Widgetbook for deployment
pnpm build-storybook
# or
pnpm widgetbook:buildRun the same checks that CI runs to catch issues early:
# Run all CI checks locally (recommended before push)
pnpm ci:local
# Or run checks individually:
pnpm ci:format # Check code formatting
pnpm ci:analyze # Run static analysis
pnpm ci:test # Run all testsNote: A pre-push Git hook automatically runs pnpm ci:local before every push. If any check fails, the push will be blocked. To fix formatting issues quickly, run pnpm format:fix.
# Navigate to a specific package and run Flutter commands
cd packages/core_kit
flutter test
flutter pub add provider
# Or use Melos directly for scoped operations
melos run core:analyze
melos exec --scope="auth_kit" -- flutter testComprehensive documentation is available in the docs/ directory:
- Getting Started Guide β Setup, installation, quick start
- FAQ β Frequently asked questions
- Architecture β System design, widget architecture, technology stack
- Project Structure β Directory organization, file layout
- Configuration β Configuration files and settings
- Widgetbook Deployment β GitHub Pages deployment guide
- Development Guide β Workflow, best practices, tooling
- Contributing Guide β How to contribute code, docs, issues
- Style Guide β Code formatting, naming conventions
- Branch Strategy β Branch naming, Git flow
- Commit Strategy β Conventional Commits format
- PR Strategy β Pull request guidelines, review process
- Labelling Strategy β Issue/PR labels
- Code of Conduct β Community behavior guidelines
- Support β How to get help
- Security β Security policy, vulnerability reporting
- AGENTS.md β Guidelines for AI agents contributing to the project
We welcome contributions from the community! Here's how to get started:
- Read the Contributing Guide
- Check out open issues
- Fork the repository and create a feature branch:
git checkout -b feat/my-new-feature
- Make your changes following our Style Guide
- Write tests and ensure they pass:
pnpm test - Commit using Conventional Commits:
(Husky will automatically validate your commit message format)
git commit -m "feat(core-kit): add new button variant" - Push and create a pull request following our PR Strategy
- β All code and documentation must be in English only (see AGENTS.md)
- β Follow Conventional Commits format for commit messages
- β Include SPDX license headers in all source files (REUSE compliance)
- β Write tests for new features
- β Update documentation and Widgetbook stories as needed
- β
Ensure CI checks pass before requesting review
- Run
pnpm ci:localto verify all checks locally - Pre-push hook automatically validates before push
- Run
Run tests across all packages:
# Run all tests
pnpm test
# Run tests with coverage (via Melos)
melos exec -- flutter test --coverage
# Run tests for a specific package
cd packages/auth_kit && flutter test- β REUSE Compliant β All 912 files have proper SPDX licensing
- β CI/CD Pipeline β Automated testing, formatting, analysis, and builds
- β Widgetbook Integration β 218 interactive component stories (Live Preview)
- β Comprehensive Documentation β 20+ documentation files
- π§ Active Development β New kits and features in progress
This project is licensed under the MIT License β see the LICENSE file for details.
All source files include SPDX headers for REUSE compliance:
// SPDX-FileCopyrightText: 2025 hexaTune LLC
// SPDX-License-Identifier: MIT- Documentation: docs/SUMMARY.md
- GitHub Repository: hTuneSys/hexaMobileShare
- Issues: Report bugs or request features
- Discussions: GitHub Discussions
- Website: hexatune.com
- Email: info@hexatune.com
Built with β€οΈ by hexaTune LLC
Special thanks to the Flutter community and all contributors who make this project possible.