clean-architecture-manga Documentation

Cyclone: Clean Architecture with .NET6, C#10 and React+Redux. Use cases as central organizing structure, completely testable, decoupled from frameworks

RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy clean-architecture-manga on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name clean-architecture-manga -p 5001:5001 --restart always mcr.microsoft.com/mssql/server:2019-latest
Configured Services & Ports
βš™οΈ accounts-api
image: ${DOCKER_REGISTRY-}accounts
πŸ”Œ Ports: 5001:5001
βš™οΈ accounts-api-seed
image: build locally
βš™οΈ identity-server
image: ${DOCKER_REGISTRY-}identityserver
πŸ”Œ Ports: 5000:5000
βš™οΈ sql1
image: mcr.microsoft.com/mssql/server:2019-latest
πŸ”Œ Ports: 1433:1433
docker-compose.yml
yaml (docker-compose.yml)
version: '3.4'

services:
  accounts-api:
    image: ${DOCKER_REGISTRY-}accounts
    container_name: "accounts-api"
    build:
      context: ../accounts-api/
      dockerfile: src/WebApi/Dockerfile
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://*:5001
      - ASPNETCORE_Kestrel__Certificates__Default__Password=MyCertificatePassword
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/localhost.pfx
      - PersistenceModule__DefaultConnection=Server=sql1;User Id=sa;Password=;Database=Accounts;
      - AuthenticationModule__AuthorityUrl=https://localhost:5000
    volumes:
      - ../.docker/https:/https:ro
    depends_on:
      - sql1
      - accounts-api-seed
      - identity-server
    ports:
      - "5001:5001"
  accounts-api-seed:
    container_name: "accounts-api-seed"
    build:
      context: ../accounts-api/
      dockerfile: ../accounts-api-seed/Dockerfile
    environment:
      - PersistenceModule__DefaultConnection=Server=sql1;User Id=sa;Password=;Database=Accounts;
    command: bash -c "/root/.dotnet/tools/dotnet-ef database update --project src/Infrastructure --startup-project src/WebApi"
    depends_on:
      - sql1
  identity-server:
    image: ${DOCKER_REGISTRY-}identityserver
    container_name: "identity-server"
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://*:5000
      - ASPNETCORE_Kestrel__Certificates__Default__Password=MyCertificatePassword
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/localhost.pfx
      - IDENTITY_SERVER_ORIGIN=https://localhost:5000
      - RedirectUris=https://localhost:5002/signin-oidc
      - PostLogoutRedirectUris=https://localhost:5002
      - AllowedCorsOrigins=https://localhost:5002
    volumes:
      - ../.docker/https:/https:ro
    build:
      context: ../
      dockerfile: identity-server/Dockerfile
    ports:
      - "5000:5000"
  sql1:
    image: "mcr.microsoft.com/mssql/server:2019-latest"
    environment:
      SA_PASSWORD: ""
      ACCEPT_EULA: "Y"
      MSSQL_PID: "Developer"
    ports:
      - "1433:1433"

File: README.md

Clean Architecture with .NET Core & React+Redux :cyclone:

Sample implementation of the Clean Architecture Principles with .NET Core. Use cases as central organizing structure, decoupled from frameworks and technology details. Built by small components that are developed and tested in isolation.

We support two versions:

Hit the WATCH button to get the latest Clean Architecture updates.

Manga is a Virtual Wallet Solution in which the customer register an account then manage the balance by Deposit, Withdraw and Transfer operations.

We also support the React client:

Build & Run

To startup the whole solution, execute the following command:

Windows:

ps1
PS cd .docker && ./setup.ps1

MacOS:

sh
$ cd .docker && ./setup.sh

Then the following containers should be running on docker ps:

Application URL
NGINX https://wallet.local:8081
Wallet SPA https://wallet.local:8081
Accounts API https://wallet.local:8081/accounts-api
Identity Server https://wallet.local:8081/identity-server
SQL Server Server=localhost;User Id=sa;Password=<YourStrong!Passw0rd>;Database=Accounts;

Browse to https://wallet.local:8081 then click on Log In. If asked trust the self-signed certificate.

Motivation

Learn how to design modular applications.

Explore the .NET Core features.

Learn how to design modular applications

Learning how to design modular applications will help you become a better engineer. Designing modular applications is the holy grail of software architecture, it is hard to find engineers experienced on designing applications which allows adding new features in a steady speed.

Explore the .NET Core features

.NET Core brings a sweet development environment, an extensible and cross-platform framework. We will explore the benefits of it in the infrastructure layer and we will reduce its importance in the application and domain layers. The same rule is applied for modern C# language syntax.

Learn from the open source community

This is continually updated, open source project.

Contributions are welcome!

Contributing

Learn from the community.

