{"id":19794030,"url":"https://github.com/guilhermeborgesbastos/feature-toggle","last_synced_at":"2026-05-06T19:42:03.266Z","repository":{"id":121047513,"uuid":"273068078","full_name":"guilhermeborgesbastos/feature-toggle","owner":"guilhermeborgesbastos","description":"A Spring Boot RESTful API using Angular 9 for the UI that allows users to manage feature toggles for their applications.","archived":false,"fork":false,"pushed_at":"2020-08-22T12:49:14.000Z","size":983,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-11T04:41:34.730Z","etag":null,"topics":["angular","feature-toggle","feature-toggles","spring-boot"],"latest_commit_sha":null,"homepage":"http://featuretoggle.guilhermeborgesbastos.com","language":"Java","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/guilhermeborgesbastos.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":"2020-06-17T20:06:00.000Z","updated_at":"2024-04-09T09:06:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"ddf1701b-e175-47f2-aff3-59aae555c6d4","html_url":"https://github.com/guilhermeborgesbastos/feature-toggle","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/guilhermeborgesbastos%2Ffeature-toggle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guilhermeborgesbastos%2Ffeature-toggle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guilhermeborgesbastos%2Ffeature-toggle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guilhermeborgesbastos%2Ffeature-toggle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guilhermeborgesbastos","download_url":"https://codeload.github.com/guilhermeborgesbastos/feature-toggle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241133256,"owners_count":19915377,"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":["angular","feature-toggle","feature-toggles","spring-boot"],"created_at":"2024-11-12T07:11:55.808Z","updated_at":"2026-05-06T19:41:58.229Z","avatar_url":"https://github.com/guilhermeborgesbastos.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n Feature Toggle Application\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Open Source Love svg2](https://badges.frapsoft.com/os/v2/open-source.svg?v=103)](https://GitHub.com/guilhermeborgesbastos/feature-toggle/stargazers/) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/66d88b715cdb4127a80c358941c59683)](https://www.codacy.com?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=guilhermeborgesbastos/feature-toggle\u0026amp;utm_campaign=Badge_Grade)\n\n\u003c/div\u003e\n\n\u003ch4 align=\"center\"\u003e\nA Web application that allows users to manage feature toggles for their applications.\n\u003cbr\u003eOther applications can then query this service to get active features for customers.\n\u003c/h4\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr\u003e\n\n[![Watch the video](/markdown/preview.jpg)](https://featuretoggle.guilhermeborgesbastos.com/?source=github)\n\n\u003c/div\u003e\n\n## What's the feature toggles concept?\n\nIf you are not familiar with the concept of feature toggles, you are welcome to read this excellent article: \n[https://martinfowler.com/articles/feature-toggles.html](https://martinfowler.com/articles/feature-toggles.html)\n\n## What's included?\n\n* An Spring Boot RESTful API with authorization and authentication system using OAuth2 and JWT;\n* An Angular application to manage Feature Toggles, Customers, and Users.\n* Multiple authorization levels with SUPER_ADMIN, PRODUCT_OWNER, and CLIENT;\n* A SQL Database schema to support data persistence;\n* Source code verified by static code analyzers;\n\n## RESTful API\n\nThe endpoins of the Spring Boot API can be easily imported into the [Insomnia](https://insomnia.rest/) ( the leading Open Source API Client) by clicking on the button below:\n\n[![Run in Insomnia}](https://insomnia.rest/images/run.svg)](https://insomnia.rest/run/?label=Feature%20Toggle%20API\u0026uri=https%3A%2F%2Fraw.githubusercontent.com%2Fguilhermeborgesbastos%2Ffeature-toggle%2Fmaster%2Fmarkdown%2FInsomnia-Feature-Toggle-API-2020-07-27.json%3Ftoken%3DABJRES7ZSO5WRMA42733HCS7D3ISC)\n\n## Prerequisite\n\n### On the front-end side\n\nFollow the steps below to properly install the required dependencies for the front-end on your local environment.\n\n1. It is required to have Node.js with version _12.18.0_ or higher. To see what version of Node.js is installed on your machine type the following command in the terminal:\n```\nnode -v\n```\n\n2. If you haven't installed Node.js in your machine then go to [this link](https://nodejs.org/en/download/) in order to install node.\n\n3. It is required to have NPM with version _6.14.0_ or higher. To see what version of NPM is installed on your machine type the following command in the terminal:\n```\nnpm -v\n```\n\n4. If you haven't installed NPM in your machine then go to [this link](https://www.npmjs.com/get-npm) in order to install NPM.\n\n### On the back-end side\n\nFollow the steps below to properly install the required dependencies for the back-end on your local environment.\n\n1. It is required to have JAVA with version _1.8_. To see what version of JAVA is installed on your machine type the following command in the terminal:\n```\njava -version\n```\n\n2. If you haven't installed JAVA in your machine then go to [this link](https://www.java.com/) in order to install it.\n\n3. Install and configure the MySQL following [this link](https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/).\n\n4. Create a new database called `feature_toggle` as a local database.\n\n5. Import the database schema from `/database/schema.sql` into the `feature_toggle` database.\n\n6. Import the 'dump data' from the `/database/schema-dumb-data.sql` into the `feature_toggle` database.\n\n## Installing and Executing locally\n\n1. Fork this repository, by clicking the `Fork` button at the top-right on this page.\n[![Learn how to fork GitHub projects](/markdown/fork.png)](https://guides.github.com/activities/forking/)\n\n2. Clone the forked repository from your GitHub account.\n```\ngit clone https://github.com/[replace-with-your-github-username]/feature-toggle.git\n```\n\n3. Edit the `/src/main/resources/application.properties` file with your local MySQL credentials.\n\n4. Go to the cloned directory (e.g. `cd feature-toggle`).\n\n5. Run `mvn clean install` to build the application.\n\n6. Inner the `/target` folder of the built project, start the Spring Boot RESTful API:\n```\ncd /target\njava -jar feature-toggle-0.0.1-SNAPSHOT.jar com.gbastos.featuretoggleapi.Application\n```\n\n7. Inner the `/src/main/resources/frontend` folder of the cloned project, start the Angular application:\n```\nng serve --host 0.0.0.0\n```\n\n8. After that, the command will start a server instance and listen on port `4200`. Open (http://localhost:4200/) in your browser. The **Feature Toggle** login will be displayed.\n\nUse the default users below to access the application:\n\n| Username | Password | Role |\n| :---: | :---: | :---: |\n| guilhermeborgesbastos@gmail.com | A4Dc$%/** | SUPER_ADMIN |\n| product.owner@gmail.com | 4d8Y%$#@ | PRODUCT_OWNER |\n| client@gmail.com | 145hJA87* | CLIENT |\n\n## Credits\n\nThis project uses several open source packages:\n\n- [Angular](https://github.com/angular)\n- [Angular CLI](https://cli.angular.io)\n- [Angular Material](https://material.angular.io/)\n- [Spring Boot](https://spring.io/projects/spring-boot)\n- [Apache Maven](https://maven.apache.org/)\n- [JWT](https://jwt.io/)\n\n---\n\n\u003e Site [featuretoggle.guilhermeborgesbastos.com](https://featuretoggle.guilhermeborgesbastos.com)\u003cbr\u003e\n\u003e LinkedIn [profile](https://www.linkedin.com/in/guilhermeborgesbastos)\u003cbr\u003e\n\u003e Facebook [profile](https://www.facebook.com/guilherme.borgesbastos)\n\n## License\n\nThe theme is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguilhermeborgesbastos%2Ffeature-toggle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguilhermeborgesbastos%2Ffeature-toggle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguilhermeborgesbastos%2Ffeature-toggle/lists"}