An open API service indexing awesome lists of open source software.

https://github.com/tedwon/quokka

Simple Memo App based on Quarkus with Java and React Next.js with TypeScript
https://github.com/tedwon/quokka

Last synced: 4 months ago
JSON representation

Simple Memo App based on Quarkus with Java and React Next.js with TypeScript

Awesome Lists containing this project

README

          

:author: Ted Won
:email: iamtedwon@gmail.com
:toc: left
:toclevels: 1
:icons: font
:idprefix:
:idseparator: -

= https://github.com/tedwon/quokka[Quokka Project]

== https://github.com/tedwon/quokka[Quokka Project]

https://github.com/tedwon/quokka[Quokka] is a simple Memo App.

https://github.com/tedwon/quokka[Quokka] is implemented in Quarkus with Java for backend and React Next.js with TypeScript for frontend.

=== https://github.com/tedwon/quokka/tree/main/quokka-backend[Quokka Backend Project]

https://github.com/tedwon/quokka/tree/main/quokka-backend[Quokka Backend project] is built on https://quarkus.io/[Quarkus].

=== https://github.com/tedwon/quokka/tree/main/quokka-frontend[Quokka Frontend Project]

=== Quokka DB
Quokka DB is on https://hub.docker.com/_/postgres[PostgreSQL]. https://hub.docker.com/_/postgres[PostgreSQL] provides the underlying database.

== Start Quokka

=== Start Quokka with Docker Compose

[source,bash,options="nowrap"]
----
docker-compose -f docker-compose.yml up -d
----

==== Stop Quokka with Docker Compose

[source,bash,options="nowrap"]
----
docker-compose -f docker-compose.yml down
----

=== Start Quokka with Docker

[source,bash,options="nowrap"]
----
docker network create quokka_net

sudo mkdir /var/quokka_db_data
sudo chown -R : /var/quokka_db_data
ls -al /var/quokka_db_data
docker run --rm=true -itd \
--name quokka-db \
-v /var/quokka_db_data:/var/lib/postgresql/data \
-e TZ=Australia/Brisbane \
-e POSTGRES_USER=quokka \
-e POSTGRES_PASSWORD=quokka \
-e POSTGRES_DB=quokka_db \
-p 5432:5432 \
--network quokka_net \
quay.io/debezium/postgres:15
#postgres:latest

cd quokka-backend
./mvnw clean package
docker build -f src/main/docker/Dockerfile.jvm -t tedwon/quokka-backend:latest .
docker run -i --rm -e TZ=Australia/Brisbane -p 2402:2402 --network quokka_net tedwon/quokka-backend:latest

docker run -i --rm -p 2402:2402 --network quokka_net tedwon/quokka-backend:latest

cd ~/quokka/quokka-frontend
podman build -t tedwon/quokka-frontend:latest .
docker build -t tedwon/quokka-frontend:latest .
docker run -i -rm -e TZ=Australia/Brisbane -p 3000:3000 --network quokka_net tedwon/quokka-frontend:latest

# Using OpenID Connect (OIDC) and Keycloak to Centralize Authorization - Quarkus
# https://quarkus.io/guides/security-keycloak-authorization
#docker run --rm=true -itd \
# --name quokka-keycloak \
# -e KEYCLOAK_ADMIN=admin \
# -e KEYCLOAK_ADMIN_PASSWORD=admin \
# -p 8088:8088 \
# --network quokka_net \
#quay.io/keycloak/keycloak:latest start-dev
docker run --rm=true -it \
--name quokka-keycloak \
--network quokka_net \
-e TZ=Australia/Brisbane \
-e KEYCLOAK_ADMIN=quokka \
-e KEYCLOAK_ADMIN_PASSWORD=quokka \
-p 8443:8443 \
-v "$(pwd)"/quokka-backend/config/keycloak-keystore.jks:/etc/keycloak-keystore.jks \
-v "$(pwd)"/quokka-backend/config/quarkus-realm.json:/opt/keycloak/data/import/realm.json \
quay.io/keycloak/keycloak:latest start --import-realm \
--optimized --hostname-strict=false --https-key-store-file=/etc/keycloak-keystore.jks

----

== Develop Quokka

=== Push Quokka projects to Docker Hub

* https://hub.docker.com/repository/docker/tedwon/quokka-backend
* https://hub.docker.com/repository/docker/tedwon/quokka-backend

[source,bash,options="nowrap"]
----
docker push tedwon/quokka-backend:latest

docker push tedwon/quokka-frontend:latest
----

=== Quarkus Dev UI

http://localhost:2402/q/dev/

=== Run Debezium

[source,bash,options="nowrap"]
----
docker run -it --rm --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 quay.io/debezium/zookeeper:2.1

docker run -it --rm --name kafka -p 9092:9092 --link zookeeper:zookeeper quay.io/debezium/kafka:2.1

