{"id":18712366,"url":"https://github.com/codenameakshay/kai-qoohoo","last_synced_at":"2025-04-12T11:52:46.403Z","repository":{"id":139043695,"uuid":"439586290","full_name":"codenameakshay/kai-qoohoo","owner":"codenameakshay","description":"A feature-packed audio recorder app built using Flutter.","archived":false,"fork":false,"pushed_at":"2021-12-19T19:21:21.000Z","size":29008,"stargazers_count":36,"open_issues_count":2,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-26T06:34:37.585Z","etag":null,"topics":["audio","dart","flutter","microphone","recorder","sound"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codenameakshay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-18T10:26:57.000Z","updated_at":"2025-02-25T14:08:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"4f603245-9f97-4003-8bb7-8c0f94983e16","html_url":"https://github.com/codenameakshay/kai-qoohoo","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenameakshay%2Fkai-qoohoo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenameakshay%2Fkai-qoohoo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenameakshay%2Fkai-qoohoo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenameakshay%2Fkai-qoohoo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codenameakshay","download_url":"https://codeload.github.com/codenameakshay/kai-qoohoo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248565034,"owners_count":21125414,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","dart","flutter","microphone","recorder","sound"],"created_at":"2024-11-07T12:42:34.901Z","updated_at":"2025-04-12T11:52:46.397Z","avatar_url":"https://github.com/codenameakshay.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\" style=\"border-bottom: none\"\u003e\n    \u003cb\u003e\n        \u003cp\u003eQoohoo Submission\u003c/p\u003e\u003cbr\u003e\n    \u003c/b\u003e\n    🎙️ An audio recording/playing app. 🎙️ \u003cbr\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://flutter.dev/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Flutter-v2.8.0-blue?logo=flutter\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/codenameakshay/kai-qoohoo\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/codenameakshay/kai-qoohoo.svg?style=flat\u0026logo=github\u0026colorB=deeppink\u0026label=stars\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/codenameakshay/kai-qoohoo\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/codenameakshay/kai-qoohoo.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/codenameakshay/kai-qoohoo\"\u003e\u003cimg src=\"https://img.shields.io/github/license/codenameakshay/kai-qoohoo.svg\" alt=\"License: AGPL\"\u003e\u003c/a\u003e\n\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\nThis is a basic audio recording app, which is developed using Flutter.\n\u003c/p\u003e\n\n\n\n\n## Screenshots\n\n| Record Screen (Default theme) \t| Record Screen (Theme #2) \t| Record Screen (Theme #3) \t| Record Screen (Theme #4) \t| Record Screen (Theme #5) \t|\n|--------------\t|--------------\t|--------------\t|--------------\t|--------------\t|\n|  ![Record Screen (Default theme)](screenshots/1.jpg) | ![Record Screen (Theme #2)](screenshots/2.jpg) \t| ![Record Screen (Theme #3)](screenshots/3.jpg)  \t| ![Record Screen (Theme #4)](screenshots/4.jpg)   \t|  ![Record Screen (Theme #5)](screenshots/5.jpg) \t|\n\n| Recording \t| Tap \u0026 Hold Lock \t| Previous Recordings \t| Last Recording \t| Paused \t|\n|--------------\t|--------------\t|--------------\t|--------------\t|--------------\t|\n|  ![Recording](screenshots/8.jpg) | ![Tap \u0026 Hold Lock](screenshots/9.jpg) \t| ![Previous Recordings](screenshots/10.jpg)  \t| ![Last Recording](screenshots/11.jpg)   \t|  ![Paused](screenshots/12.jpg) \t|\n\nMore screenshots are available in the `/screenshots` folder.\n## Features\n\n - Record high quality audio\n - Quick record with long press\n - Pause and resume recording (API 24+ (Nougat \u0026 above) only)\n - Record in various file formats (.mp3, .wav, .m4a)\n - Record in various sampling rates (16, 44.1, 48)\n - Currently records only in 128kbps sampling rate for less size files\n - Play last recording easily in one-tap\n - View all previous recordings\n - Play any of the recording\n - Smooth animations and haptic feedback\n - Visualise amplitude in real-time\n - Has support for 40+ themes\n\n## Permissions\n\nKai requires only these three permissions:\n - `[INTERNET]` To access the internet for downloading the fonts (Rubik from Google Fonts). App works without internet too.\n - `[MICROPHONE]` To record audio (needed).\n - `[WRITE_EXTERNAL_STORAGE]` To save the audio file, app accesses application documents folder and no other folder is visible (Scoped storage), works if denied too.\n## Built With\n\n* [Flutter](https://flutter.dev/)\n* [Dart](https://dart.dev/)\n\n## Getting Started\n\nTo build on MacOS or Windows, please follow these simple steps.\n\n**Step 1:**\n\n```shell\ngit clone https://github.com/codenameakshay/kai-qoohoo.git\n```\n\n**Step 2:**\n\nFollow the instructions [here](https://developer.android.com/studio) to install Android Studio. Then you're ready to build the app.\n\nFor testing the app you can create an emulator following the steps [here](https://developer.android.com/studio/run/emulator), or directly run on a physical Android device.\n\n**Step 3:**\n\nFollow the instructions [here](https://flutter.dev/docs/get-started/install) to install Flutter. As Odin uses the `stable` channel, you need to switch the channel if you are on `dev` or `beta` channels. Just type:\n\n```shell\nflutter channel stable\n```\n\n**Step 4:**\n\nYou should generate the necessary code first.\n```shell\nflutter pub run build_runner build --delete-conflicting-outputs\n```\n\n**Step 5:**\n\nTo run the app just type these commands in terminal or use the Run and Debug option from your editor of choice.\n```shell\nflutter pub get\nflutter run\n```\n\n## Code Walkthrough\n\n### Folder Structure\n\nThe folder structure is explained below.\n\n```\nlib (All flutter code in present here)\n ┃\n ┣ constants (Various constant values used throughout the app)\n ┃\n ┣ controllers (All the controllers/notifiers used in the app)\n ┃\n ┣ pages (All the UI pages in the app)\n ┃\n ┣ painters (All the custom painters used in the app)\n ┃\n ┣ router (All the routes used in the app)\n ┃\n ┣ services (All the services used in the app)\n ┃\n ┣ utils (All reusable code (functions, classes, etc.) used in the app)\n ┃\n ┗ widgets (All the widgets used in the app)\n ```\n\n```\nlib\n ┃\n ┣ constants\n ┃ ┣ app_color.dart (App color constants)\n ┃ ┗ app_data.dart (App data constants such as device size)\n ┃\n ┣ controllers\n ┃ ┣ audio_player_controller.dart (Audio player controller)\n ┃ ┣ path_controller.dart (Path controller)\n ┃ ┣ record_controller.dart (Recording controller)\n ┃ ┣ settings_controller.dart (Settings controller)\n ┃ ┣ theme_controller.dart (Theme controller)\n ┃ ┣ timer_controller.dart (Timer controller to check recording duration)\n ┃ ┗ waveform_controller.dart (Waveform controller, to plot amplitude waveform)\n ┃\n ┣ pages\n ┃ ┣ home_page.dart (The default home page, which consists of app bar and body)\n ┃ ┣ loading_page.dart (A loading page is shown for data loading)\n ┃ ┗ record_page.dart (The main body of the app, which consists of recording, playback, and settings)\n ┃\n ┣ painters\n ┃ ┣ audio_waveform_painter.dart (Painter to draw the waveform, not in use)\n ┃ ┣ ripple_painter.dart (Painter to draw the ripple effect behind record button)\n ┃ ┗ wave_painter.dart (Painter to draw the waveform of the amplitude + animations)\n ┃\n ┣ router\n ┃ ┣ app_router.dart (Define routes inside the app)\n ┃ ┣ app_router.gr.dart (Generated file)\n ┃ ┣ route_observer.dart (Define route observer to get current route stack, and debug)\n ┃ ┗ transition_route_builders.dart (Animations which happen on route transition)\n ┃\n ┣ services\n ┃ ┣ locator.dart (Service locator, using get_it package to register notifiers and services)\n ┃ ┣ logger.dart (Logger service, which logs errors, infos or any warnings)\n ┃ ┣ product_service.dart (Product service, which handles all product related operations like fetching them)\n ┃ ┣ theme_pref_service.dart (Theme preference service, which handles the theme preference, and change theme)\n ┃ ┣ theme_service.dart (Theme service, which handles the theme, and change theme)\n ┃ ┗ transaction_service.dart (Transaction service, which handles all stock record related operations like fetching, updating them)\n ┃ ┣ audio_player_service.dart\n ┃ ┣ locator_service.dart (Service locator, using get_it package to register notifiers and services)\n ┃ ┣ logger_service.dart (Logger service, which logs errors, infos or any warnings)\n ┃ ┣ path_service.dart (Path service, which handles all path related operations like fetching docs, etc.)\n ┃ ┣ record_service.dart (Recording service, which handles all recording related operations)\n ┃ ┣ settings_service.dart (Settings service, which handles all settings, currently handles only graph style)\n ┃ ┣ snackbar_service.dart (Snackbar service, which handles all snackbars)\n ┃ ┣ theme_pref_service.dart (Theme preference service, which handles the theme preference, and change theme)\n ┃ ┣ theme_service.dart (Theme service, which handles the theme, and change theme)\n ┃ ┣ timer_service.dart (Timer service, which handles all timers which are used for recording duration, amplitude waveform, etc.)\n ┃ ┗ waveform_service.dart (Waveform service, which handles all waveform related operations, currently not in use)\n ┃\n ┣ utils\n ┃ ┗ smoothing.dart (A filter to smooth out the amplitude waveform matrix)\n ┃\n ┣ widgets\n ┃ ┣ amplitude_widget.dart (Widget to draw the amplitude waveform)\n ┃ ┣ audio_waveform_widget.dart (Widget to draw the waveform, not in use)\n ┃ ┣ bug_report_button.dart (Button to send bug reports)\n ┃ ┣ directory_button.dart (Widget to display the directory button)\n ┃ ┣ directory_sheet.dart (Widget to display the directory sheet)\n ┃ ┣ format_settings.dart (Widget to display the format settings)\n ┃ ┣ last_recording_bubble.dart (Widget to display the last recording bubble)\n ┃ ┣ pause_button.dart (Widget to display the pause button)\n ┃ ┣ realistic_graph_button.dart (Widget to display the realistic graph button)\n ┃ ┣ recording_card.dart (Widget to display the recording card in directory sheet)\n ┃ ┣ record_button.dart (Widget to display the record button)\n ┃ ┣ record_duration.dart (Widget to display the recording duration)\n ┃ ┗ scrollable_bottom_sheet.dart (Widget to display the bottom sheet i.e. used in directory sheet)\n ┃\n ┣ generated_plugin_registrant.dart (Generated file for plugins)\n ┗ main.dart (Main file, which is the entry point of the app, used for registering theme, providers, routes, etc.)\n ```\n\n### Packages Used\n\nAll the different packages used throughout the app, with thier explanations.\n- `animations: ^2.0.2` - Used for animations during page/route transitions\n- `auto_route: ^3.2.0` - Used to generate routes automatically\n- `device_info_plus: ^3.2.0` - Used to get device info for bug reports\n- `flex_color_scheme: ^4.1.1` - Used for theming\n- `flutter_archive: ^4.1.0` - Used for creating zip file for logs\n- `flutter_mailer: ^2.0.1` - Used for sending bug reports via email\n- `get_it: ^7.2.0` - Used for state management\n- `google_fonts: ^2.1.0` - Used for Rubik font\n- `intl: ^0.17.0` - Used to format date and time\n- `just_audio: ^0.9.18` - Used to play audio recordings\n- `just_waveform: ^0.0.1` - Used to show audio waveform\n- `linalg: ^0.4.0` - Used to solve matrix for smoothing filter\n- `logger: ^1.1.0` - Used to log errors, info or warnings\n- `path_provider: ^2.0.8` - Used to get application directory path to save audio files\n- `provider: ^6.0.1` - Used for state management\n- `record: ^3.0.2` - Used to record and save audio\n- `rxdart: ^0.27.3` - Used to create streams\n- `shared_preferences: ^2.0.11` - Used to save theme preference\n- `sprung: ^3.0.0` - Usedd for dampening the animations\n\nDev dependencies -\n- `auto_route_generator: ^3.1.0` - Used for generating routes\n- `build_runner: ^2.1.7` - Used to generate necessary code\n## Releases\n\nPlease see the [releases tab](https://github.com/codenameakshay/kai-qoohoo/releases) for more details about the latest release.\n\n## Contributing\nFirst off, thanks for visiting this repo and taking your time to read this doc.\nAny contributions you make are **greatly appreciated**.\n\nIf you'd like to propose a feature, submit an issue [here](https://github.com/codenameakshay/kai-qoohoo/issues).\n\n## License\n\nDistributed under the GPL-3.0 License. See `LICENSE` for more information.\n\n## Contributers\n\n\u003ca href=\"https://github.com/codenameakshay/kai-qoohoo/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contributors-img.web.app/image?repo=codenameakshay/kai-qoohoo\" /\u003e\n\u003c/a\u003e\n\n### If you made it here, thanks for your support. You can show more support by starring this repo. See ya! 👋","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodenameakshay%2Fkai-qoohoo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodenameakshay%2Fkai-qoohoo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodenameakshay%2Fkai-qoohoo/lists"}