{"id":30772981,"url":"https://github.com/abhimanyu345/firebase_app","last_synced_at":"2026-04-11T19:03:48.929Z","repository":{"id":311443695,"uuid":"1043691650","full_name":"abhimanyu345/firebase_app","owner":"abhimanyu345","description":"A cross-platform Flutter app (mobile \u0026 web) for managing objects, featuring Firebase OTP authentication and a REST API for full CRUD operations. The app demonstrates real-world concepts like state management with GetX, responsive UI design, and secure authentication.","archived":false,"fork":false,"pushed_at":"2025-08-24T13:41:47.000Z","size":304,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-24T18:50:08.707Z","etag":null,"topics":["c","cmake","cpp","dart","firebase","flutter","html","swift"],"latest_commit_sha":null,"homepage":"https://cargointernapp.web.app/#/login","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/abhimanyu345.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,"zenodo":null}},"created_at":"2025-08-24T12:19:47.000Z","updated_at":"2025-08-24T13:43:54.000Z","dependencies_parsed_at":"2025-08-24T18:50:16.869Z","dependency_job_id":"8d14e82f-7264-456d-a28c-4b203c606add","html_url":"https://github.com/abhimanyu345/firebase_app","commit_stats":null,"previous_names":["abhimanyu345/firebase_app"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/abhimanyu345/firebase_app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhimanyu345%2Ffirebase_app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhimanyu345%2Ffirebase_app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhimanyu345%2Ffirebase_app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhimanyu345%2Ffirebase_app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abhimanyu345","download_url":"https://codeload.github.com/abhimanyu345/firebase_app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhimanyu345%2Ffirebase_app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273695550,"owners_count":25151548,"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","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["c","cmake","cpp","dart","firebase","flutter","html","swift"],"created_at":"2025-09-05T01:03:47.238Z","updated_at":"2025-12-30T21:06:53.241Z","avatar_url":"https://github.com/abhimanyu345.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"                                                            #Cargo Intern App\nhttps://cargointernapp.web.app/#/login\nhttps://drive.google.com/file/d/1G9ndOEcgW3wHzNZUl40qFHXjfIp-IMt-/view?usp=drive_link\nhttps://drive.google.com/file/d/1Gx_8qz6i-4t-Nkp-gDQKXd_pTog3aO5v/view?usp=sharing\n\nA cross-platform Flutter app (mobile \u0026 web) for managing objects, using Firebase OTP authentication and a REST API for CRUD operations. The app demonstrates real-world mobile and web app development concepts including state management, responsive UI, and secure authentication.\n\n# 1. Project Overview\n\nThe Cargo Intern App is designed as an internship project with the following features:\n\nAuthentication: Phone-based OTP login using Firebase.\n\nObject Management: Full CRUD (Create, Read, Update, Delete) operations with a public REST API.\n\nState Management \u0026 Navigation: Implemented using GetX.\n\nResponsive UI: Works well on both mobile devices and web browsers.\n\nError Handling \u0026 Validation: All API operations, forms, and OTP verification handle errors gracefully.\n\n## 2. Firebase Phone Authentication Setup\n\nFor this project, a dummy phone number was used for authentication testing because we did not have access to a paid Firebase Blaze plan to generate real OTPs.\n\nDetails:\n\nDummy Number: +911234567890\n\nDummy OTP for Verification: 123456\n\nHow it works:\n\nThe app uses the same Firebase OTP flow.\n\nOn entering the dummy number, Firebase allows login using the OTP 123456.\n\nThis simulates the real OTP verification flow, so all code and navigation behave exactly as if a real OTP was sent and verified.\n\nMobile Setup:\n\nEnable Phone Sign-In in Firebase Authentication.\n\nAdd SHA-1 \u0026 SHA-256 keys for Android apps.\n\nConfigure firebase_options.dart via flutterfire configure.\n\nUse the dummy number to login and navigate the app.\n\nWeb Setup:\n\nEnable Phone Sign-In in Firebase Authentication.\n\nAdd localhost and your deployed Firebase domain to authorized domains.\n\nLogin using the dummy number and OTP.\n\n## 3. pubspec.yaml Dependencies\n\nThe project uses the following dependencies:\n\n```yaml\ndependencies:\n  flutter:\n    sdk: flutter\n  get: ^4.6.5\n  firebase_core: ^2.25.0\n  firebase_auth: ^4.8.0\n  http: ^1.1.0\n  uuid: ^3.1.0\n  url_launcher: ^6.2.10\n\ndev_dependencies:\n  flutter_test:\n    sdk: flutter\n  mockito: ^5.5.0\n```\n\n\nThese dependencies handle:\n\nFirebase initialization and authentication.\n\nState management and navigation with GetX.\n\nAPI communication via HTTP.\n\nUnique ID generation with uuid.\n\nOpening external links (like GitHub) using url_launcher.\n\n## 4. Code Structure \u0026 Design Choices\n```\n   lib/\n   ├─ auth/                  # Screens for login and OTP verification\n   ├─ controllers/           # GetX controllers: AuthController, ApiController\n   ├─ models/                # ObjectModel.dart\n   ├─ services/              # ApiService.dart for REST API calls\n   ├─ utils/                 # Helper functions and constants\n   ├─ views/                 # Object CRUD screens\n   ├─ main.dart              # Entry point and routing\n   └─ firebase_options.dart  # Firebase configuration\n```\n\n\nKey Design Choices:\n\nGetX: Centralized state management, navigation, and dependency injection.\n\nTheme: Indigo primary color, responsive layouts, clean card-based UI for mobile \u0026 web.\n\nCRUD Flow:\n\nFetch objects from API.\n\nDisplay list with pagination and detail view.\n\nAdd/Edit objects using forms with JSON validation.\n\nOptimistic updates with immediate UI feedback.\n\nError Handling: All API calls and OTP actions show snackbars with meaningful messages.\n\nDummy OTP Flow: Mimics real OTP verification for testing without a paid Firebase plan.\n\n## 5. Limitations \u0026 Future Improvements\n\nCurrent Limitations:\n\n* OTP flow uses a dummy number; real OTP requires Blaze plan.\n* \n* Web layout needs additional fine-tuning for very large screens.\n* \n* Partial updates (PATCH) not implemented; only full PUT.\n* \n* No offline caching of API data.\n* \n* Future Improvements:\n* \n* Implement real OTP verification once Blaze plan is available.\n* \n* Add dark mode support.\n* \n* Enhance web layout with better responsive design for larger screens.\n* \n* Add analytics/statistics to dashboard.\n* \n* Implement full unit and integration tests for web and mobile.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabhimanyu345%2Ffirebase_app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabhimanyu345%2Ffirebase_app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabhimanyu345%2Ffirebase_app/lists"}