{"id":15824482,"url":"https://github.com/sjefvanleeuwen/fieldlab-reference-architecture","last_synced_at":"2025-04-01T08:53:34.896Z","repository":{"id":115780202,"uuid":"146657618","full_name":"sjefvanleeuwen/fieldlab-reference-architecture","owner":"sjefvanleeuwen","description":"Reference Architecture for the Innovation Lab. This system is composed of docker images from other projects","archived":false,"fork":false,"pushed_at":"2019-04-15T13:35:10.000Z","size":2766,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-10-06T08:42:16.567Z","etag":null,"topics":["common-ground","commonground","fieldlab","gbi","gemma","hackathon","innovatie","innovatielab","vng"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sjefvanleeuwen.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":"2018-08-29T20:56:13.000Z","updated_at":"2019-10-18T14:24:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"9275a2db-a849-4718-b333-b73dd8f37c8a","html_url":"https://github.com/sjefvanleeuwen/fieldlab-reference-architecture","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/sjefvanleeuwen%2Ffieldlab-reference-architecture","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjefvanleeuwen%2Ffieldlab-reference-architecture/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjefvanleeuwen%2Ffieldlab-reference-architecture/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjefvanleeuwen%2Ffieldlab-reference-architecture/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sjefvanleeuwen","download_url":"https://codeload.github.com/sjefvanleeuwen/fieldlab-reference-architecture/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246612494,"owners_count":20805354,"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":["common-ground","commonground","fieldlab","gbi","gemma","hackathon","innovatie","innovatielab","vng"],"created_at":"2024-10-05T08:42:22.671Z","updated_at":"2025-04-01T08:53:34.876Z","avatar_url":"https://github.com/sjefvanleeuwen.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Innovation Lab reference Architecture\n**under construction**\n\nReference Architecture for the innovation lab. This system is composed of docker images from projects incubated in the lab. Some of the images support generic design patterns, while others are exact implementations of standards. Together they form a working system.\n\nOur main docker hub can be found on: https://hub.docker.com/\n\n## Mission/Vision\n\nThe primary goal of the lab is to provide a *low code* platform that can tackle real world problems from a user centric design perspective, quickly and effortlessly during Innovative Hackathons and Design Sprints with multiple stakeholders. Compared to other low code platforms, the building blocks used are community driven, open source and exhibits no compiler, codegenerator, nor infrastructure vendor lock-in. It achieves this by using open standards in its 5layer technical architecture.\n\n## Ecosystem\n\n### Overview (Dutch)\n![eco-system](./doc/ecosystem.jpg)\n\n### Addendum (Dutch)\n![eco-system](./doc/ecosystem-addendum.jpg)\n\n## Open(source) standards\n\n### .NET Core / Standard\n\nA free, cross platform open source implementation of the managed .NET framework. The lab develops in .NET standard whenever possible as this version is a set of APIs that all .NET platforms have to implement. This unifies the .NET platforms and prevents future fragmentation.\n\n### ODATA RESTful\n\nOData (Open Data Protocol) is an ISO/IEC approved, OASIS standard that defines a set of best practices for building and consuming RESTful APIs. OData RESTful APIs are easy to consume. The OData metadata, a machine-readable description of the data model of the APIs, enables the creation of powerful generic client proxies and tools.\n\n### Object Management Group (OMG) \n\nThe Object Management Group (OMG) is an international, open membership, not-for-profit technology standards consortium. OMG Task Forces develop enterprise integration standards for a wide range of technologies and industries.\n\nThe lab implements the *“triple crown”* of process improvement standards. BPMN, DMN and CMMN modelling languages.\n\n#### BPMN\n\nTo achieve process flexibility we design / model business processes in Business Process Model Notation and evaluate open source BPMN engines.  \nhttps://www.omg.org/bpmn/\n\n\n#### DMN\n\nDecision Model and Notation (DMN) is a standard approach for describing and modeling repeatable decisions within organizations to ensure that decision models are interchangeable across organizations.  \nhttps://www.omg.org/dmn/\n\n#### CMMN\n\nhttps://www.omg.org/cmmn/\n\n## OpenXML\n\n*TBA*\n\n## OpenAPM\n\nFor application performance management (APM). We evaluate opensource components that provide means for:\n\n* Data Collection\n* Instrumentation\n* Transformation and Storage\n* Usage and Value Creation\n\n## OpenID Connect and OAuth 2.0\n\nIdentity Server 4 is used for OpenID Connect. It uses the in memory-store option. The server should function for authentication/authorisation, Claims for user's and API's.\n\n## Other API's used:\n\n### IRMA (I Reveal My Attributes)\n\nIRMA offers a solution to log in in a privacy-friendly way. When logging in, you reveal as a user some relevant properties (attributes) of yourself, via an IRMA app on your own mobile phone.\n\nIt does not need a public ledger, such as blockchain or a tangle to operate.\n\n\n## Technical Overview\nTechnical layers/overview of the docker images (in Dutch/Work in Progress):\n\n![5Layer](./doc/5layer.png)\n\n## project references\n\n[OpenAPI / OData RESTful](https://github.com/wigo4it/template-webapi-nswag/tree/entity-framework)\nODATA, the best way to RESTful. This project contains ODATA endpoint templates to write openapi services, supported by a rich ORM tool (Microsoft Entity Framework). It also integrates OpenAPM for performance logging and monitoring.\n\n[OpenID Connect IdentityServer4](https://github.com/sjefvanleeuwen/identity-server)  \nThis project dockerizes identityserver4.\n\n[Camunda Process Template](https://github.com/sjefvanleeuwen/camunda-process-template) \n[![Build Status](https://travis-ci.org/sjefvanleeuwen/camunda-process-template.svg?branch=master)](https://travis-ci.org/sjefvanleeuwen/camunda-process-template)  \n.NET Core console template that provides a harnas for deploying your BPMN flows as resources to Camunda and build external task workers.\n\n[Camunda Business Process Engine](http://camunda.org)  [![Build Status](https://travis-ci.org/camunda/camunda-bpm-platform.svg?branch=master)](https://travis-ci.org/camunda/camunda-bpm-platform)  \nWorkflow and Decision Automation Platform  \nOpen source platform for workflow and decision automation that brings business users and software developers together.\n\n[GEMMA Zaken](https://github.com/sjefvanleeuwen/gemma-zaken) [![Build Status](https://travis-ci.org/sjefvanleeuwen/gemma-zaken.svg?branch=master)](https://travis-ci.org/sjefvanleeuwen/gemma-zaken)  \nOpenAPI .NET Core test implementations for ZDS / Zaakgericht werken\n\n[SIGNALR Event Hub](https://github.com/sjefvanleeuwen/signalr-event-hub) \n[![Build Status](https://travis-ci.org/sjefvanleeuwen/signalr-event-hub.svg?branch=master)](https://travis-ci.org/sjefvanleeuwen/signalr-event-hub)  \nGeneric event hub mainly for front end signalling if an asycnhronous task has completed in the backend \n\n[BRP Basis Registratie Personen](https://github.com/sjefvanleeuwen/openapi-brp-fake)[![Build Status](https://travis-ci.org/sjefvanleeuwen/openapi-brp-fake.svg?branch=master)](https://travis-ci.org/sjefvanleeuwen/openapi-brp-fake)  \nProvides an OpenAPI service that serves a fake BRP (Basisregistratie Personen) implementation. The implementation will generate fake addresses, names based on random seed derived from a BSN (Burger Service Nummer / Social Security Number).\n\n[OpenXML Document Generator](https://github.com/sjefvanleeuwen/openxml-document-generator)  ![travis build](https://travis-ci.com/sjefvanleeuwen/openxml-document-generator.svg?branch=master)  \nGenerates documents from html into openxml standard.\n\n[IRMA (I Reveal My Attributes) API Server](https://travis-ci.org/privacybydesign/irma_api_server)  [![Build Status](https://travis-ci.org/privacybydesign/irma_api_server.svg?branch=master)](https://travis-ci.org/privacybydesign/irma_api_server)  \nThis is a server that sits between IRMA tokens such as the IRMA app on the one hand, and authorized ser\nvice or identity providers on the other hand. It handles all IRMA-specific cryptographic details of issuing credentials and verifying disclosure proofs on behalf of the service or identity provider. It exposes a RESTful JSON API driven by JWTs for authentication.\n\n[MINIO Object Storage Server](https://github.com/minio/minio)  \nMinio is an object storage server released under Apache License v2.0. It is compatible with Amazon S3 cloud storage service. It is best suited for storing unstructured data such as photos, videos, log files, backups and container / VM images. Size of an object can range from a few KBs to a maximum of 5TB.\n\n## 5Layer Composition\n\nHere's the YAML file which composes the complete references architecture for deployment on your (development) system. Please note that the IRMA server contains a private key in the config for your convenience and should therefore **not be used in production environments**.\n\nFor Azure container instances, please visit the following page:\n[Container Group Deployment to Azure](./compositions/5Layer/readme.md)\n\n```yaml\nversion: '3.4'\n\nservices:\n  # GEMMA ZDS Document Registratie OpenAPI\n  drc:\n    image: wigo4it/openapi-drc:alpha\n    hostname: drc\n    ports:\n      - \"5094:5094\"\n  # GEMMA BRP Basis Registratie Personen OpenAPI (fake generator)\n  brp:\n    image: wigo4it/openapi-brp-fake\n    hostname: brp\n    ports:\n      - \"5080:5080\"\n  # Business Process Engine, Rule Engine and Case Management  \n  camunda:\n    image: camunda/camunda-bpm-platform:latest\n    hostname: camunda\n    ports:\n      - \"8080:8080\"\n  # Intelligent Text Processing, document generator\n  itp:\n    image: wigo4it/oxmldocgen-api\n    hostname: itp\n    ports:\n      - \"5091:5091\"\n  # SignalR Event hun, websocket event streaming\n  signalr-event-hub:\n    image: wigo4it/signalr-event-hub\n    hostname: signalr-event-hub\n    ports:\n      - \"5051:5051\"\n  # OpenID Identityserver\n  identity-server:\n    image: wigo4it/identityserver4\n    environment:\n      - ASPNETCORE_ENVIRONMENT=Development\n    hostname: identity-server\n    ports:\n      - \"5099:80\"\n  # Redis In Memory Key/Value Store\n  redis:\n    image: redis\n    hostname: redis\n    ports: \n      - \"6379:6379\"\n    # MINIO S3 Bucket Storage\n  minio:\n    image: minio/minio\n    hostname: minio\n    command: server /data\n    environment:\n      - MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE\n      - MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\n    ports:\n      - \"9050:9000\"\n  # IRMA API Server\n  irma-api-server:\n    image: privacybydesign/irma_api_server\n    hostname: irma-api-server\n    ports:\n      - \"8088:8080\"\n    environment:\n      - IRMA_API_CONF_BASE64_JWT_PUBLICKEY=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxScmLzY25uKDaTldNn1cCKYOtwH5dxQtBo764zN0NZ4uwpTsq8Vyuc24LUBZMlYZfwjIDV41y9Nd2OUiDxgbEOaxVUIwJ8GQ4YEg+UdXmOeULxN0Ixdl7rM0HnRslGhu3UUbv9NBhWCBBewnA3Tr3oogzrznjDbW+JM7ahju169qAUDRM1iyhDwau87nK4/Zyjipdf0ZTWvnojlfvXpWsrSCiXYa/JSgo8wDz3kHyWO3sm1MHKFs5WZfG9J1On7ySqAzUzJOMhCt0m3hb8TimDho9nuhRkyjIl5IX7xAwJCSycCpHVVkhUY4G/+zwNb9ufSpld4JN09a0OuvtvTq0QIDAQAB\n      - IRMA_API_CONF_BASE64_JWT_PRIVATEKEY=MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDFJyYvNjbm4oNpOV02fVwIpg63Afl3FC0GjvrjM3Q1ni7ClOyrxXK5zbgtQFkyVhl/CMgNXjXL013Y5SIPGBsQ5rFVQjAnwZDhgSD5R1eY55QvE3QjF2XuszQedGyUaG7dRRu/00GFYIEF7CcDdOveiiDOvOeMNtb4kztqGO7Xr2oBQNEzWLKEPBq7zucrj9nKOKl1/RlNa+eiOV+9elaytIKJdhr8lKCjzAPPeQfJY7eybUwcoWzlZl8b0nU6fvJKoDNTMk4yEK3SbeFvxOKYOGj2e6FGTKMiXkhfvEDAkJLJwKkdVWSFRjgb/7PA1v259KmV3gk3T1rQ66+29OrRAgMBAAECggEAe6n21Z5YCbMDYrlMsqUnWXVvvXNLm1nYdEizLlhUCF3UTtFDMuuC7vEPGbNHP7+p9nj3owr5C4TlVOtE1dr0/0D08tm1gvpzej+ZA0OwuoRn+q9lJa3Djlpx0riMcvqer8Rth4Fnk9XYmHJsdkqcuNZDheoQA29SoFEZ7478IeUXAFyDRpS0EQlmUlTn5P4fEb8z3vSc7q2aY5wFUiaUKX0ugPK+777gi38h7fIwdNPY01k6jiF/97UcP/ANwt94aR3bu37mhuFeinVUi0tfjHo4LGL6P7exggK4sOQLLd2JIq3TEgMOmcALpx2LBFdXu7QjYd9wbzZwDx+aI0fQAQKBgQDzrQS6cQEGw60la1u85yi7g1Bca0RfyR+yYl6qH4H4rZGIXF9oTgZ9P0B46ZHwbgAekV+JKWZrPt26VBF1GyEo8fF6WJGQ/F1qw2Q5flMR2ueQIPrEFWA/g1TEFFVc6Fp2TS4xBtbWJg4FEbHu4xBycZYzUElqvD+So3nob6GukQKBgQDPH8b9Qcg5AYO6VD2xxAdwSBBlXZG3YQJknuVXGFQlbJRXuYxfnc3uUdb2DduK/sv18uH7mXRccJ8v/ucaKP+0t6AR+VdRFtzAzjKjoTwkPR4zcLkLaELk1/rgtokEKnWwE7UiBl1Fx3ntmK6OU5wr9UUiXMdyLJopV3g/RuoYQQKBgFRafbuI6QENdf/xJUXEg849y/DiVT4PYsCe2wRredO7Shj5WTHDaO2smsYAnTus6K+sRXU29rSDg8A/3/c5GAaTkrN2u5WEN1aBI03f1CPnMqgrMoP0nmf+L7bdDxvld4Nifm4MXwytCcdpc74troDfn05OKcwgNKWvn8D9++txAoGBAMXHXkgvLHXi0Fp4XoEE4uWAqsdgVeh5pcNXRz+nZ5Jk4DH0Z+pV0XKki1NhYCaVr0UnrEqH+ejbUeaOzTbZt3JldWA0bABuiFVDkG9XYwpnohMUrF4MLPRAmLtDEgr8UGzWJLxcv2wGUpNinCwkApinGGD7nyeTF5IqiBRELv0BAoGBAKUAFQLup+WiegQZBgplLje5wtu0fZs1rbDBG3dXEbwI1RHyMTx/Egt271+WwjcBVHKcYmHTOvdUmSzoRZJDrQpEB4EFEoUYYKlJ3+Udu8q5jcRzMs3KhTMfnriOKp6C3yRcfPcanhLfTpcTccHetUZRNxwgs9MK3LJh6pVScm+5\n      - IRMA_API_CONF_ENABLE_VERIFICATION=true\n      - IRMA_API_CONF_ENABLE_ISSUING=true\n      - IRMA_API_CONF_ALLOW_UNSIGNED_ISSUE_REQUESTS=true\n      - 'IRMA_API_CONF_AUTHORIZED_IDPS={\"wigo4it\": [\"*\"]}'\n\n```\n\n### Pull \u0026 Bring up the Images\n\n```\n$ docker-compose up -d\nCreating 5layer_signalr-event-hub_1 ... done\nCreating 5layer_itp_1               ... done\nCreating 5layer_brp_1               ... done\nCreating 5layer_camunda_1           ... done\nCreating 5layer_identity-server_1   ... done\nCreating 5layer_drc_1               ... done\nCreating 5layer_redis_1             ... done\n$ docker ps\nCONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS                              NAMES\n74cefb82c5c1        wigo4it/openapi-drc:alpha             \"dotnet drc.dll\"         2 minutes ago       Up 2 minutes        0.0.0.0:5094-\u003e5094/tcp             5layer_drc_1\ne5d0be01a8bf        redis                                 \"docker-entrypoint.s…\"   2 minutes ago       Up 2 minutes        0.0.0.0:6379-\u003e6379/tcp             5layer_redis_1\n4413fec4cb29        wigo4it/openapi-brp-fake              \"dotnet Org.OpenAPIT…\"   2 minutes ago       Up 2 minutes        0.0.0.0:5090-\u003e8080/tcp             5layer_brp_1\n240e75000c35        wigo4it/oxmldocgen-api                \"dotnet oxmldocgen-a…\"   2 minutes ago       Up 2 minutes        0.0.0.0:5091-\u003e5091/tcp             5layer_itp_1\n65342d42d155        wigo4it/identityserver4               \"dotnet Host.dll\"        2 minutes ago       Up 2 minutes        0.0.0.0:5099-\u003e80/tcp               5layer_identity-server_1\nfbccc0280ea0        camunda/camunda-bpm-platform:latest   \"/sbin/tini -- ./cam…\"   2 minutes ago       Up 2 minutes        8000/tcp, 0.0.0.0:8080-\u003e8080/tcp   5layer_camunda_1\na904577e4f32        wigo4it/signalr-event-hub             \"dotnet signalr-even…\"   2 minutes ago       Up 2 minutes        0.0.0.0:5051-\u003e5051/tcp             5layer_signalr-event-hub_1\n```\n\n### Check if Redis is running\n\nAttach a shell (not your docker container Id for Redis instance might vary:\n\n```\n$ docker exec -it e5d0be01a8bf39723c899de6ac6e602a7f71912b38de39929e67b33834c0582a /bin/sh\n# redis-cli -h localhost -p 6379 ping\nPONG\n#\n```\n\n## Docker Container Managment (Portainer)\n\nIf you like a GUI for your docker containers. Portainer is easy to setup:\n\n```\n$ docker volume create portainer_data\n$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer\n```\n\n![portainer](./doc/portainer.png)\n\n\n## Contributing\n\nPull requests are accepted\n\n## Authors\n\n* **Sjef van Leeuwen** - *Initial work* - [github](https://github.com/sjefvanleeuwen)\n\n## License\n\nThis project is licensed under the GPL-V3 License - see the [LICENSE](LICENSE) file for details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsjefvanleeuwen%2Ffieldlab-reference-architecture","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsjefvanleeuwen%2Ffieldlab-reference-architecture","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsjefvanleeuwen%2Ffieldlab-reference-architecture/lists"}