{"id":21307783,"url":"https://github.com/gauravmcode/ram_mandir_app","last_synced_at":"2025-09-08T08:34:25.823Z","repository":{"id":220721616,"uuid":"752403530","full_name":"GauravMcode/Ram_Mandir_App","owner":"GauravMcode","description":"A  Flutter project based on events of Ram Temple. Also a music player playing bhajans of Lord Rama with Localization Support","archived":false,"fork":false,"pushed_at":"2024-07-27T22:30:07.000Z","size":17684,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T09:13:35.164Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GauravMcode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-02-03T20:31:45.000Z","updated_at":"2024-07-27T22:30:10.000Z","dependencies_parsed_at":"2024-07-27T22:39:15.459Z","dependency_job_id":null,"html_url":"https://github.com/GauravMcode/Ram_Mandir_App","commit_stats":null,"previous_names":["gauravmcode/ram_mandir_app"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GauravMcode%2FRam_Mandir_App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GauravMcode%2FRam_Mandir_App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GauravMcode%2FRam_Mandir_App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GauravMcode%2FRam_Mandir_App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GauravMcode","download_url":"https://codeload.github.com/GauravMcode/Ram_Mandir_App/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243785089,"owners_count":20347409,"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":[],"created_at":"2024-11-21T16:34:08.434Z","updated_at":"2025-03-15T20:13:27.327Z","avatar_url":"https://github.com/GauravMcode.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ram_Mandir_App\n\nA new Flutter project based on timeline events of Ram Temple. Also a music player playing bhajans of Lord Rama. Along with Localization support for English and Hindi Language.\n\n## Getting Started\n\nThis project is a starting point for a Flutter application.\n\nRun **flutter pub get** and then **flutter run** to run the project.\n\n## Stacks:\n- **Bloc(cubits)** is used for State Management.\n- Bloc Architecture is used.\n- **flutter_localization** and **intl** package is used for localization.\n- **shared_preferences** for persisting localization state.\n- **just_audio** package is used to play audio for music player.\n\n## Localization guide:\n- To add new language, create new arb file inside the folder l10n in lib. The file name should be app_{language code}.dart.\n- add translation texts in that file\n- run  ```flutter pub get ``` to generate localization files\n- add new language in  the **AppSettings** widget.\n\n## Challenges faced:\n- ensuring Localization of static assets which were list of Events and Music items.For that i defined a method that takes context as parameter\n- managing localization state and persisting it locally on device. For this, I used Bloc cubits and shared_preferences\n- Changing state i.e. app language throughout the app when language changed through settings\n- playing audio of bhajans. For that, I used audio_player package\n\n## Folder Structure:\nThis Project follows BLoC Architecture Pattern, where code is separated into :\n\n```\n|- Data Layer\n|- Bloc Layer\n|- Presentation Layer\n```\nThe complete Folder Structe is as follows :\n\nThe **lib** folder consists :\n```\nlib\n|- data\n|- Bloc\n|- presentation\n|- config\n|- main.dart\n```\nThe **data** contains static data for app and models\n\n```\ndata\n  |- app_data\n     |- events.dart\n     |- music.dart\n  |- models\n     |- events.dart\n     |- music.dart\n```\nThe **bloc** sub-folder has cubits :\n```\nbloc\n  |- music_cubit.dart\n  |- language_cubit.dart\n```\nThe **presentation** sub-folder consists all UI part ; widgets contain refactored and re-usable widgets.\n\nUI part:\n\n```\npresentation\n   |- pages\n     |- home_page.dart\n     |- music_page.dart\n     |- error_page.dart\n   |- widgets\n      |- bottom_image.dart\n      |- last_page.dart\n      |- middle_text_widget.dart\n      |- progress_bar.dart\n      |- app_settings.dart\n       \n  \n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgauravmcode%2Fram_mandir_app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgauravmcode%2Fram_mandir_app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgauravmcode%2Fram_mandir_app/lists"}