Feel free to submit pull requests to help:

  • Fix errors.
  • Refactoring.
  • Build the Front End.
  • Submit issues and bugs.

The DiscussΓ£o em PortuguΓͺs is pinned for the large community of brazillian developers.

Index of Clean Architecture Manga

[Home](https://github.com/ivanpaulovich/clean-architecture-manga/wiki)

[Use Cases](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/Use-Cases)

[Flow of Control](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/Flow-of-Control)

[Architecture Styles](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/Architecture-Styles)

[Design Patterns](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/Design-Patterns)

[Domain-Driven Design Patterns](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/Domain-Driven-Design-Patterns)

[Separation of Concerns](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/Separation-of-Concerns#separation-of-concerns)

[Encapsulation](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/Encapsulation)

[Test-Driven Development TDD](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/Test-Driven-Development)

[Fakes](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/Fakes)

[SOLID](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/SOLID)

[.NET Core Web API](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/.NET-Core-WebAPI#.net-core-webapi)

[Entity Framework Core](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/Entity-Framework-Core)

[Environment Configurations](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/Environment-Configurations)

[DevOps](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/DevOps)

[Docker](https://github.com/ivanpaulovich/clean-architecture-manga/wiki/Docker)

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Ivan Paulovich🎨 ⚠️ πŸ’» Petr SedlÑček⚠️ πŸ’» Gus🎨 ⚠️ arulconsultant⚠️ Guilherme Silva🎨 ⚠️ πŸ’»
OndΕ™ej Ε torc🎨 ⚠️ Marlon Miranda da Silva🎨 ⚠️ NicoCG⚠️ Filipe Augusto Lima de Souza🎨 ⚠️ πŸ’» sshaw-sml⚠️ πŸ’»
Matheus Neder⚠️ Π΄ΠΈΠΌΠΈΡ‚Ρ€ΠΈΠΉ ΠΌΠ°Ρ‚ΠΈΠ΅Π½ΠΊΠΎπŸŽ¨ ⚠️ morphlogic⚠️ πŸ’» Felipe Lambert⚠️ πŸ’» Philippe Matray🎨 πŸ’»
Leandro FagundesπŸ’¬ Bart van OmmenπŸ€” πŸ’» qpippopπŸ€” Cesar PereiraπŸ’» Edvaldo FariasπŸ’»
Sergio BroccardiπŸ’» cuno92πŸ’» VinΓ­cius MamorΓ©πŸ’» dyavolickπŸ’» felipetofoli🎨 πŸ’»
Charith De SilvaπŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

Hit the FORK button and show Clean Architecture on your profile.


File: identity-server/wwwroot/lib/jquery/README.md

jQuery

jQuery is a fast, small, and feature-rich JavaScript library.

For information on how to get started and how to use jQuery, please see jQuery's documentation.
For source files and issues, please visit the jQuery repo.

If upgrading, please see the blog post for 3.5.0. This includes notable differences from the previous version and a more readable changelog.

Including jQuery

Below are some of the most common ways to include jQuery.

Browser

Script tag

html
<script src="https://code.jquery.com/jquery-3.5.0.min.js"></script>

Babel

Babel is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.

js
import $ from "jquery";

Browserify/Webpack

There are several ways to use Browserify and Webpack. For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...

js
var $ = require( "jquery" );

AMD (Asynchronous Module Definition)

AMD is a module format built for the browser. For more information, we recommend require.js' documentation.

js
define( [ "jquery" ], function( $ ) {

} );

Node

To include jQuery in Node, first install with npm.

sh
npm install jquery

For jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as jsdom. This can be useful for testing purposes.

js
const { JSDOM } = require( "jsdom" );
const { window } = new JSDOM( "" );
const $ = require( "jquery" )( window );

File: identity-server/wwwroot/lib/bootstrap/README.md

Bootstrap

Table of contents

Quick start

Several quick start options are available:

  • Download the latest release.
  • Clone the repo: git clone https://github.com/twbs/bootstrap.git
  • Install with npm: npm install bootstrap
  • Install with yarn: yarn add [email protected]
  • Install with Composer: composer require twbs/bootstrap:4.4.1
  • Install with NuGet: CSS: Install-Package bootstrap Sass: Install-Package bootstrap.sass

Read the Getting started page for information on the framework contents, templates and examples, and more.

Status















What's included

Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this:

text
bootstrap/
└── dist/
    β”œβ”€β”€ css/
    β”‚   β”œβ”€β”€ bootstrap-grid.css
    β”‚   β”œβ”€β”€ bootstrap-grid.css.map
    β”‚   β”œβ”€β”€ bootstrap-grid.min.css
    β”‚   β”œβ”€β”€ bootstrap-grid.min.css.map
    β”‚   β”œβ”€β”€ bootstrap-reboot.css
    β”‚   β”œβ”€β”€ bootstrap-reboot.css.map
    β”‚   β”œβ”€β”€ bootstrap-reboot.min.css
    β”‚   β”œβ”€β”€ bootstrap-reboot.min.css.map
    β”‚   β”œβ”€β”€ bootstrap.css
    β”‚   β”œβ”€β”€ bootstrap.css.map
    β”‚   β”œβ”€β”€ bootstrap.min.css
    β”‚   └── bootstrap.min.css.map
    └── js/
        β”œβ”€β”€ bootstrap.bundle.js
        β”œβ”€β”€ bootstrap.bundle.js.map
        β”œβ”€β”€ bootstrap.bundle.min.js
        β”œβ”€β”€ bootstrap.bundle.min.js.map
        β”œβ”€β”€ bootstrap.js
        β”œβ”€β”€ bootstrap.js.map
        β”œβ”€β”€ bootstrap.min.js
        └── bootstrap.min.js.map

We provide compiled CSS and JS (bootstrap.*), as well as compiled and minified CSS and JS (bootstrap.min.*). source maps (bootstrap.*.map) are available for use with certain browsers' developer tools. Bundled JS files (bootstrap.bundle.js and minified bootstrap.bundle.min.js) include Popper, but not jQuery.

Bugs and feature requests

Have a bug or a feature request? Please first read the issue guidelines and search for existing and closed issues. If your problem or idea is not addressed yet, please open a new issue.

Documentation

Bootstrap's documentation, included in this repo in the root directory, is built with Jekyll and publicly hosted on GitHub Pages at https://getbootstrap.com/. The docs may also be run locally.

Documentation search is powered by Algolia's DocSearch. Working on our search? Be sure to set debug: true in site/docs/4.4/assets/js/src/search.js file.

Running documentation locally

  1. Run through the tooling setup to install Jekyll (the site builder) and other Ruby dependencies with bundle install.
  2. Run npm install to install Node.js dependencies.
  3. Run npm start to compile CSS and JavaScript files, generate our docs, and watch for changes.
  4. Open http://localhost:9001 in your browser, and voilΓ .

Learn more about using Jekyll by reading its documentation.

Documentation for previous releases

You can find all our previous releases docs on https://getbootstrap.com/docs/versions/.

Previous releases and their documentation are also available for download.

Contributing

Please read through our contributing guidelines. Included are directions for opening issues, coding standards, and notes on development.

Moreover, if your pull request contains JavaScript patches or features, you must include relevant unit tests. All HTML and CSS should conform to the Code Guide, maintained by Mark Otto.

Editor preferences are available in the editor config for easy use in common text editors. Read more and download plugins at https://editorconfig.org/.

Community

Get updates on Bootstrap's development and chat with the project maintainers and community members.

  • Follow @getbootstrap on Twitter.
  • Read and subscribe to The Official Bootstrap Blog.
  • Join the official Slack room.
  • Chat with fellow Bootstrappers in IRC. On the irc.freenode.net server, in the ##bootstrap channel.
  • Implementation help may be found at Stack Overflow (tagged bootstrap-4).
  • Developers should use the keyword bootstrap on packages which modify or add to the functionality of Bootstrap when distributing through npm or similar delivery mechanisms for maximum discoverability.

Versioning

For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under the Semantic Versioning guidelines. Sometimes we screw up, but we adhere to those rules whenever possible.

See the Releases section of our GitHub project for changelogs for each release version of Bootstrap. Release announcement posts on the official Bootstrap blog contain summaries of the most noteworthy changes made in each release.

Creators

Mark Otto

Jacob Thornton

Thanks

Thanks to BrowserStack for providing the infrastructure that allows us to test in real browsers!

Backers

Thank you to all our backers! πŸ™ [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]










Code and documentation copyright 2011-2019 the Bootstrap Authors and Twitter, Inc. Code released under the MIT License. Docs released under Creative Commons.


File: wallet-spa/README.md

This project was bootstrapped with Create React App.

Available Scripts

In the project directory, you can run:

`npm start`

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

`npm test`

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

`npm run build`

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

See the section about deployment for more information.

`npm run eject`

Note: this is a one-way operation. Once you eject, you can’t go back!

If you aren’t satisfied with the build tool and configuration choices, you can eject at any time. This command will remove the single build dependency from your project.

Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except eject will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.

You don’t have to ever use eject. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.

Learn More

You can learn more in the Create React App documentation.

To learn React, check out the React documentation.

Code Splitting

This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting

Analyzing the Bundle Size

This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size

Making a Progressive Web App

This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app

Advanced Configuration

This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration

Deployment

This section has moved here: https://facebook.github.io/create-react-app/docs/deployment

`npm run build` fails to minify

This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify