feat: dockerize examples. react and nextjs working

This commit is contained in:
Felix Dubrownik
2022-09-22 12:18:40 +02:00
parent 4e1e0de5cd
commit 3cf422e579
25 changed files with 1556 additions and 3238 deletions

View File

@ -0,0 +1,69 @@
services:
hanko-migrate:
build: ../../backend
volumes:
- type: bind
source: ./config.yaml
target: /etc/config/config.yaml
command: --config /etc/config/config.yaml migrate up
restart: on-failure
depends_on:
postgresd:
condition: service_healthy
networks:
- intranet
hanko:
depends_on:
hanko-migrate:
condition: service_completed_successfully
build: ../../backend
ports:
- '8000:8000' # public
- '8001:8001' # admin
restart: unless-stopped
command: serve --config /etc/config/config.yaml all
volumes:
- type: bind
source: ./config.yaml
target: /etc/config/config.yaml
networks:
- intranet
environment:
- PASSWORD_ENABLED
postgresd:
image: postgres:12-alpine
ports:
- "5432:5432"
environment:
- POSTGRES_USER=hanko
- POSTGRES_PASSWORD=hanko
- POSTGRES_DB=hanko
healthcheck:
test: pg_isready -U hanko -d hanko
interval: 10s
timeout: 10s
retries: 3
start_period: 30s
networks:
- intranet
elements:
build: ../../elements
ports:
- "9500:80"
networks:
- intranet
fontendsdk:
build: ../../frontend-sdk
ports:
- "9501:80"
networks:
- intranet
mailslurper:
image: marcopas/docker-mailslurper:latest
ports:
- '8080:8080' # web UI
- '8085:8085'
networks:
- intranet
networks:
intranet:

View File

@ -0,0 +1,15 @@
services:
todo-backend:
build: ../../examples/express
ports:
- "8002:8002"
environment:
- HANKO_API_URL=http://hanko:8000
networks:
- intranet
todo-frontend:
build: ../../examples/angular
ports:
- "8888:8888"
networks:
- intranet

View File

@ -0,0 +1,15 @@
services:
todo-backend:
build: ../../examples/express
ports:
- "8002:8002"
environment:
- HANKO_API_URL=http://hanko:8000
networks:
- intranet
todo-frontend:
build: ../../examples/nextjs
ports:
- "8888:8888"
networks:
- intranet

View File

@ -0,0 +1,15 @@
services:
todo-backend:
build: ../../examples/express
ports:
- "8002:8002"
environment:
- HANKO_API_URL=http://hanko:8000
networks:
- intranet
todo-frontend:
build: ../../examples/react
ports:
- "8888:8888"
networks:
- intranet

View File

@ -0,0 +1,15 @@
services:
todo-backend:
build: ../../examples/express
ports:
- "8002:8002"
environment:
- HANKO_API_URL=http://hanko:8000
networks:
- intranet
todo-frontend:
build: ../../examples/vue
ports:
- "8888:8888"
networks:
- intranet

View File

