{"id":23882066,"url":"https://github.com/ahsansoftengineer/angulartemplate","last_synced_at":"2025-04-09T21:34:46.117Z","repository":{"id":112966484,"uuid":"535617687","full_name":"ahsansoftengineer/AngularTemplate","owner":"ahsansoftengineer","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-27T10:30:53.000Z","size":643,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-23T23:33:50.056Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/ahsansoftengineer.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":"2022-09-12T10:35:23.000Z","updated_at":"2024-10-28T10:57:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"7d770c9c-8377-4f6a-9e9f-fb7014e5e4a4","html_url":"https://github.com/ahsansoftengineer/AngularTemplate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahsansoftengineer%2FAngularTemplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahsansoftengineer%2FAngularTemplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahsansoftengineer%2FAngularTemplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahsansoftengineer%2FAngularTemplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ahsansoftengineer","download_url":"https://codeload.github.com/ahsansoftengineer/AngularTemplate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248115299,"owners_count":21050182,"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":"2025-01-04T02:37:37.352Z","updated_at":"2025-04-09T21:34:46.089Z","avatar_url":"https://github.com/ahsansoftengineer.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [ANGULAR ARCHETECTURE](#)\n\n## [ANGULAR BEST PRACTICIES](#)\n\n1. Follows SOLID / OOP\n2. Follows Files and Folder Structure\n3. Use Servicies rather than base Classes (But Both are mendatory)\n4. Components Constructor Only Use for Service Injection\n5. Dont Write Huge Lines of Code in OnInit\n6. Use Rapper Component for External Libraries\n7. Constructor \u0026 OnInit will availaible at top of every Component\n8. Avoid Servicies Depends on Other Servicies\n9. If Components Exceed 200 To 300 Lines of Code Split it into Multiple Files\n10. Make Component for all Controls (Text, Dropdown, Auto Complete, Radio, Checkbox, Button etc...)\n11. Group Several Related Properties into Object\n12. Instead of Using Several Arguments pass Object\n13. Use Default Properties Where possible\n14. Only Global Loader Use to Display Request in Progress\n15. Mostly Used Angular Services will be the Part of AngularServiceAbstractClass\n16. Mostly Used Helper Services will be the Part of HelperServiceAbstractClass\n17. Avoid using Third Party Libraries that Cause Update Problem\n\n## [FOLDER AND FILES STRUCTURE](#)\n\n### [CORE MODULE](#)\n\n- - Most Common Files as per Folder those Required at Application Level\n\n#### Class\n\n1. Class Builders\n2. Abstract Classes\n3. Angular Service Injector\n4. Local Service Injector\n5. Form Base Class\n6. List Base Class\n7. Methods Base Class\n\n#### Models\n\n1. Reusable Forms \u0026 Interface Side by Side\n\n#### Services\n\n1. Form Helper Service\n2. Base Service\n3. Helper Service\n4. Form Service\n5. Validator Service\n6. Http Service\n7. State Service\n8. Swal Service\n9. Theme Services\n\n- - SideBar\n- - Header\n\n#### Interface\n\n1. ServerMultipleResponse\n2. ServerSingleResponse\n3. ValidatorParamInterface\n4. HttpParamInterface\n\n#### Constants\n\n- Pure Functions\n\n#### Static Class\n\n- Group of Functions\n\n#### Enums\n\n1. Permission\n2. Action\n3. Endpoints\n\n### [SHARED MODULE](#)\n\n#### Modules\n\n1. AngularzModule\n2. MatzModule\n3. OtherModules\n4. RootModule\n\n#### Components Module (Controls Component)\n\n1. Dialog Module (Dialog Boxs)\n\n- - Confirmation\n- - Success\n\n2. Controls\n\n- - Text\n- - Dropdown\n- - AutoComplete\n- - Table\n- - Utils\n\n#### Pipes\n\n- - DateTime\n- - Currency\n\n#### Partial\n\n- - Content Projection\n\n#### Decorator\n\n#### Directive\n\n- - Permission\n- - Form Control\n- - Has\n\n#### Guards / Resolver\n\n- - DisRegard\n- - IsUser\n- - hasRole\n\n#### Interceptors\n\n- - AccessToken\n- - Auth\n- - Loader\n\n### [THEME MODULE](#)\n\n1. Sidebar (Left, Rigth, Top, Bottom)\n2. Headers\n3. Footer\n4. MasterComponent\n\n### [AUTH MODULE](#)\n\n1. Sign In\n2. Sign Up\n3. Forget Password\n4. Rest Password\n5. etc..\n\n### [FEATURE ROUTING MODULE](#)\n\n1. Error (401, 404, 500)\n2. Admin\n3. Customer\n4. Product etc...\n\n# [EXTERNAL LIBRARIES](#)\n\n### For Linting Errors\n\n#### https://typescript-eslint.io/rules/no-inferrable-types/\n\n### tsconfig.json\n\n```json\n  \"compilerOptions\": {\n    \"strict\":false,\n    \"noImplicitAny\": false,\n    \"noPropertyAccessFromIndexSignature\": false,\n```\n\n### Dependencies\n\n```json\n    \"@ngx-translate/core\": \"^14.0.0\",\n    \"@ngx-translate/http-loader\": \"^7.0.0\",\n    \"libphonenumber-js\": \"^1.10.13\",\n    \"ngx-cookie-service\": \"^14.0.1\",\n    \"ngx-mat-intl-tel-input\": \"^5.0.0\",\n    \"ngx-mat-select-search\": \"^4.2.1\",\n    \"ngx-spinner\": \"^14.0.0\",\n    \"ngx-toastr\": \"^15.0.0\",\n    \"sweetalert2\": \"^11.4.32\",\n```\n\n### Dev Dependencies\n\n```json\n    \"@angular-eslint/eslint-plugin\": \"^14.0.4\",\n    \"@typescript-eslint/eslint-plugin\": \"^5.36.2\",\n    \"@typescript-eslint/parser\": \"^5.36.2\",\n    \"eslint\": \"^8.23.1\",\n    \"ngx-mat-intl-tel-input\": \"^5.0.0\",\n    \"ngx-mat-select-search\": \"^4.2.1\",\n    npm i prettier -D\n    npx prettier --write .\n\n```\n\n### Disabled Linting Errors\n\n```json\n\"off\" or 0 - turn the rule off\n\"warn\" or 1 - turn the rule on as a warning (doesn't affect exit code)\n\"error\" or 2 - turn the rule on as an error (exit code will be 1)\n\n\n.eslintrc.json\n  \"rules\": {\n    \"@typescript-eslint/no-inferrable-types\": \"warn\"\n  },\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahsansoftengineer%2Fangulartemplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahsansoftengineer%2Fangulartemplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahsansoftengineer%2Fangulartemplate/lists"}