docker run --rm=true -it \
--name debezium-quokka-db \
--hostname quokka-db \
-v /var/quokka_db_data:/var/lib/postgresql/data \
-e TZ=Australia/Brisbane \
-e POSTGRES_USER=quokka \
-e POSTGRES_PASSWORD=quokka \
-e POSTGRES_DB=quokka_db \
-p 5432:5432 \
quay.io/debezium/postgres:15

docker run -it --rm --name debezium-quokka-db_psql_client \
--link debezium-quokka-db:debezium-quokka-db \
-e PGOPTIONS="--search_path=quokka" \
-e PGPASSWORD=quokka quay.io/debezium/postgres:15 \
psql -p 5432 -h quokka_db quokka_db -U quokka

# docker run -it --rm --name mysqlterm --link mysql --rm mysql:8.0 sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'

docker run -it --rm --name connect -p 8083:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my_connect_configs \
-e OFFSET_STORAGE_TOPIC=my_connect_offsets -e STATUS_STORAGE_TOPIC=my_connect_statuses \
--link kafka:kafka --link debezium-quokka-db:debezium-quokka-db quay.io/debezium/connect:2.1

curl -H "Accept:application/json" localhost:8083/
http://localhost:8083/

curl -H "Accept:application/json" localhost:8083/connectors/
http://localhost:8083/connectors/

curl -i -X GET -H "Accept:application/json" localhost:8083/connectors/inventory-connector
http://localhost:8083/connectors/quokka-connector

docker run -it --rm --name watcher --link zookeeper:zookeeper --link kafka:kafka quay.io/debezium/kafka:2.1 watch-topic -a -k quokka.quokka_db.Memo
----

==== Start Zookeeper

[source,bash,options="nowrap"]
----
docker network create debezium-net
docker run -it --rm --name zookeeper -e TZ=Australia/Brisbane --network debezium-net -p 2181:2181 -p 2888:2888 -p 3888:3888 quay.io/debezium/zookeeper:2.1
----

==== Start Kafka

[source,bash,options="nowrap"]
----
docker run -it --rm --name kafka -e TZ=Australia/Brisbane --network debezium-net -p 9092:9092 quay.io/debezium/kafka:2.1

----

==== Start a PostgreSQL database

[source,bash,options="nowrap"]
----
docker stop quokka-db
docker run --rm=true -it \
--name debezium-quokka-db \
-v /var/quokka_db_data:/var/lib/postgresql/data \
-e TZ=Australia/Brisbane \
-e POSTGRES_USER=quokka \
-e POSTGRES_PASSWORD=quokka \
-e POSTGRES_DB=quokka_db \
-p 5432:5432 \
quay.io/debezium/postgres:15
----

==== Start a PostgreSQL command line client

[source,bash,options="nowrap"]
----

----

==== Start Kafka Connect

[source,bash,options="nowrap"]
----

docker run -it --rm --name connect -p 8083:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my_connect_configs \
-e OFFSET_STORAGE_TOPIC=my_connect_offsets -e STATUS_STORAGE_TOPIC=my_connect_statuses \
--link kafka:kafka --link debezium-quokka-db:debezium-quokka-db quay.io/debezium/connect:2.1

----

==== Deploying the PostgreSQL connector

[source,bash,options="nowrap"]
----
{
"name": "quokka-connector",
"config": {
"connector.class": "io.debezium.connector.postgresql.PostgresConnector",
"tasks.max": "1",
"database.hostname": "127.0.0.1",
"database.port": "5432",
"database.user": "quokka",
"database.password": "quokka",
"database.dbname": "quokka_db",
"database.server.id": "26",
"topic.prefix": "quokka",
"table.include.list": "public.quokka",
"database.include.list": "quokka",
"schema.history.internal.kafka.bootstrap.servers": "kafka:9092",
"schema.history.internal.kafka.topic": "schema-changes.quokka"
}
}
----

[source,bash,options="nowrap"]
----
curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d '{"name":"quokka-connector","config":{"connector.class":"io.debezium.connector.postgresql.PostgresConnector","tasks.max":"1","database.hostname":"127.0.0.1","database.port":"5432","database.user":"quokka","database.password":"quokka","database.dbname":"quokka_db","database.server.id":"26","topic.prefix":"quokka","table.include.list":"public.quokka","database.include.list":"quokka","schema.history.internal.kafka.bootstrap.servers":"kafka:9092","schema.history.internal.kafka.topic":"schema-changes.quokka"}}'

curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d '{
"name": "quokka-connector",
"config": {
"connector.class": "io.debezium.connector.postgresql.PostgresConnector",
"tasks.max": "1",
"database.hostname": "debezium-quokka-db",
"database.port": "5432",
"database.user": "quokka",
"database.password": "quokka",
"database.dbname": "quokka_db",
"database.server.id": "26",
"topic.prefix": "quokka",
"table.include.list": "public.quokka",
"database.include.list": "quokka",
"schema.history.internal.kafka.bootstrap.servers": "kafka:9092",
"schema.history.internal.kafka.topic": "schema-changes.quokka"
}
}'
----