@ -15,7 +15,26 @@ It contains:
- [Vue](vue)
## How to run
### Manual
1. Start the Hanko API (see the instructions on how to run the API [in Docker](../backend/README.md#Docker) or [from Source](../backend/README.md#from-source))
2. Start the express backend (see the [README](express) for the express backend)
3. Start one of the frontend applications (see the README for the app of your choice)
### Docker Compose
#### React
```
docker-compose -f deploy/docker-compose/base.yml -f deploy/docker-compose/todo-react.yaml -p "hanko-todo-react" up --build
```
#### Angular
```
docker-compose -f deploy/docker-compose/base.yml -f deploy/docker-compose/todo-angular.yaml -p "hanko-todo-angular" up --build
```
#### Next.js
```
docker-compose -f deploy/docker-compose/base.yml -f deploy/docker-compose/todo-nextjs.yaml -p "hanko-todo-nextjs" up --build
```
#### Vue
```
docker-compose -f deploy/docker-compose/base.yml -f deploy/docker-compose/todo-vue.yaml -p "hanko-todo-vue" up --build
```

View File

@ -0,0 +1,19 @@
# pull official base image
FROM node:16-alpine
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm install
# add app
COPY . ./
# start app
CMD ["npm", "start"]

View File

@ -3,7 +3,6 @@
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.2.3.
## Starting the app
### Prerequisites
- a running Hanko API (see the instructions on how to run the API [in Docker](../backend/README.md#Docker) or [from Source](../backend/README.md#from-source))
@ -18,4 +17,4 @@ In the `src/environments/environment.ts` file set up the correct environment var
### Run development server
Run `npm install` to install dependencies, then run `npm run start` for a development server. Navigate to `http://localhost:3000/`. The application will automatically reload if you change any of the source files.
Run `npm install` to install dependencies, then run `npm run start` for a development server. Navigate to `http://localhost:8888/`. The application will automatically reload if you change any of the source files.

View File

@ -1,6 +1,5 @@
{
"name": "example-angular",
"version": "0.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
@ -330,9 +329,9 @@
"dev": true
},
"node_modules/@angular/animations": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.2.tgz",
"integrity": "sha512-YPtwjfjGCtRlGIYyFK8JPq6kfR8Gz93kmkIF+fnUes42M5DAQvCccVRxi1OXU6dDLsFY9w7DvTl+HR/VocaFsg==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.3.tgz",
"integrity": "sha512-5psQgSia7pUUKYpFuwA+c+yWyM8afl9ZlOW2pxBU/2mTMLpxJEnVrUnKRsx3WSrOc9YqoLn6DOtDLXq2dbTxFQ==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -340,7 +339,7 @@
"node": "^14.15.0 || >=16.10.0"
},
"peerDependencies": {
"@angular/core": "14.2.2"
"@angular/core": "14.2.3"
}
},
"node_modules/@angular/cli": {
@ -380,9 +379,9 @@
}
},
"node_modules/@angular/common": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.2.tgz",
"integrity": "sha512-9h8MwFLvIJ5kB5L03cd3Cyl4ySKVzL/E/YYugfLvcAzYZ8Rief63gJnkcKNjoS1A5DTxHhOBQL7pLZpj+YxDOw==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.3.tgz",
"integrity": "sha512-DoBQk9uBWfGc+mZ9+lwpmZQy05zKgOeIfDM+2f7Wjrv1/X/V+YUJhjS66GIEBGOe23DoSeivLLCpVj8QqR058A==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -390,14 +389,14 @@
"node": "^14.15.0 || >=16.10.0"
},
"peerDependencies": {
"@angular/core": "14.2.2",
"@angular/core": "14.2.3",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/compiler": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.2.tgz",
"integrity": "sha512-r6673fINahrESOk1lJgXFDO3cH3gTDJJrj1++yYfrgRSqGMzASECy3XTevCjIvw9SycIkU/P+NiE/W/WAlP5vg==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.3.tgz",
"integrity": "sha512-DG2lqSqD5hx6Qk362jhjU9O+I2gOlsV8oUSTOkH4eFQ54PUad1D3hjqfcs3/lsvWggALCSjv9X8BOG8jb7n8vw==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -405,7 +404,7 @@
"node": "^14.15.0 || >=16.10.0"
},
"peerDependencies": {
"@angular/core": "14.2.2"
"@angular/core": "14.2.3"
},
"peerDependenciesMeta": {
"@angular/core": {
@ -414,9 +413,9 @@
}
},
"node_modules/@angular/compiler-cli": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.2.tgz",
"integrity": "sha512-r3vOBUqInHwahloz4mmSrXk22q/4WGNoRR0hxR71tUhLiowYkAaWe72TdPYrDt0SYgZcffAomK7iQHrpJiwLuQ==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.3.tgz",
"integrity": "sha512-MPKZTD4j5EnvpHXLOj6VnXBv/LXfVLoLNc4nNShfuJFJjK9vOqXelb2GJt+2iL+9xKevGxDk7NIcl++fhV2lkQ==",
"dev": true,
"dependencies": {
"@babel/core": "^7.17.2",
@ -439,14 +438,14 @@
"node": "^14.15.0 || >=16.10.0"
},
"peerDependencies": {
"@angular/compiler": "14.2.2",
"@angular/compiler": "14.2.3",
"typescript": ">=4.6.2 <4.9"
}
},
"node_modules/@angular/core": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.2.tgz",
"integrity": "sha512-kG30b4RqjgWvaH9y4g95JRCzoROV+9/xgFH4hSRejFa/IcapMfvCmONJtJzwTjdsEUQAbiFohF/z9bx3QA/Yvw==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.3.tgz",
"integrity": "sha512-neW2n5Ts2purYEVh0Lf207otZbhYH4C4lwwu8ffxdRiXahQiTCbmyM3IQFrQZbLDb/ZeD2KhoCl6p0hlyg14cA==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -459,9 +458,9 @@
}
},
"node_modules/@angular/forms": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.2.tgz",
"integrity": "sha512-lq6PpLMNfs0KcIhkQrUVfKuP4hZSeUQyKOErvoLrPhDiakvOWYoQZKh6XHsbQRcuhWKHy6IITldz6sg8pWVrTw==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.3.tgz",
"integrity": "sha512-rL6adBHp51i3eDBecexrlrS+t+hlK6EnrEot/+Ec+DzVjJgw5VNJ4p2Ig72HPe0m+H0dcPkbQhlpb6cs677ISA==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -469,16 +468,16 @@
"node": "^14.15.0 || >=16.10.0"
},
"peerDependencies": {
"@angular/common": "14.2.2",
"@angular/core": "14.2.2",
"@angular/platform-browser": "14.2.2",
"@angular/common": "14.2.3",
"@angular/core": "14.2.3",
"@angular/platform-browser": "14.2.3",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/platform-browser": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.2.tgz",
"integrity": "sha512-1NrtOIvevoDDT6DU+Fsm5TsNN/XJhIV/UhfInmU/rz97RERl8etcOQRsxWnjGwZjk9rjt+0lBbW5oVDFKOJa+w==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.3.tgz",
"integrity": "sha512-Ky5ITBVmr+T5zHRowLRTJx1exXo99bUA6vosxG4B/YlXkjNfqVz4BETgPwnoIdN00Y9lxGQrMbjqSuzOjGQ7IQ==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -486,9 +485,9 @@
"node": "^14.15.0 || >=16.10.0"
},
"peerDependencies": {
"@angular/animations": "14.2.2",
"@angular/common": "14.2.2",
"@angular/core": "14.2.2"
"@angular/animations": "14.2.3",
"@angular/common": "14.2.3",
"@angular/core": "14.2.3"
},
"peerDependenciesMeta": {
"@angular/animations": {
@ -497,9 +496,9 @@
}
},
"node_modules/@angular/platform-browser-dynamic": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.2.tgz",
"integrity": "sha512-fehhiOwC4mn4sprjSiuGc0uITToiiKJJdtUNDsJyOJinKuy3GBwHpGckiEx4E85Z/PkPCMb8lYRJb/IciUV9+A==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.3.tgz",
"integrity": "sha512-yqSH9NrgkXN3aslbD9IHWnFClwwVlLTypaMfSGmhPL1LvgL/HL/A9rDYI2ZrybVoVmAZLsJ4uF2/GvK/pzUcNQ==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -507,16 +506,16 @@
"node": "^14.15.0 || >=16.10.0"
},
"peerDependencies": {
"@angular/common": "14.2.2",
"@angular/compiler": "14.2.2",
"@angular/core": "14.2.2",
"@angular/platform-browser": "14.2.2"
"@angular/common": "14.2.3",
"@angular/compiler": "14.2.3",
"@angular/core": "14.2.3",
"@angular/platform-browser": "14.2.3"
}
},
"node_modules/@angular/router": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.2.tgz",
"integrity": "sha512-BRkXdAVK0rE/x6im91a/fdIcWhPILO6ZmwCVTEdvsRyI9arQSlXAnupPUeumdbSc6mG/FCXPcyJq/dU0Jl70Og==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.3.tgz",
"integrity": "sha512-ACSBYZCMWBaVHmclaFS5C+zSTTcMbY6iJFjI0tiTqicqdpzAOIt6s5Ius1wzN9L6ANijn1ZdGAzH6j45GV/XtQ==",
"dependencies": {
"tslib": "^2.3.0"
},
@ -524,9 +523,9 @@
"node": "^14.15.0 || >=16.10.0"
},
"peerDependencies": {
"@angular/common": "14.2.2",
"@angular/core": "14.2.2",
"@angular/platform-browser": "14.2.2",
"@angular/common": "14.2.3",
"@angular/core": "14.2.3",
"@angular/platform-browser": "14.2.3",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
@ -2225,9 +2224,9 @@
}
},
"node_modules/@csstools/postcss-cascade-layers": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.0.tgz",
"integrity": "sha512-XpA7g2KViA2ia23A5kZ/EQw+Sy308kLbvMlDPjFZmojwaJ9DYdJuwujFcDGK9v1QhHRmMEHbV2brVSQSLkN/7A==",
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz",
"integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==",
"dev": true,
"dependencies": {
"@csstools/selector-specificity": "^2.0.2",
@ -2507,9 +2506,8 @@
},
"node_modules/@denysvuika/preact-translate": {
"version": "0.3.0",
"resolved": "http://0.0.0.0:4873/@denysvuika%2fpreact-translate/-/preact-translate-0.3.0.tgz",
"resolved": "https://registry.npmjs.org/@denysvuika/preact-translate/-/preact-translate-0.3.0.tgz",
"integrity": "sha512-0ijz/4WiOxUYjD17wVM0VLQwtNn8hdpUedhYtc4JcudM/CxEjdARaNc9u/ALBlM7OqNPP/4OBe3TFYvP2O92qA==",
"license": "MIT",
"peerDependencies": {
"preact": ">=10.0.0"
}
@ -2863,9 +2861,8 @@
},
"node_modules/@teamhanko/hanko-frontend-sdk": {
"version": "0.0.1-alpha",
"resolved": "http://0.0.0.0:4873/@teamhanko%2fhanko-frontend-sdk/-/hanko-frontend-sdk-0.0.1-alpha.tgz",
"resolved": "https://registry.npmjs.org/@teamhanko/hanko-frontend-sdk/-/hanko-frontend-sdk-0.0.1-alpha.tgz",
"integrity": "sha512-JmI8E0Rh63SJE4nQxeSsmPRhpQsm1BOdT6aqwPBqKAuVGf0AWVa0RSoQZ15VWuZnnueMokEVxuiQNenzRyUtLA==",
"license": "MIT",
"dependencies": {
"@types/js-cookie": "^3.0.2"
}
@ -2995,9 +2992,8 @@
},
"node_modules/@types/js-cookie": {
"version": "3.0.2",
"resolved": "http://0.0.0.0:4873/@types%2fjs-cookie/-/js-cookie-3.0.2.tgz",
"integrity": "sha512-6+0ekgfusHftJNYpihfkMu8BWdeHs9EOJuGcSofErjstGPfPGEu9yTu4t460lTzzAMl2cM5zngQJqPMHbbnvYA==",
"license": "MIT"
"resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.2.tgz",
"integrity": "sha512-6+0ekgfusHftJNYpihfkMu8BWdeHs9EOJuGcSofErjstGPfPGEu9yTu4t460lTzzAMl2cM5zngQJqPMHbbnvYA=="
},
"node_modules/@types/json-schema": {
"version": "7.0.11",
@ -3513,9 +3509,9 @@
"dev": true
},
"node_modules/autoprefixer": {
"version": "10.4.11",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.11.tgz",
"integrity": "sha512-5lHp6DgRodxlBLSkzHOTcufWFflH1ewfy2hvFQyjrblBFlP/0Yh4O/Wrg4ow8WRlN3AAUFFLAQwX8hTptzqVHg==",
"version": "10.4.12",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz",
"integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==",
"dev": true,
"funding": [
{
@ -3528,8 +3524,8 @@
}
],
"dependencies": {
"browserslist": "^4.21.3",
"caniuse-lite": "^1.0.30001399",
"browserslist": "^4.21.4",
"caniuse-lite": "^1.0.30001407",
"fraction.js": "^4.2.0",
"normalize-range": "^0.1.2",
"picocolors": "^1.0.0",
@ -3936,9 +3932,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001402",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001402.tgz",
"integrity": "sha512-Mx4MlhXO5NwuvXGgVb+hg65HZ+bhUYsz8QtDGDo2QmaJS2GBX47Xfi2koL86lc8K+l+htXeTEB/Aeqvezoo6Ew==",
"version": "1.0.30001409",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz",
"integrity": "sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ==",
"dev": true,
"funding": [
{
@ -4018,9 +4014,8 @@
},
"node_modules/classnames": {
"version": "2.3.2",
"resolved": "http://0.0.0.0:4873/classnames/-/classnames-2.3.2.tgz",
"integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==",
"license": "MIT"
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
"integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
},
"node_modules/clean-stack": {
"version": "2.2.0",
@ -4378,12 +4373,12 @@
}
},
"node_modules/core-js-compat": {
"version": "3.25.1",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.1.tgz",
"integrity": "sha512-pOHS7O0i8Qt4zlPW/eIFjwp+NrTPx+wTL0ctgI2fHn31sZOq89rDsmtc/A2vAX7r6shl+bmVI+678He46jgBlw==",
"version": "3.25.2",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.2.tgz",
"integrity": "sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ==",
"dev": true,
"dependencies": {
"browserslist": "^4.21.3"
"browserslist": "^4.21.4"
},
"funding": {
"type": "opencollective",
@ -4893,9 +4888,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
"version": "1.4.253",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.253.tgz",
"integrity": "sha512-1pezJ2E1UyBTGbA7fUlHdPSXQw1k+82VhTFLG5G0AUqLGvsZqFzleOblceqegZzxYX4kC7hGEEdzIQI9RZ1Cuw==",
"version": "1.4.257",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.257.tgz",
"integrity": "sha512-C65sIwHqNnPC2ADMfse/jWTtmhZMII+x6ADI9gENzrOiI7BpxmfKFE84WkIEl5wEg+7+SfIkwChDlsd1Erju2A==",
"dev": true
},
"node_modules/emoji-regex": {
@ -7061,9 +7056,9 @@
]
},
"node_modules/karma": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/karma/-/karma-6.4.0.tgz",
"integrity": "sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==",
"version": "6.4.1",
"resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz",
"integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==",
"dev": true,
"dependencies": {
"@colors/colors": "1.5.0",
@ -9531,9 +9526,8 @@
},
"node_modules/preact": {
"version": "10.11.0",
"resolved": "http://0.0.0.0:4873/preact/-/preact-10.11.0.tgz",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.11.0.tgz",
"integrity": "sha512-Fk6+vB2kb6mSJfDgODq0YDhMfl0HNtK5+Uc9QqECO4nlyPAQwCI+BKyWO//idA7ikV7o+0Fm6LQmNuQi1wXI1w==",
"license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/preact"
@ -9541,9 +9535,8 @@
},
"node_modules/preact-custom-element": {
"version": "4.2.1",
"resolved": "http://0.0.0.0:4873/preact-custom-element/-/preact-custom-element-4.2.1.tgz",
"resolved": "https://registry.npmjs.org/preact-custom-element/-/preact-custom-element-4.2.1.tgz",
"integrity": "sha512-/fiEEAyC+MXRlCBRmv/owoN5BLpO2nF/MF3YBHLtp4C2lNqlhV+a4he74A5DhfDoRmxDHm0sYVgQzWFEyzTDsw==",
"license": "MIT",
"peerDependencies": {
"preact": "10.x"
}
@ -12155,9 +12148,9 @@
}
},
"@angular/animations": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.2.tgz",
"integrity": "sha512-YPtwjfjGCtRlGIYyFK8JPq6kfR8Gz93kmkIF+fnUes42M5DAQvCccVRxi1OXU6dDLsFY9w7DvTl+HR/VocaFsg==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.3.tgz",
"integrity": "sha512-5psQgSia7pUUKYpFuwA+c+yWyM8afl9ZlOW2pxBU/2mTMLpxJEnVrUnKRsx3WSrOc9YqoLn6DOtDLXq2dbTxFQ==",
"requires": {
"tslib": "^2.3.0"
}
@ -12191,25 +12184,25 @@
}
},
"@angular/common": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.2.tgz",
"integrity": "sha512-9h8MwFLvIJ5kB5L03cd3Cyl4ySKVzL/E/YYugfLvcAzYZ8Rief63gJnkcKNjoS1A5DTxHhOBQL7pLZpj+YxDOw==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.3.tgz",
"integrity": "sha512-DoBQk9uBWfGc+mZ9+lwpmZQy05zKgOeIfDM+2f7Wjrv1/X/V+YUJhjS66GIEBGOe23DoSeivLLCpVj8QqR058A==",
"requires": {
"tslib": "^2.3.0"
}
},
"@angular/compiler": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.2.tgz",
"integrity": "sha512-r6673fINahrESOk1lJgXFDO3cH3gTDJJrj1++yYfrgRSqGMzASECy3XTevCjIvw9SycIkU/P+NiE/W/WAlP5vg==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.3.tgz",
"integrity": "sha512-DG2lqSqD5hx6Qk362jhjU9O+I2gOlsV8oUSTOkH4eFQ54PUad1D3hjqfcs3/lsvWggALCSjv9X8BOG8jb7n8vw==",
"requires": {
"tslib": "^2.3.0"
}
},
"@angular/compiler-cli": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.2.tgz",
"integrity": "sha512-r3vOBUqInHwahloz4mmSrXk22q/4WGNoRR0hxR71tUhLiowYkAaWe72TdPYrDt0SYgZcffAomK7iQHrpJiwLuQ==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.3.tgz",
"integrity": "sha512-MPKZTD4j5EnvpHXLOj6VnXBv/LXfVLoLNc4nNShfuJFJjK9vOqXelb2GJt+2iL+9xKevGxDk7NIcl++fhV2lkQ==",
"dev": true,
"requires": {
"@babel/core": "^7.17.2",
@ -12225,41 +12218,41 @@
}
},
"@angular/core": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.2.tgz",
"integrity": "sha512-kG30b4RqjgWvaH9y4g95JRCzoROV+9/xgFH4hSRejFa/IcapMfvCmONJtJzwTjdsEUQAbiFohF/z9bx3QA/Yvw==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.3.tgz",
"integrity": "sha512-neW2n5Ts2purYEVh0Lf207otZbhYH4C4lwwu8ffxdRiXahQiTCbmyM3IQFrQZbLDb/ZeD2KhoCl6p0hlyg14cA==",
"requires": {
"tslib": "^2.3.0"
}
},
"@angular/forms": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.2.tgz",
"integrity": "sha512-lq6PpLMNfs0KcIhkQrUVfKuP4hZSeUQyKOErvoLrPhDiakvOWYoQZKh6XHsbQRcuhWKHy6IITldz6sg8pWVrTw==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.3.tgz",
"integrity": "sha512-rL6adBHp51i3eDBecexrlrS+t+hlK6EnrEot/+Ec+DzVjJgw5VNJ4p2Ig72HPe0m+H0dcPkbQhlpb6cs677ISA==",
"requires": {
"tslib": "^2.3.0"
}
},
"@angular/platform-browser": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.2.tgz",
"integrity": "sha512-1NrtOIvevoDDT6DU+Fsm5TsNN/XJhIV/UhfInmU/rz97RERl8etcOQRsxWnjGwZjk9rjt+0lBbW5oVDFKOJa+w==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.3.tgz",
"integrity": "sha512-Ky5ITBVmr+T5zHRowLRTJx1exXo99bUA6vosxG4B/YlXkjNfqVz4BETgPwnoIdN00Y9lxGQrMbjqSuzOjGQ7IQ==",
"requires": {
"tslib": "^2.3.0"
}
},
"@angular/platform-browser-dynamic": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.2.tgz",
"integrity": "sha512-fehhiOwC4mn4sprjSiuGc0uITToiiKJJdtUNDsJyOJinKuy3GBwHpGckiEx4E85Z/PkPCMb8lYRJb/IciUV9+A==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.3.tgz",
"integrity": "sha512-yqSH9NrgkXN3aslbD9IHWnFClwwVlLTypaMfSGmhPL1LvgL/HL/A9rDYI2ZrybVoVmAZLsJ4uF2/GvK/pzUcNQ==",
"requires": {
"tslib": "^2.3.0"
}
},
"@angular/router": {
"version": "14.2.2",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.2.tgz",
"integrity": "sha512-BRkXdAVK0rE/x6im91a/fdIcWhPILO6ZmwCVTEdvsRyI9arQSlXAnupPUeumdbSc6mG/FCXPcyJq/dU0Jl70Og==",
"version": "14.2.3",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.3.tgz",
"integrity": "sha512-ACSBYZCMWBaVHmclaFS5C+zSTTcMbY6iJFjI0tiTqicqdpzAOIt6s5Ius1wzN9L6ANijn1ZdGAzH6j45GV/XtQ==",
"requires": {
"tslib": "^2.3.0"
}
@ -13456,9 +13449,9 @@
"dev": true
},
"@csstools/postcss-cascade-layers": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.0.tgz",
"integrity": "sha512-XpA7g2KViA2ia23A5kZ/EQw+Sy308kLbvMlDPjFZmojwaJ9DYdJuwujFcDGK9v1QhHRmMEHbV2brVSQSLkN/7A==",
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz",
"integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==",
"dev": true,
"requires": {
"@csstools/selector-specificity": "^2.0.2",
@ -13593,7 +13586,7 @@
},
"@denysvuika/preact-translate": {
"version": "0.3.0",
"resolved": "http://0.0.0.0:4873/@denysvuika%2fpreact-translate/-/preact-translate-0.3.0.tgz",
"resolved": "https://registry.npmjs.org/@denysvuika/preact-translate/-/preact-translate-0.3.0.tgz",
"integrity": "sha512-0ijz/4WiOxUYjD17wVM0VLQwtNn8hdpUedhYtc4JcudM/CxEjdARaNc9u/ALBlM7OqNPP/4OBe3TFYvP2O92qA==",
"requires": {}
},
@ -13863,7 +13856,7 @@
},
"@teamhanko/hanko-frontend-sdk": {
"version": "0.0.1-alpha",
"resolved": "http://0.0.0.0:4873/@teamhanko%2fhanko-frontend-sdk/-/hanko-frontend-sdk-0.0.1-alpha.tgz",
"resolved": "https://registry.npmjs.org/@teamhanko/hanko-frontend-sdk/-/hanko-frontend-sdk-0.0.1-alpha.tgz",
"integrity": "sha512-JmI8E0Rh63SJE4nQxeSsmPRhpQsm1BOdT6aqwPBqKAuVGf0AWVa0RSoQZ15VWuZnnueMokEVxuiQNenzRyUtLA==",
"requires": {
"@types/js-cookie": "^3.0.2"
@ -13991,7 +13984,7 @@
},
"@types/js-cookie": {
"version": "3.0.2",
"resolved": "http://0.0.0.0:4873/@types%2fjs-cookie/-/js-cookie-3.0.2.tgz",
"resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.2.tgz",
"integrity": "sha512-6+0ekgfusHftJNYpihfkMu8BWdeHs9EOJuGcSofErjstGPfPGEu9yTu4t460lTzzAMl2cM5zngQJqPMHbbnvYA=="
},
"@types/json-schema": {
@ -14441,13 +14434,13 @@
"dev": true
},
"autoprefixer": {
"version": "10.4.11",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.11.tgz",
"integrity": "sha512-5lHp6DgRodxlBLSkzHOTcufWFflH1ewfy2hvFQyjrblBFlP/0Yh4O/Wrg4ow8WRlN3AAUFFLAQwX8hTptzqVHg==",
"version": "10.4.12",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz",
"integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==",
"dev": true,
"requires": {
"browserslist": "^4.21.3",
"caniuse-lite": "^1.0.30001399",
"browserslist": "^4.21.4",
"caniuse-lite": "^1.0.30001407",
"fraction.js": "^4.2.0",
"normalize-range": "^0.1.2",
"picocolors": "^1.0.0",
@ -14751,9 +14744,9 @@
"dev": true
},
"caniuse-lite": {
"version": "1.0.30001402",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001402.tgz",
"integrity": "sha512-Mx4MlhXO5NwuvXGgVb+hg65HZ+bhUYsz8QtDGDo2QmaJS2GBX47Xfi2koL86lc8K+l+htXeTEB/Aeqvezoo6Ew==",
"version": "1.0.30001409",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz",
"integrity": "sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ==",
"dev": true
},
"chalk": {
@ -14803,7 +14796,7 @@
},
"classnames": {
"version": "2.3.2",
"resolved": "http://0.0.0.0:4873/classnames/-/classnames-2.3.2.tgz",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
"integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
},
"clean-stack": {
@ -15085,12 +15078,12 @@
}
},
"core-js-compat": {
"version": "3.25.1",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.1.tgz",
"integrity": "sha512-pOHS7O0i8Qt4zlPW/eIFjwp+NrTPx+wTL0ctgI2fHn31sZOq89rDsmtc/A2vAX7r6shl+bmVI+678He46jgBlw==",
"version": "3.25.2",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.2.tgz",
"integrity": "sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ==",
"dev": true,
"requires": {
"browserslist": "^4.21.3"
"browserslist": "^4.21.4"
}
},
"core-util-is": {
@ -15452,9 +15445,9 @@
"dev": true
},
"electron-to-chromium": {
"version": "1.4.253",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.253.tgz",
"integrity": "sha512-1pezJ2E1UyBTGbA7fUlHdPSXQw1k+82VhTFLG5G0AUqLGvsZqFzleOblceqegZzxYX4kC7hGEEdzIQI9RZ1Cuw==",
"version": "1.4.257",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.257.tgz",
"integrity": "sha512-C65sIwHqNnPC2ADMfse/jWTtmhZMII+x6ADI9gENzrOiI7BpxmfKFE84WkIEl5wEg+7+SfIkwChDlsd1Erju2A==",
"dev": true
},
"emoji-regex": {
@ -17000,9 +16993,9 @@
"dev": true
},
"karma": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/karma/-/karma-6.4.0.tgz",
"integrity": "sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==",
"version": "6.4.1",
"resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz",
"integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==",
"dev": true,
"requires": {
"@colors/colors": "1.5.0",
@ -18733,12 +18726,12 @@
},
"preact": {
"version": "10.11.0",
"resolved": "http://0.0.0.0:4873/preact/-/preact-10.11.0.tgz",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.11.0.tgz",
"integrity": "sha512-Fk6+vB2kb6mSJfDgODq0YDhMfl0HNtK5+Uc9QqECO4nlyPAQwCI+BKyWO//idA7ikV7o+0Fm6LQmNuQi1wXI1w=="
},
"preact-custom-element": {
"version": "4.2.1",
"resolved": "http://0.0.0.0:4873/preact-custom-element/-/preact-custom-element-4.2.1.tgz",
"resolved": "https://registry.npmjs.org/preact-custom-element/-/preact-custom-element-4.2.1.tgz",
"integrity": "sha512-/fiEEAyC+MXRlCBRmv/owoN5BLpO2nF/MF3YBHLtp4C2lNqlhV+a4he74A5DhfDoRmxDHm0sYVgQzWFEyzTDsw==",
"requires": {}
},

View File

@ -2,7 +2,7 @@
"name": "example-angular",
"private": true,
"scripts": {
"start": "ng serve --port 3000"
"start": "ng serve --port 8888"
},
"dependencies": {
"@angular/animations": "^14.2.0",

View File

@ -0,0 +1,20 @@
# pull official base image
FROM node:16-alpine
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm install --silent
RUN npm install react-scripts@3.4.1 -g --silent
# add app
COPY . ./
# start app
CMD ["npm", "start"]

View File

@ -15,4 +15,4 @@ In the `.env` file set up the correct environment variables:
### Run the server
Run `npm install` to install dependencies, then run `npm run start` for a development server.
Navigate to `http://localhost:3000/`. The application will automatically reload if you change any of the source files.
Navigate to `http://localhost:8888/`. The application will automatically reload if you change any of the source files.

View File

@ -11,7 +11,7 @@ const app = express();
const jwksHost = process.env.HANKO_API_URL;
const corsOptions = {
origin: "http://localhost:3000",
origin: "http://localhost:8888",
credentials: true,
methods: ["GET", "POST", "PATCH", "DELETE", "OPTIONS"],
};
@ -26,7 +26,7 @@ app.use(
secret: jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 2,
jwksRequestsPerMinute: 100,
jwksUri: `${jwksHost}/.well-known/jwks.json`,
}),
algorithms: ["RS256"],

View File

@ -0,0 +1,20 @@
# pull official base image
FROM node:16-alpine
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm install
RUN npm install react-scripts@3.4.1 -g --silent
# add app
COPY . ./
# start app
CMD ["npm", "start"]

View File

@ -18,4 +18,4 @@ In the `.env` file set up the correct environment variables:
### Run development server
Run `npm install` to install dependencies, then run `npm run start` for a development server. Navigate to `http://localhost:3000/`. The application will automatically reload if you change any of the source files.
Run `npm install` to install dependencies, then run `npm run start` for a development server. Navigate to `http://localhost:8888/`. The application will automatically reload if you change any of the source files.

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@
"name": "example-nextjs",
"private": true,
"scripts": {
"start": "next dev"
"start": "next dev -p 8888"
},
"dependencies": {
"@teamhanko/hanko-elements": "^0.0.7-alpha",

File diff suppressed because it is too large Load Diff

20
examples/react/Dockerfile Normal file
View File

@ -0,0 +1,20 @@
# pull official base image
FROM node:16-alpine
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm install
RUN npm install react-scripts@3.4.1 -g --silent
# add app
COPY . ./
# start app
CMD ["npm", "start"]

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,7 @@
"typescript": "^4.8.3"
},
"scripts": {
"start": "react-scripts start"
"start": "PORT=8888 react-scripts start"
},
"eslintConfig": {
"extends": [

20
examples/vue/Dockerfile Normal file
View File

@ -0,0 +1,20 @@
# pull official base image
FROM node:16-alpine
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm install
RUN npm install react-scripts@3.4.1 -g --silent
# add app
COPY . ./
# start app
CMD ["npm", "start"]

View File

@ -18,4 +18,4 @@ In the `.env` file set up the correct environment variables:
### Run development server
Run `npm install` to install dependencies, then run `npm run start` for a development server. Navigate to `http://localhost:3000/`. The application will automatically reload if you change any of the source files.
Run `npm install` to install dependencies, then run `npm run start` for a development server. Navigate to `http://localhost:8888/`. The application will automatically reload if you change any of the source files.

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
{
"name": "vue",
"scripts": {
"start": "vite --port 3000"
"start": "vite --port 8888"
},
"dependencies": {
"@teamhanko/hanko-elements": "^0.0.7-alpha",