iching-broker-level2/README.md

66 lines
2.9 KiB
Markdown
Raw Permalink Normal View History

2025-03-31 09:06:14 +00:00
# I-Ching
The I-Ching (a.k.a. the *Book of Changes*) is an ancient method of divination based on
cleromancy (assigning meaning to the generation of apparently random numbers.) Six numbers
between 6 and 9 are generated in order to create a hexagram, the meaning of which is
contained in the I Ching book.
You can find lots of great information on the 2000+ year history of the I-Ching on
[Wikipedia](https://en.wikipedia.org/wiki/I_Ching)
This app will send an I-Ching horoscope to the pre-configured mailhog instance in configurable intervalls.
This app uses the I-Ching library app https://github.com/Velfi/i-ching.git.
2025-04-17 14:11:34 +00:00
## Configuration
2025-03-31 14:21:15 +00:00
Properties of the app can be configured in the file config.json. It is possible to configure the mail host and port.
2025-04-17 14:11:34 +00:00
It is also possible to configure the intervall of days between the sending of horoscopes and the time of sending. The default is to send one email every seven days at 8 am.
2025-03-31 11:59:41 +00:00
2025-04-14 11:23:02 +00:00
This will start the deployment of the app in the pod, the service and an ingress for the HTTP frontend server and an ingress for the backend server.
2025-03-31 11:59:41 +00:00
When a pod with the app is initally started, one email will be sent to the configured receiver.
2025-04-14 09:24:56 +00:00
## Backend Server
The backend server is running inside the pod on the address http://localhost:8090/command. If a POST is sent to this address, the server will run the main logic of this app:
An E-Mail with an I-Ching horoscope (provided by the library app) will be sent to the configured email address.
2025-04-14 10:44:59 +00:00
The backend server can be tested from inside the pod by calling 'curl -X POST http://localhost:8090/iching/api/command' from the console.
2025-04-14 11:23:02 +00:00
The backend server has a separate ingress, so API requests can get forwarded to the backend. Also the backend does not need 'rewrite target'.
2025-04-14 09:24:56 +00:00
## HTTP Server
The frontend server is running inside the pod on the address http://localhost:8080/iching. It provides an HTML homepage with a button. Upon pressing the button, the backend server will be called (to send an E-Mail).
2025-04-14 11:23:02 +00:00
The frontend server has a separate ingress from the backend server, since the frontend server needs the 'rewrite target' annotation: So the Frontend is not running in the root folder but using the sub-path 'iching'.
2025-04-14 09:24:56 +00:00
2025-04-17 11:50:24 +00:00
## Testing
2025-03-31 11:59:41 +00:00
The Jest unit tests can be run with
2025-03-31 14:21:15 +00:00
```bash
$ npm test
2025-04-14 09:24:56 +00:00
```
2025-04-16 13:37:16 +00:00
## Running the App
### Locally
The app can be deployed locally by running:
The app can be deployed by running:
```bash
$ ./start-local.sh
```
Der HTTP-Server can be access in a browser with the address http://localhost:8080/.
### Locally with Docker
The app can be deployed by running:
```bash
$ docker run -e DEPLOY_MODE=docker -p 8080:8080 -p 8090:8090 --rm my-typescript-app
```
Der HTTP-Server can be access in a browser with the address http://localhost:8080/.
### In Kubernetes
The app can be deployed by running:
```bash
$ kubectl apply -f deployment.yaml
```
Der HTTP-Server can be access in a browser with the address https://192-168-197-2.c-one-infra.de/iching/