Authentic base registry containing all addresses of Flanders.
- Fork and clone locally.
- Build the solution with Visual Studio,
build.cmd
orbuild.sh
. - Create a topic specific branch in git. Add a nice feature in the code. Do not forget to add tests and/or docs.
- Run
build.cmd
orbuild.sh
to make sure everything still compiles and all tests are still passing. - When built, you'll find the binaries in
./dist
which you can then test with locally, to ensure the bug or feature has been successfully implemented. - Send a Pull Request.
To fill up the database for the first time:
- Run
AddressRegistry.Api.CrabImport
(AddressRegistry.sln
) (schema: Import / Idempotency / EventStore) - Run
AddressRegistry.Api.BackOffice
(AddressRegistry.sln
) (schema: BackOffice / EventStore / Idempotency / Sequence) - Run
AddressRegistry.Importer.HouseNumber
(AddressRegistryImporter.sln
) withinit -c -l Trace
as flags. - Run
AddressRegistry.Importer.Subaddress
(AddressRegistryImporter.sln
) withinit -c -l Trace
as flags. - Run
AddressRegistry.Importer.AddressMatch
(AddressRegistryImporter.sln
) withinit -c -l Trace
as flags.
To start the projections for the first time:
- Run
AddressRegistry.Projector
- Send a
POST
tohttp://localhost:5006/v1/projections/start/all
We use Structurizr to generate our documentation and populate our architecture decisions. All of this can be found in the Structurizr console application.
To run it, make sure you have an appsettings.json
with a structurizr.com WorkspaceId
, ApiKey
and ApiSecret
. If you have moved your adr's to another location, don't forget to update AdrPath
.
This is how the generated documentation looks: https://structurizr.com/share/37794
Our build.sh
script knows a few tricks. By default it runs with the Test
target.
The buildserver passes in BITBUCKET_BUILD_NUMBER
as an integer to version the results and BUILD_DOCKER_REGISTRY
to point to a Docker registry to push the resulting Docker images.
Run an npm install
to setup Commitizen and Semantic Release.
Checks if the requested .NET Core SDK and runtime version defined in global.json
are available.
We are pedantic about these being the exact versions to have identical builds everywhere.
Make sure we have a clean build directory to start with.
Restore dependencies for debian.8-x64
and win10-x64
using dotnet restore and Paket.
Builds the solution in Release mode with the .NET Core SDK and runtime specified in global.json
It builds it platform-neutral, debian.8-x64
and win10-x64
version.
Runs dotnet test
against the test projects.
Runs a dotnet publish
for the debian.8-x64
and win10-x64
version as a self-contained application.
It does this using the Release configuration.
Packs the solution using Paket in Release mode and places the result in the dist
folder.
This is usually used to build documentation NuGet packages.
Executes a docker build
to package the application as a docker image. It does not use a Docker cache.
The result is tagged as latest and with the current version number.
Executes ci-docker-login.sh
, which does an aws ecr login to login to Amazon Elastic Container Registry.
This uses the local aws settings, make sure they are working!
Executes docker push
to push the built images to the registry.
European Union Public Licence (EUPL)
The new version 1.2 of the European Union Public Licence (EUPL) is published in the 23 EU languages in the EU Official Journal: Commission Implementing Decision (EU) 2017/863 of 18 May 2017 updating the open source software licence EUPL to further facilitate the sharing and reuse of software developed by public administrations (OJ 19/05/2017 L128 p. 59–64).
- .NET Core - MIT
- .NET Core Runtime - CoreCLR is the runtime for .NET Core. It includes the garbage collector, JIT compiler, primitive data types and low-level classes. - MIT
- .NET Core APIs - CoreFX is the foundational class libraries for .NET Core. It includes types for collections, file systems, console, JSON, XML, async and many others. - MIT
- .NET Core SDK - Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI. - MIT
- .NET Core Docker - Base Docker images for working with .NET Core and the .NET Core Tools. - MIT
- .NET Standard definition - The principles and definition of the .NET Standard. - MIT
- Entity Framework Core - Entity Framework Core is a lightweight and extensible version of the popular Entity Framework data access technology. - Apache License 2.0
- Roslyn and C# - The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs. - Apache License 2.0
- F# - The F# Compiler, Core Library & Tools - MIT
- F# and .NET Core - F# and .NET Core SDK working together. - MIT
- ASP.NET Core framework - ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux. - Apache License 2.0
- Paket - A dependency manager for .NET with support for NuGet packages and Git repositories. - MIT
- FAKE - "FAKE - F# Make" is a cross platform build automation system. - MIT
- Structurizr - Visualise, document and explore your software architecture. - Apache License 2.0
- xUnit - xUnit.net is a free, open source, community-focused unit testing tool for the .NET Framework. - Apache License 2.0
- Autofac - An addictive .NET IoC container. - MIT
- AutoFixture - AutoFixture is an open source library for .NET designed to minimize the 'Arrange' phase of your unit tests in order to maximize maintainability. - MIT
- FluentAssertions - Fluent API for asserting the results of unit tests. - Apache License 2.0
- .NET Topology Suite - A .NET GIS solution that is fast and reliable for the .NET platform. - BSD
- Serilog - Simple .NET logging with fully-structured events. - Apache License 2.0
- CompareNETObjects - Perform a deep compare of any two .NET objects using reflection. Shows the differences between the two objects. Microsoft Public License (Ms-PL)
- Dapper - A simple object mapper for .Net. - Apache License 2.0
- AsyncEnumerator - Makes asynchronous enumeration as easy as the synchronous counterpart. Such feature is also known as 'Async Streams' in upcoming C# 8.0. The library introduces familiar and easy to use syntax, IAsyncEnumerable, IAsyncEnumerator, ForEachAsync(), ParallelForEachAsync(), and other useful extension methods. - MIT
- CsvHelper - A library for reading and writing CSV files. Extremely fast, flexible, and easy to use. Supports reading and writing of custom class objects. - Apache License 2.0
- JsonNet - Adds support for logging JSON.NET dynamic types as structured data with Serilog. - Apache License 2.0
- MediatR - Simple, unambitious mediator implementation in .NET. - MIT
- DataDog - .NET Client Library for Datadog APM - Apache License 2.0
- npm - A package manager for JavaScript. - Artistic License 2.0
- semantic-release - Fully automated version management and package publishing. - MIT
- semantic-release/changelog - Semantic-release plugin to create or update a changelog file. - MIT
- semantic-release/commit-analyzer - Semantic-release plugin to analyze commits with conventional-changelog. - MIT
- semantic-release/exec - Semantic-release plugin to execute custom shell commands. - MIT
- semantic-release/git - Semantic-release plugin to commit release assets to the project's git repository. - MIT
- semantic-release/npm - Semantic-release plugin to publish a npm package. - MIT
- semantic-release/github - Semantic-release plugin to publish a GitHub release. - MIT
- semantic-release/release-notes-generator - Semantic-release plugin to generate changelog content with conventional-changelog. - MIT
- commitlint - Lint commit messages. - MIT
- commitizen/cz-cli - The commitizen command line utility. - MIT
- commitizen/cz-conventional-changelog A commitizen adapter for the angular preset of conventional-changelog. - MIT
- Be.Vlaanderen.Basisregisters.ProjectionHandling - Lightweight projection handling infrastructure. - MIT
- Be.Vlaanderen.Basisregisters.AggregateSource - Lightweight infrastructure for doing command handling and eventsourcing using aggregates. - MIT
- Be.Vlaanderen.Basisregisters.Api - Common API infrastructure and helpers. - MIT
- Be.Vlaanderen.Basisregisters.CommandHandling - Lightweight infrastructure for doing command handling and eventsourcing using aggregates. - MIT
- Be.Vlaanderen.Basisregisters.EventHandling - Lightweight event handling infrastructure. - MIT
- Be.Vlaanderen.Basisregisters.Projector - Generic projection runner infrastructure. - MIT
- Be.Vlaanderen.Basisregisters.Build.Pipeline - Contains generic files for all Basisregisters Vlaanderen pipelines. - MIT
- Be.Vlaanderen.Basisregisters.Testing.Infrastructure.Events - Infrastructure unit-tests to validate assemblies. - MIT
- Be.Vlaanderen.Basisregisters.Shaperon - Lightweight dbase and shape record handling. - MIT
- Be.Vlaanderen.Basisregisters.Crab - Common Crab functionality. - EUPL-1.2
- Be.Vlaanderen.Basisregisters.GrAr - Common code for all GR/AR base registries. - EUPL-1.2
- Be.Vlaanderen.Basisregisters.Sqs - AWS SQS utilities for C#. - MIT
- Be.Vlaanderen.Basisregisters.TicketingService - A ticketing system that provides Locations to all registries. - EUPL-1.2
- Be.Vlaanderen.Basisregisters.MessageHandling - Lightweight message handling infrastructure. - MIT
- Be.Vlaanderen.Basisregisters.Auth.AcmIdm - ACM/IDM utilities for C#. - MIT
- Be.Vlaanderen.Basisregisters.Aws.Lambda - AWS Lambda utilities for C#. - MIT
- Be.Vlaanderen.Basisregisters.ProjectionHandling - Lightweight projection handling infrastructure. - MIT