The goal of this project is to create a toolbox mobile app with a lot of tools to help you in your daily life or just to have fun.
The app is developed to support both Android and iOS, no web or desktop support is planned.
Youn can download Toolbox on Android and iOS via the following links
If you want to contribute to this project, you can do it by adding new tools or by improving the existing ones.
You can also help by translating the app in your language.
Once you have finished, you can create a pull request and I will review it to add your changes to the app.
To build this project you need to have Flutter installed on your computer (it's very easy).
Then you can clone this repository and open the Flutter project with your IDE (e.g. Android Studio or Visual Studio Code).
Now, you have to create a new file called musicanalyzer.dart
in the lib/secret
folder (create it if it doesn't exist) and add the following code:
Future<String> getMusicAnalyzerApiToken(String audioFilePath) async {
return "TOKEN";
}
Future<String> getMusicAnalyzerApiKey() async {
return "KEY";
}
Before running the project, you need to run this command in the terminal (in the project folder):
flutter pub get
Finally you can run the project on your device, on an emulator or on a simulator.
Warning, some tools require an API key to work, if you want to use them while developing, you need to add your own API key in the api_keys.dart
file.
Warning, if you want to add a new tool, you need to have some knowledge in Flutter and Dart.
Be sure to respect the code style of the project (see below).
To add a new tool, please follow these steps:
- Create a new file in the
lib/pages
folder with the name of your tool finished by_page.dart
(e.g.my_tool_page.dart
). You can copy/paste the content of thelib/pages/templates/tool_template_page.dart
file to start. - Code your tool in the new file, you can install packages if needed (via pub.dev).
- Add your tool to the
lib/hierarchy.dart
file by importing it and adding it to thetoolMap
map and in the correct folder (using thehierarchy
list).
If you want to improve an existing tool, you can do it by editing the corresponding file in the lib/pages
folder.
Please respect the code style of the project (see below).
It's very easy to translate the app and you don't need to know how to code.
If you want to translate the app in a new language, you can do it by adding a file called strings_{language_code}.i18n.json
in the assets/translations
folder (e.g. strings_fr.i18n.json
for French).
You can copy/paste the content of the assets/translations/strings.i18n.json
file to start.
Then you can translate the strings in the file.
Once you have finished, you need to run this command in the terminal (in the project folder):
flutter pub run slang
Finally you need to add the <string>{language_code}</string>
line to the CFBundleLocalizations
list in the ios/Runner/Info.plist
file.
You can write your code as you want but please respect these rules:
- Please use English for the code and the comments.
- Please use the
camelCase
notation for the variables and the functions. - Please use the
PascalCase
notation for the classes. - Please use the
snake_case
notation for the files. - Please use the
FilledButton
widget for the buttons. - Please always use a
OutlineInputBorder
for the text fields border. - Please keep the
SafeArea
widget in the pages. - Please keep the
SingleChildScrollView
widget in the pages to avoid overflow. - Please keep the
GestureDetector
widget as the root of the pages if there is at least one text field in the page. - Please do not add more than 3 actions in the
AppBar
. - Please do not add actions in the
AppBar
if there are notIconButton
. - Please always add a tooltip to the
IconButton
in theAppBar
. - Please do not import the
flutter/cupertino.dart
file. - Please always use localized strings (see the "Translate the app" section).
- If you want to use an API or resources hosted on the internet
- Please add a fallback in case the user doesn't have an internet connection.
- Please add an action button in the
AppBar
opening anAlertDialog
showing the data sources and licenses.- Please use the
Icons.copyright
icon for the action button.
- Please use the
- Please never change the key of a tool in the
hierarchy.dart
file. - Please avoid using
SnackBar
andBottomSheet
, prefer usingAlertDialog
. - Please respect the naming of the shared preferences keys (can be found in
lib/core/shared_preferences.dart
).- Please never rename a key.
- Please use the files in the
lib/core
folder to do some actions, you can add new files or functions if needed.- Please use the
lib/core/dialogs.dart
file to create dialogs.- You can still use the
showDialog
function if you need to create a custom dialog.
- You can still use the
- Please use the
lib/core/http_requests.dart
file to make HTTP requests. - Please use the
lib/core/online_file
file to download files or get its content from the internet. - Please use the
lib/core/shared_preferences.dart
file to define the shared preferences keys. - Please use the
lib/core/url.dart
file to open URLs outside the app or check if an URL is valid.
- Please use the
- Please avoid using custom fonts, prefer using the default ones.
- Please do not use custom colors, a theme is already defined.
- Please do not use custom icons, you can use the
Icons
class. - Please respect the assets structure.
- Have fun.
If you have any question, you can contact me by email at [email protected]
This project is under the Mozilla Public License 2.0.
This project was (up to and including version 1.18.0) under the GNU General Public License v3.0.
You can read the declaration of the license change here.