{"id":22824956,"url":"https://github.com/kosasih/neofin","last_synced_at":"2025-07-25T05:06:37.667Z","repository":{"id":181106025,"uuid":"666232218","full_name":"KOSASIH/Neofin","owner":"KOSASIH","description":"Neofin is a robust and scalable financial technology microservice system designed to provide a comprehensive suite of financial services and solutions.","archived":false,"fork":false,"pushed_at":"2023-08-13T08:11:20.000Z","size":601,"stargazers_count":6,"open_issues_count":17,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-05T22:54:29.483Z","etag":null,"topics":["finance","financial-data","microservice"],"latest_commit_sha":null,"homepage":"https://kosasih.github.io/Neofin/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KOSASIH.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-07-14T02:54:29.000Z","updated_at":"2025-03-17T15:00:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"a68b537f-bbe4-4d79-87bc-c989b1eed8a4","html_url":"https://github.com/KOSASIH/Neofin","commit_stats":null,"previous_names":["kosasih/neofin"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KOSASIH%2FNeofin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KOSASIH%2FNeofin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KOSASIH%2FNeofin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KOSASIH%2FNeofin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KOSASIH","download_url":"https://codeload.github.com/KOSASIH/Neofin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252590534,"owners_count":21772935,"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":["finance","financial-data","microservice"],"created_at":"2024-12-12T17:08:58.085Z","updated_at":"2025-05-05T22:54:32.296Z","avatar_url":"https://github.com/KOSASIH.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CircleCI](https://dl.circleci.com/status-badge/img/gh/KOSASIH/Neofin/tree/main.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/gh/KOSASIH/Neofin/tree/main)\n\n# Neofin - Financial Technology Microservice System\n\nNeofin is a robust and scalable financial technology microservice system designed to provide a comprehensive suite of financial services and solutions. It aims to streamline financial processes, enhance operational efficiency, and enable seamless integration with existing financial systems.\n\n## Features\n\n- **Modular Architecture**: Neofin follows a microservice architecture, allowing for independent development, deployment, and scaling of individual components.\n- **Security and Compliance**: Neofin prioritizes data security and compliance with industry standards, ensuring the protection of sensitive financial information.\n- **Financial Services**: Neofin offers a wide range of financial services, including account management, payment processing, transaction tracking, analytics, and reporting.\n- **Integration**: Neofin provides seamless integration capabilities with third-party financial systems, allowing for easy data exchange and collaboration.\n- **Scalability**: With its scalable design, Neofin can handle high transaction volumes and adapt to evolving business needs without compromising performance.\n- **Developer-Friendly**: Neofin is built with developers in mind, providing well-documented APIs, SDKs, and developer tools to simplify integration and customization.\n\n## System Architecture\n\nNeofin consists of the following key components:\n\n1. **Account Management**: Enables users to create and manage financial accounts, set up payment preferences, and access transaction history.\n2. **Payment Processing**: Handles the processing of various types of payments, including credit/debit card transactions, bank transfers, and digital wallet payments.\n3. **Transaction Tracking**: Tracks and records financial transactions, providing real-time updates and notifications to users.\n4. **Analytics and Reporting**: Generates comprehensive financial reports and provides analytical insights to help businesses make data-driven decisions.\n5. **Authentication and Security**: Implements robust authentication mechanisms and security measures to protect user accounts and financial data.\n6. **Integration Layer**: Facilitates seamless integration with external systems, allowing for data exchange and synchronization.\n7. **Monitoring and Logging**: Monitors system performance, logs events and errors, and provides administrators with actionable insights.\n\n## Prerequisites\n\nTo set up and run Neofin, you need to have the following prerequisites:\n\n- Java 11 or higher\n- Node.js and npm (for front-end components)\n- Docker and Docker Compose (for containerized deployment)\n- Relational database management system (e.g., MySQL, PostgreSQL)\n- Redis (for caching and session management)\n\n## Getting Started\n\nPlease follow these steps to get started with Neofin:\n\n1. Clone the Neofin repository from GitHub: `git clone https://github.com/neofin/neofin.git`\n2. Install the necessary dependencies:\n   - Backend: Run `npm install` in the root directory to install the required Node.js dependencies.\n   - Frontend: Navigate to the `frontend` directory and run `npm install` to install the frontend dependencies.\n3. Set up the configuration files:\n   - Copy the sample configuration files (`config.sample.js` and `database.sample.json`) and rename them to `config.js` and `database.json`, respectively. Update the configurations as per your environment.\n4. Set up the database:\n   - Create a new database and execute the database schema script (`database.sql`) to create the necessary tables.\n5. Build and start the backend:\n   - Run `npm run build` to build the backend source code.\n   - Start the backend server by running `npm start`.\n6. Build and start the frontend:\n   - Navigate to the `frontend` directory and run `npm run build` to build the frontend code.\n   - Start the frontend server with `npm start`.\n7. Access Neofin:\n   - Open your web browser and visit `http://localhost:3000` to access the Neofin application.\n\nFor detailed installation instructions and additional configuration options, please refer to the [Installation Guide](installation-guide.md).\n\n## Documentation\n\nThe Neofin documentation provides detailed information on the system's architecture, API endpoints, configuration options, and usage guidelines. You can find the documentation in the [`docs`](docs/) directory of the repository.\n\n## Contributing\n\nWe welcome contributions from the community to improve Neofin. If you're interested in contributing, please follow our [Contribution Guidelines](https://github.com/KOSASIH/.github/blob/master/CONTRIBUTING.md).\n\n## Support\n\nIf you encounter any issues or have any questions, please reach out to our support team at support@neofin.com.\n\n## License\n\nNeofin is released under the [MIT License](https://github.com/KOSASIH/Neofin/blob/main/LICENSE). Feel free to use, modify, and distribute the system as per the terms of the license.\n\n## Acknowledgements\n\nWe would like to thank the following open-source projects for their valuable contributions to Neofin:\n\n- Project A: [Link to Project A](https://github.com/project-a)\n- Project B: [Link to Project B](https://github.com/project-b)\n\nTheir libraries and frameworks have been instrumental in the development of Neofin.\n\n## Changelog\n\n- v1.0.0 (2023-07-01): Initial release\n- v1.1.0 (2023-08-15): Added transaction analytics and reporting features\n- v1.2.0 (2023-09-30): Introduced integration layer for third-party systems\n\n## Roadmap\n\nHere is the planned roadmap for Neofin:\n\n### Q4 2023\n\n- Enhance user interface and user experience for better usability.\n- Implement multi-factor authentication (MFA) for added security.\n- Integrate with popular payment gateways to expand payment options.\n- Optimize database queries and introduce caching mechanisms for improved performance.\n- Conduct comprehensive testing and bug fixing for stability.\n\n### Q1 2024\n\n- Introduce a mobile application for Neofin, compatible with iOS and Android platforms.\n- Expand reporting and analytics capabilities with advanced visualizations and customizable dashboards.\n- Implement support for international currencies and cross-border transactions.\n- Develop a plugin system to allow third-party developers to extend Neofin's functionality.\n\n### Q2 2024\n\n- Integrate with financial data providers to offer real-time market data and investment tracking features.\n- Enhance API documentation and provide more comprehensive examples and use cases.\n- Implement support for recurring payments and subscription management.\n- Conduct security audits and penetration testing to ensure the system's robustness.\n\n### Q3 2024\n\n- Expand Neofin's microservices ecosystem by introducing additional specialized financial modules (e.g., loans, insurance, investments).\n- Develop automated reconciliation tools to streamline financial operations and reduce manual effort.\n- Enhance scalability and fault-tolerance through horizontal scaling and container orchestration.\n- Explore machine learning and AI capabilities to provide intelligent financial insights and fraud detection mechanisms.\n\nPlease note that the roadmap is subject to change based on user feedback, market demands, and internal priorities.\n\n## Resources\n\n- [Neofin Website](https://www.neofin.com)\n- [Neofin API Documentation](https://docs.neofin.com)\n- [Neofin Blog](https://blog.neofin.com)\n- [Neofin Community Forum](https://forum.neofin.com)\n\n## Conclusion\n\nNeofin aims to revolutionize the financial technology landscape by providing a comprehensive and scalable microservice system. With its modular architecture, extensive feature set, and developer-friendly approach, Neofin offers a powerful platform for businesses to streamline their financial operations and deliver exceptional user experiences. We invite you to explore Neofin, contribute to its development, and join us in shaping the future of financial technology.\n\n## Project Structure\n\nNode is required for generation and recommended for development. `package.json` is always generated for a better development experience with prettier, commit hooks, scripts and so on.\n\nIn the project root, JHipster generates configuration files for tools like git, prettier, eslint, husky, and others that are well known and you can find references in the web.\n\n`/src/*` structure follows default Java structure.\n\n- `.yo-rc.json` - Yeoman configuration file\n  JHipster configuration is stored in this file at `generator-jhipster` key. You may find `generator-jhipster-*` for specific blueprints configuration.\n- `.yo-resolve` (optional) - Yeoman conflict resolver\n  Allows to use a specific action when conflicts are found skipping prompts for files that matches a pattern. Each line should match `[pattern] [action]` with pattern been a [Minimatch](https://github.com/isaacs/minimatch#minimatch) pattern and action been one of skip (default if ommited) or force. Lines starting with `#` are considered comments and are ignored.\n- `.jhipster/*.json` - JHipster entity configuration files\n\n- `npmw` - wrapper to use locally installed npm.\n  JHipster installs Node and npm locally using the build tool by default. This wrapper makes sure npm is installed locally and uses it avoiding some differences different versions can cause. By using `./npmw` instead of the traditional `npm` you can configure a Node-less environment to develop or test your application.\n- `/src/main/docker` - Docker configurations for the application and services that the application depends on\n\n## Development\n\nBefore you can build this project, you must install and configure the following dependencies on your machine:\n\n1. [Node.js][]: We use Node to run a development web server and build the project.\n   Depending on your system, you can install Node either from source or as a pre-packaged bundle.\n\nAfter installing Node, you should be able to run the following command to install development tools.\nYou will only need to run this command when dependencies change in [package.json](package.json).\n\n```\nnpm install\n```\n\nWe use npm scripts and [Angular CLI][] with [Webpack][] as our build system.\n\nRun the following commands in two separate terminals to create a blissful development experience where your browser\nauto-refreshes when files change on your hard drive.\n\n```\n./mvnw\nnpm start\n```\n\nNpm is also used to manage CSS and JavaScript dependencies used in this application. You can upgrade dependencies by\nspecifying a newer version in [package.json](package.json). You can also run `npm update` and `npm install` to manage dependencies.\nAdd the `help` flag on any command to see how you can use it. For example, `npm help update`.\n\nThe `npm run` command will list all of the scripts available to run for this project.\n\n### PWA Support\n\nJHipster ships with PWA (Progressive Web App) support, and it's turned off by default. One of the main components of a PWA is a service worker.\n\nThe service worker initialization code is disabled by default. To enable it, uncomment the following code in `src/main/webapp/app/app.module.ts`:\n\n```typescript\nServiceWorkerModule.register('ngsw-worker.js', { enabled: false }),\n```\n\n### Managing dependencies\n\nFor example, to add [Leaflet][] library as a runtime dependency of your application, you would run following command:\n\n```\nnpm install --save --save-exact leaflet\n```\n\nTo benefit from TypeScript type definitions from [DefinitelyTyped][] repository in development, you would run following command:\n\n```\nnpm install --save-dev --save-exact @types/leaflet\n```\n\nThen you would import the JS and CSS files specified in library's installation instructions so that [Webpack][] knows about them:\nEdit [src/main/webapp/app/app.module.ts](src/main/webapp/app/app.module.ts) file:\n\n```\nimport 'leaflet/dist/leaflet.js';\n```\n\nEdit [src/main/webapp/content/scss/vendor.scss](src/main/webapp/content/scss/vendor.scss) file:\n\n```\n@import 'leaflet/dist/leaflet.css';\n```\n\nNote: There are still a few other things remaining to do for Leaflet that we won't detail here.\n\nFor further instructions on how to develop with JHipster, have a look at [Using JHipster in development][].\n\n### Developing Microfrontend\n\nMicroservices doesn't contain every required backend feature to allow microfrontends to run alone.\nYou must start a pre-built gateway version or from source.\n\nStart gateway from source:\n\n```\ncd gateway\nnpm run docker:db:up # start database if necessary\nnpm run docker:others:up # start service discovery and authentication service if necessary\nnpm run app:start # alias for ./(mvnw|gradlew)\n```\n\nMicrofrontend's `build-watch` script is configured to watch and compile microfrontend's sources and synchronizes with gateway's frontend.\nStart it using:\n\n```\ncd microfrontend\nnpm run docker:db:up # start database if necessary\nnpm run build-watch\n```\n\nIt's possible to run microfrontend's frontend standalone using:\n\n```\ncd microfrontend\nnpm run docker:db:up # start database if necessary\nnpm watch # alias for `npm start` and `npm run backend:start` in parallel\n```\n\n### Using Angular CLI\n\nYou can also use [Angular CLI][] to generate some custom client code.\n\nFor example, the following command:\n\n```\nng generate component my-component\n```\n\nwill generate few files:\n\n```\ncreate src/main/webapp/app/my-component/my-component.component.html\ncreate src/main/webapp/app/my-component/my-component.component.ts\nupdate src/main/webapp/app/app.module.ts\n```\n\n### JHipster Control Center\n\nJHipster Control Center can help you manage and control your application(s). You can start a local control center server (accessible on http://localhost:7419) with:\n\n```\ndocker compose -f src/main/docker/jhipster-control-center.yml up\n```\n\n### OAuth 2.0 / OpenID Connect\n\nCongratulations! You've selected an excellent way to secure your JHipster application. If you're not sure what OAuth and OpenID Connect (OIDC) are, please see [What the Heck is OAuth?](https://developer.okta.com/blog/2017/06/21/what-the-heck-is-oauth)\n\nTo log in to your app, you'll need to have [Keycloak](https://keycloak.org) up and running. The JHipster Team has created a Docker container for you that has the default users and roles. Start Keycloak using the following command.\n\n```\ndocker compose -f src/main/docker/keycloak.yml up\n```\n\nThe security settings in `src/main/resources/config/application.yml` are configured for this image.\n\n```yaml\nspring:\n  ...\n  security:\n    oauth2:\n      client:\n        provider:\n          oidc:\n            issuer-uri: http://localhost:9080/realms/jhipster\n        registration:\n          oidc:\n            client-id: web_app\n            client-secret: web_app\n            scope: openid,profile,email\n```\n\nSome of Keycloak configuration is now done in build time and the other part before running the app, here is the [list](https://www.keycloak.org/server/all-config) of all build and configuration options.\n\nBefore moving to production, please make sure to follow this [guide](https://www.keycloak.org/server/configuration) for better security and performance.\n\nAlso, you should never use `start-dev` nor `KC_DB=dev-file` in production.\n\nWhen using Kubernetes, importing should be done using init-containers (with a volume when using `db=dev-file`).\n\n### Okta\n\nIf you'd like to use Okta instead of Keycloak, it's pretty quick using the [Okta CLI](https://cli.okta.com/). After you've installed it, run:\n\n```shell\nokta register\n```\n\nThen, in your JHipster app's directory, run `okta apps create` and select **JHipster**. This will set up an Okta app for you, create `ROLE_ADMIN` and `ROLE_USER` groups, create a `.okta.env` file with your Okta settings, and configure a `groups` claim in your ID token.\n\nRun `source .okta.env` and start your app with Maven or Gradle. You should be able to sign in with the credentials you registered with.\n\nIf you're on Windows, you should install [WSL](https://docs.microsoft.com/en-us/windows/wsl/install-win10) so the `source` command will work.\n\nIf you'd like to configure things manually through the Okta developer console, see the instructions below.\n\nFirst, you'll need to create a free developer account at \u003chttps://developer.okta.com/signup/\u003e. After doing so, you'll get your own Okta domain, that has a name like `https://dev-123456.okta.com`.\n\nModify `src/main/resources/config/application.yml` to use your Okta settings.\n\n```yaml\nspring:\n  ...\n  security:\n    oauth2:\n      client:\n        provider:\n          oidc:\n            issuer-uri: https://{yourOktaDomain}/oauth2/default\n        registration:\n          oidc:\n            client-id: {clientId}\n            client-secret: {clientSecret}\nsecurity:\n```\n\nCreate an OIDC App in Okta to get a `{clientId}` and `{clientSecret}`. To do this, log in to your Okta Developer account and navigate to **Applications** \u003e **Add Application**. Click **Web** and click the **Next** button. Give the app a name you’ll remember, specify `http://localhost:8080` as a Base URI, and `http://localhost:8080/login/oauth2/code/oidc` as a Login Redirect URI. Click **Done**, then Edit and add `http://localhost:8080` as a Logout redirect URI. Copy and paste the client ID and secret into your `application.yml` file.\n\nCreate a `ROLE_ADMIN` and `ROLE_USER` group and add users into them. Modify e2e tests to use this account when running integration tests. You'll need to change credentials in `src/test/javascript/e2e/account/account.spec.ts` and `src/test/javascript/e2e/admin/administration.spec.ts`.\n\nNavigate to **API** \u003e **Authorization Servers**, click the **Authorization Servers** tab and edit the default one. Click the **Claims** tab and **Add Claim**. Name it \"groups\", and include it in the ID Token. Set the value type to \"Groups\" and set the filter to be a Regex of `.*`.\n\nAfter making these changes, you should be good to go! If you have any issues, please post them to [Stack Overflow](https://stackoverflow.com/questions/tagged/jhipster). Make sure to tag your question with \"jhipster\" and \"okta\".\n\n### Auth0\n\nIf you'd like to use [Auth0](https://auth0.com/) instead of Keycloak, follow the configuration steps below:\n\n- Create a free developer account at \u003chttps://auth0.com/signup\u003e. After successful sign-up, your account will be associated with a unique domain like `dev-xxx.us.auth0.com`\n- Create a new application of type `Regular Web Applications`. Switch to the `Settings` tab, and configure your application settings like:\n  - Allowed Callback URLs: `http://localhost:8080/login/oauth2/code/oidc`\n  - Allowed Logout URLs: `http://localhost:8080/`\n- Navigate to **User Management** \u003e **Roles** and create new roles named `ROLE_ADMIN`, and `ROLE_USER`.\n- Navigate to **User Management** \u003e **Users** and create a new user account. Click on the **Role** tab to assign roles to the newly created user account.\n- Navigate to **Auth Pipeline** \u003e **Rules** and create a new Rule. Choose `Empty rule` template. Provide a meaningful name like `JHipster claims` and replace `Script` content with the following and Save.\n\n```javascript\nfunction (user, context, callback) {\n  user.preferred_username = user.email;\n  const roles = (context.authorization || {}).roles;\n\n  function prepareCustomClaimKey(claim) {\n    return `https://www.jhipster.tech/${claim}`;\n  }\n\n  const rolesClaim = prepareCustomClaimKey('roles');\n\n  if (context.idToken) {\n    context.idToken[rolesClaim] = roles;\n  }\n\n  if (context.accessToken) {\n    context.accessToken[rolesClaim] = roles;\n  }\n\n  callback(null, user, context);\n}\n```\n\n- In your `JHipster` application, modify `src/main/resources/config/application.yml` to use your Auth0 application settings:\n\n```yaml\nspring:\n  ...\n  security:\n    oauth2:\n      client:\n        provider:\n          oidc:\n            # make sure to include the ending slash!\n            issuer-uri: https://{your-auth0-domain}/\n        registration:\n          oidc:\n            client-id: {clientId}\n            client-secret: {clientSecret}\n            scope: openid,profile,email\njhipster:\n  ...\n  security:\n    oauth2:\n      audience:\n        - https://{your-auth0-domain}/api/v2/\n```\n\n### Doing API-First development using openapi-generator-cli\n\n[OpenAPI-Generator]() is configured for this application. You can generate API code from the `src/main/resources/swagger/api.yml` definition file by running:\n\n```bash\n./mvnw generate-sources\n```\n\nThen implements the generated delegate classes with `@Service` classes.\n\nTo edit the `api.yml` definition file, you can use a tool such as [Swagger-Editor](). Start a local instance of the swagger-editor using docker by running: `docker compose -f src/main/docker/swagger-editor.yml up -d`. The editor will then be reachable at [http://localhost:7742](http://localhost:7742).\n\nRefer to [Doing API-First development][] for more details.\n\n## Building for production\n\n### Packaging as jar\n\nTo build the final jar and optimize the Neofin application for production, run:\n\n```\n./mvnw -Pprod clean verify\n```\n\nThis will concatenate and minify the client CSS and JavaScript files. It will also modify `index.html` so it references these new files.\nTo ensure everything worked, run:\n\n```\njava -jar target/*.jar\n```\n\nThen navigate to [http://localhost:8081](http://localhost:8081) in your browser.\n\nRefer to [Using JHipster in production][] for more details.\n\n### Packaging as war\n\nTo package your application as a war in order to deploy it to an application server, run:\n\n```\n./mvnw -Pprod,war clean verify\n```\n\n## Testing\n\nTo launch your application's tests, run:\n\n```\n./mvnw verify\n```\n\n### Client tests\n\nUnit tests are run by [Jest][]. They're located in [src/test/javascript/](src/test/javascript/) and can be run with:\n\n```\nnpm test\n```\n\n### Other tests\n\nPerformance tests are run by [Gatling][] and written in Scala. They're located in [src/test/java/gatling/simulations](src/test/java/gatling/simulations).\n\nYou can execute all Gatling tests with\n\n```\n./mvnw gatling:test\n```\n\nFor more information, refer to the [Running tests page][].\n\n### Code quality\n\nSonar is used to analyse code quality. You can start a local Sonar server (accessible on http://localhost:9001) with:\n\n```\ndocker compose -f src/main/docker/sonar.yml up -d\n```\n\nNote: we have turned off forced authentication redirect for UI in [src/main/docker/sonar.yml](src/main/docker/sonar.yml) for out of the box experience while trying out SonarQube, for real use cases turn it back on.\n\nYou can run a Sonar analysis with using the [sonar-scanner](https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner) or by using the maven plugin.\n\nThen, run a Sonar analysis:\n\n```\n./mvnw -Pprod clean verify sonar:sonar -Dsonar.login=admin -Dsonar.password=admin\n```\n\nIf you need to re-run the Sonar phase, please be sure to specify at least the `initialize` phase since Sonar properties are loaded from the sonar-project.properties file.\n\n```\n./mvnw initialize sonar:sonar -Dsonar.login=admin -Dsonar.password=admin\n```\n\nAdditionally, Instead of passing `sonar.password` and `sonar.login` as CLI arguments, these parameters can be configured from [sonar-project.properties](sonar-project.properties) as shown below:\n\n```\nsonar.login=admin\nsonar.password=admin\n```\n\nFor more information, refer to the [Code quality page][].\n\n## Using Docker to simplify development (optional)\n\nYou can use Docker to improve your JHipster development experience. A number of docker-compose configuration are available in the [src/main/docker](src/main/docker) folder to launch required third party services.\n\nFor example, to start a oracle database in a docker container, run:\n\n```\ndocker compose -f src/main/docker/oracle.yml up -d\n```\n\nTo stop it and remove the container, run:\n\n```\ndocker compose -f src/main/docker/oracle.yml down\n```\n\nYou can also fully dockerize your application and all the services that it depends on.\nTo achieve this, first build a docker image of your app by running:\n\n```\nnpm run java:docker\n```\n\nOr build a arm64 docker image when using an arm64 processor os like MacOS with M1 processor family running:\n\n```\nnpm run java:docker:arm64\n```\n\nThen run:\n\n```\ndocker compose -f src/main/docker/app.yml up -d\n```\n\nWhen running Docker Desktop on MacOS Big Sur or later, consider enabling experimental `Use the new Virtualization framework` for better processing performance ([disk access performance is worse](https://github.com/docker/roadmap/issues/7)).\n\nFor more information refer to [Using Docker and Docker-Compose][], this page also contains information on the docker-compose sub-generator (`jhipster docker-compose`), which is able to generate docker configurations for one or several JHipster applications.\n\n## Continuous Integration (optional)\n\nTo configure CI for your project, run the ci-cd sub-generator (`jhipster ci-cd`), this will let you generate configuration files for a number of Continuous Integration systems. Consult the [Setting up Continuous Integration][] page for more information.\n\n[JHipster Homepage and latest documentation]: https://www.jhipster.tech\n[JHipster 8.0.0-beta.2 archive]: https://www.jhipster.tech/documentation-archive/v8.0.0-beta.2\n[Doing microservices with JHipster]: https://www.jhipster.tech/documentation-archive/v8.0.0-beta.2/microservices-architecture/\n[Using JHipster in development]: https://www.jhipster.tech/documentation-archive/v8.0.0-beta.2/development/\n[Service Discovery and Configuration with the JHipster-Registry]: https://www.jhipster.tech/documentation-archive/v8.0.0-beta.2/microservices-architecture/#jhipster-registry\n[Using Docker and Docker-Compose]: https://www.jhipster.tech/documentation-archive/v8.0.0-beta.2/docker-compose\n[Using JHipster in production]: https://www.jhipster.tech/documentation-archive/v8.0.0-beta.2/production/\n[Running tests page]: https://www.jhipster.tech/documentation-archive/v8.0.0-beta.2/running-tests/\n[Code quality page]: https://www.jhipster.tech/documentation-archive/v8.0.0-beta.2/code-quality/\n[Setting up Continuous Integration]: https://www.jhipster.tech/documentation-archive/v8.0.0-beta.2/setting-up-ci/\n[Node.js]: https://nodejs.org/\n[NPM]: https://www.npmjs.com/\n[Webpack]: https://webpack.github.io/\n[BrowserSync]: https://www.browsersync.io/\n[Jest]: https://facebook.github.io/jest/\n[Leaflet]: https://leafletjs.com/\n[DefinitelyTyped]: https://definitelytyped.org/\n[Angular CLI]: https://cli.angular.io/\n[Gatling]: https://gatling.io/\n[OpenAPI-Generator]: https://openapi-generator.tech\n[Swagger-Editor]: https://editor.swagger.io\n[Doing API-First development]: https://www.jhipster.tech/documentation-archive/v8.0.0-beta.2/doing-api-first-development/\n\n\n\u003cp xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dct=\"http://purl.org/dc/terms/\"\u003e\u003ca property=\"dct:title\" rel=\"cc:attributionURL\" href=\"https://github.com/KOSASIH/Neofin\"\u003eNeofin\u003c/a\u003e by \u003ca rel=\"cc:attributionURL dct:creator\" property=\"cc:attributionName\" href=\"https://www.linkedin.com/in/kosasih-81b46b5a\"\u003eKOSASIH\u003c/a\u003e is licensed under \u003ca href=\"http://creativecommons.org/licenses/by/4.0/?ref=chooser-v1\" target=\"_blank\" rel=\"license noopener noreferrer\" style=\"display:inline-block;\"\u003eAttribution 4.0 International\u003cimg style=\"height:22px!important;margin-left:3px;vertical-align:text-bottom;\" src=\"https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1\"\u003e\u003cimg style=\"height:22px!important;margin-left:3px;vertical-align:text-bottom;\" src=\"https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1\"\u003e\u003c/a\u003e\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkosasih%2Fneofin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkosasih%2Fneofin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkosasih%2Fneofin/lists"}