# Apis Core Package

The apis core package  manages access control and basic singleton like services

The application uses the following technologies:

* typescript
* angular
* material design

For building and packaging

* webpack
* angular cli

For testing and code quality

* karma/jasmine
* protractor
* tslint

For scaffolding

* angular cli

# Quick start

The development can happen with or without docker. (See Dockerfile for a
container that runs the development application.)

Continous Integration and building/packaging is provided via tailored docker
container using an image created from Dockerfile.build file.

## Docker


### Run Lint/test/build
```bash
$ docker-compose up 
```


## Development server

Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.

If you run `npm start` it works as `ng server` but there are proxy settings
applied to that redicrect server requests to port 3000.

## Code scaffolding

Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive/pipe/service/class/module`.

## Build

Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.

## Running unit tests

Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Running end-to-end tests

Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
Before running the tests make sure you are serving the app via `ng serve`.

# Docker Intergration

There are docker files for different images:

* **Dockerfile.build**: Describes an image to actually run build steps (jshint, test,
  build-package)
* **Dockerfile.prod**: Image that can be used to run the static page via nginx
  * It listens on port 80
  * exposes /var

# Assets

The asset foulder is the place for files that are just plain-copied from
source to dist. Assets hold
- internationalization data (if not build in etc)
- icons
- config data about end points, static items (created at build time etc)


# License
 see LICENSE file
