{"id":22440252,"url":"https://github.com/realpacific/fullstack-cicd-automation","last_synced_at":"2026-04-16T04:31:35.830Z","repository":{"id":38586912,"uuid":"224167637","full_name":"realpacific/fullstack-cicd-automation","owner":"realpacific","description":"NgRx + Forms, Angular Library (w/ Verdaccio as registry) w/ Flask for backend \u0026 chat implementation using socket \u0026 automated deployment to Heroku from CircleCI + Cypress powered tests","archived":false,"fork":false,"pushed_at":"2023-01-07T16:09:01.000Z","size":1488,"stargazers_count":1,"open_issues_count":31,"forks_count":0,"subscribers_count":3,"default_branch":"dev","last_synced_at":"2025-06-03T04:11:09.878Z","etag":null,"topics":["angular","chat-application","cicd","circleci","cypress","flask","heroku","ngrx","reactive-forms","typescript"],"latest_commit_sha":null,"homepage":"https://prashant-ng-app.herokuapp.com","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/realpacific.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}},"created_at":"2019-11-26T10:45:44.000Z","updated_at":"2022-07-24T05:43:15.000Z","dependencies_parsed_at":"2023-02-07T15:01:12.729Z","dependency_job_id":null,"html_url":"https://github.com/realpacific/fullstack-cicd-automation","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/realpacific/fullstack-cicd-automation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realpacific%2Ffullstack-cicd-automation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realpacific%2Ffullstack-cicd-automation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realpacific%2Ffullstack-cicd-automation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realpacific%2Ffullstack-cicd-automation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/realpacific","download_url":"https://codeload.github.com/realpacific/fullstack-cicd-automation/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/realpacific%2Ffullstack-cicd-automation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31871449,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"online","status_checked_at":"2026-04-16T02:00:06.042Z","response_time":69,"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":["angular","chat-application","cicd","circleci","cypress","flask","heroku","ngrx","reactive-forms","typescript"],"created_at":"2024-12-06T01:19:49.427Z","updated_at":"2026-04-16T04:31:35.807Z","avatar_url":"https://github.com/realpacific.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Angular + Flask + CircleCI + Heroku\n\n[![CircleCI](https://circleci.com/gh/realpacific/fullstack-cicd-automation.svg?style=svg)](https://circleci.com/gh/realpacific/fullstack-cicd-automation)\n\nThis project demonstrates:\n* Angular Library\n* NgRx\n* Flask\n* Reactive vs Template-driven forms\n* Chat implementation using flask-socketio \u0026 Chatbot\n* Cypress\n* CircleCI + Automated DockerHub publish \u0026 Heroku Deployment\n\n\n### What is the purpose of this project?\nThis project is where I put all the things I want to try out/learn. So this project has no real world purpose. Currently, \nthis project demonstrates backend + frontend + CI/CD. The CI/CD is for CircleCI but uses no CircleCI specific orbs. Hence,\nexcept for the schema, the build/test/deploy scripts should hopefully be platform agnostic.\n\n![Workflow](screens/circleci-workflow.png)\n\n---\n### Deployment URLs\n* [Backend](https://prashant-flask-app.herokuapp.com)\n* [Frontend](https://prashant-ng-app.herokuapp.com)\n\n\n---\n### Installing ngrx libraries:\n\n```bash\nnpm install @ngrx/core @ngrx/effects @ngrx/store @ngrx/store-devtools ngrx-store-freeze\n```\n\n### Setting up custom library\n\n```bash\nng new \u003capplication-name\u003e --create-application=false\nng generate library \u003clibrary-name\u003e --prefix=rpa\nng generate application \u003capplication-name\u003e\nng build \u003clibrary-name\u003e --watch\n```\n\n### Packaging custom library\n\nTo create compressed file for publishing:\n\n```bash\nng build \u003clibrary-name\u003e\ncd dist/\u003clibrary-name\u003e\nnpm pack\nnpm publish --registry=http://localhost:4873\n```\n\n### Publishing \u0026 Installing custom library\n\nThis project uses **dope-table** library which firstly needs to be published locally in Verdaccio. For this, run Verdaccio \u0026 point `npm` to that registry:\n\n```bash\ndocker run -it --rm --name verdaccio -p 4873:4873 verdaccio/verdaccio\nnpm adduser --registry http://localhost:4873\ncd \u003clocation-of-compressed-files\u003e\nnpm publish --registry=http://localhost:4873\nnpm install dope-table --registry=http://localhost:4873\n```\n\n### Starting Flask Backend\n\n```bash\ncd backend\npython3 -m venv ./venv\nsource venv/bin/activate\npip3 install -r requrements.txt\npython3 app.py\n```\n\n### Endpoints\n```\nGET /companies/reload\nGET /companies\nGET /companies/\u003cid\u003e\nDELETE /companies/\u003cid\u003e\nPOST /companies -d {name: \u003ccompany_name\u003e}\n```\n\n### CircleCI Local Installation\n```bash\nsudo snap install circleci\nsudo snap install docker\nsudo snap connect circleci:docker docker\nexport GITHUB_TOKEN=your-token-here\ncircleci setup\ncircleci local execute\n```\n\n___\n## References\n* [The Angular Library Series - Creating a Library with Angular CLI](https://medium.com/angular-in-depth/creating-a-library-in-angular-6-87799552e7e5)\n* [Angular Workspace: No Application for You!](https://medium.com/angular-in-depth/angular-workspace-no-application-for-you-4b451afcc2ba)\n* [NgRx Official Site](https://ngrx.io/guide/store)\n* [NgRx: Action Creators redesigned](https://medium.com/angular-in-depth/ngrx-action-creators-redesigned-d396960e46da)\n* [Chatbot (used as git submodules)](https://github.com/ahmadfaizalbh/Chatbot)\n* [How to get started with Cypress](https://medium.com/angular-in-depth/get-started-with-cypress-d6ac4b910605)\n* [How to build a CI/CD pipeline with Docker](https://circleci.com/blog/continuous-deployment-with-circleci-orbs-automate-deploys-to-aws-gcp-k8s-and-more/)\n* [Container Registry \u0026 Runtime (Docker Deploys)](https://devcenter.heroku.com/articles/container-registry-and-runtime)\n* [Running NGINX on Heroku with Docker](https://ntotten.com/2018/07/22/nginx-on-heroku/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frealpacific%2Ffullstack-cicd-automation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frealpacific%2Ffullstack-cicd-automation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frealpacific%2Ffullstack-cicd-automation/lists"}