From 5a4f29f0c384d16b65c19830dc4c2622c9fa0619 Mon Sep 17 00:00:00 2001 From: takahirohonda Date: Mon, 19 Aug 2024 07:22:46 +0200 Subject: [PATCH] Migrate learn-german app --- .github/workflows/deploy.yml | 6 +- apps/fe-sys-design/README.md | 4 + apps/learn-german/.babelrc | 3 + apps/learn-german/.eslintrc.json | 18 ++++ apps/learn-german/.swcrc | 8 ++ apps/learn-german/README.md | 87 ++++++++++++++++ apps/learn-german/index.html | 94 ++++++++++++++++++ apps/learn-german/postcss.config.js | 15 +++ apps/learn-german/project.json | 21 ++++ apps/learn-german/public/favicon.ico | Bin 0 -> 15406 bytes .../public/icons/android-icon-144x144.png | Bin 0 -> 6040 bytes .../public/icons/android-icon-192x192.png | Bin 0 -> 7056 bytes .../public/icons/android-icon-36x36.png | Bin 0 -> 1582 bytes .../public/icons/android-icon-48x48.png | Bin 0 -> 2146 bytes .../public/icons/android-icon-72x72.png | Bin 0 -> 3017 bytes .../public/icons/android-icon-96x96.png | Bin 0 -> 3982 bytes .../public/icons/apple-icon-114x114.png | Bin 0 -> 4685 bytes .../public/icons/apple-icon-120x120.png | Bin 0 -> 4902 bytes .../public/icons/apple-icon-144x144.png | Bin 0 -> 6040 bytes .../public/icons/apple-icon-152x152.png | Bin 0 -> 6358 bytes .../public/icons/apple-icon-180x180.png | Bin 0 -> 7768 bytes .../public/icons/apple-icon-57x57.png | Bin 0 -> 2484 bytes .../public/icons/apple-icon-60x60.png | Bin 0 -> 2576 bytes .../public/icons/apple-icon-72x72.png | Bin 0 -> 3017 bytes .../public/icons/apple-icon-76x76.png | Bin 0 -> 3180 bytes .../public/icons/apple-icon-precomposed.png | Bin 0 -> 7577 bytes apps/learn-german/public/icons/apple-icon.png | Bin 0 -> 7577 bytes .../public/icons/browserconfig.xml | 2 + .../public/icons/favicon-16x16.png | Bin 0 -> 998 bytes .../public/icons/favicon-32x32.png | Bin 0 -> 1470 bytes .../public/icons/favicon-96x96.png | Bin 0 -> 3982 bytes apps/learn-german/public/icons/favicon.ico | Bin 0 -> 1150 bytes apps/learn-german/public/icons/manifest.json | 41 ++++++++ .../public/icons/ms-icon-144x144.png | Bin 0 -> 6040 bytes .../public/icons/ms-icon-150x150.png | Bin 0 -> 6343 bytes .../public/icons/ms-icon-310x310.png | Bin 0 -> 16946 bytes .../public/icons/ms-icon-70x70.png | Bin 0 -> 2962 bytes apps/learn-german/public/manifest.json | 51 ++++++++++ .../scripts/README.md | 0 .../scripts/sw.js | 0 .../scripts/sw_base.js | 0 apps/learn-german/src/app/index.ts | 90 +++++++++++++++++ apps/learn-german/src/app/sentences.ts | 6 ++ apps/learn-german/src/assets/.gitkeep | 0 apps/learn-german/src/index.css | 17 ++++ apps/learn-german/src/main.ts | 2 + apps/learn-german/tailwind.config.js | 23 +++++ apps/learn-german/tsconfig.app.json | 9 ++ apps/learn-german/tsconfig.json | 30 ++++++ apps/learn-german/tsconfig.spec.json | 26 +++++ apps/learn-german/vite.config.ts | 52 ++++++++++ 51 files changed, 602 insertions(+), 3 deletions(-) create mode 100644 apps/learn-german/.babelrc create mode 100644 apps/learn-german/.eslintrc.json create mode 100644 apps/learn-german/.swcrc create mode 100644 apps/learn-german/README.md create mode 100644 apps/learn-german/index.html create mode 100644 apps/learn-german/postcss.config.js create mode 100644 apps/learn-german/project.json create mode 100644 apps/learn-german/public/favicon.ico create mode 100644 apps/learn-german/public/icons/android-icon-144x144.png create mode 100644 apps/learn-german/public/icons/android-icon-192x192.png create mode 100644 apps/learn-german/public/icons/android-icon-36x36.png create mode 100644 apps/learn-german/public/icons/android-icon-48x48.png create mode 100644 apps/learn-german/public/icons/android-icon-72x72.png create mode 100644 apps/learn-german/public/icons/android-icon-96x96.png create mode 100644 apps/learn-german/public/icons/apple-icon-114x114.png create mode 100644 apps/learn-german/public/icons/apple-icon-120x120.png create mode 100644 apps/learn-german/public/icons/apple-icon-144x144.png create mode 100644 apps/learn-german/public/icons/apple-icon-152x152.png create mode 100644 apps/learn-german/public/icons/apple-icon-180x180.png create mode 100644 apps/learn-german/public/icons/apple-icon-57x57.png create mode 100644 apps/learn-german/public/icons/apple-icon-60x60.png create mode 100644 apps/learn-german/public/icons/apple-icon-72x72.png create mode 100644 apps/learn-german/public/icons/apple-icon-76x76.png create mode 100644 apps/learn-german/public/icons/apple-icon-precomposed.png create mode 100644 apps/learn-german/public/icons/apple-icon.png create mode 100644 apps/learn-german/public/icons/browserconfig.xml create mode 100644 apps/learn-german/public/icons/favicon-16x16.png create mode 100644 apps/learn-german/public/icons/favicon-32x32.png create mode 100644 apps/learn-german/public/icons/favicon-96x96.png create mode 100644 apps/learn-german/public/icons/favicon.ico create mode 100644 apps/learn-german/public/icons/manifest.json create mode 100644 apps/learn-german/public/icons/ms-icon-144x144.png create mode 100644 apps/learn-german/public/icons/ms-icon-150x150.png create mode 100644 apps/learn-german/public/icons/ms-icon-310x310.png create mode 100644 apps/learn-german/public/icons/ms-icon-70x70.png create mode 100644 apps/learn-german/public/manifest.json rename apps/{fe-sys-design => learn-german}/scripts/README.md (100%) rename apps/{fe-sys-design => learn-german}/scripts/sw.js (100%) rename apps/{fe-sys-design => learn-german}/scripts/sw_base.js (100%) create mode 100644 apps/learn-german/src/app/index.ts create mode 100644 apps/learn-german/src/app/sentences.ts create mode 100644 apps/learn-german/src/assets/.gitkeep create mode 100644 apps/learn-german/src/index.css create mode 100644 apps/learn-german/src/main.ts create mode 100644 apps/learn-german/tailwind.config.js create mode 100644 apps/learn-german/tsconfig.app.json create mode 100644 apps/learn-german/tsconfig.json create mode 100644 apps/learn-german/tsconfig.spec.json create mode 100644 apps/learn-german/vite.config.ts diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 60361f8..f744539 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -24,14 +24,14 @@ jobs: yarn install - name: Build run: | - yarn nx build-ci fe-sys-design + yarn nx build-ci learn-german pwd - name: Deploy to Github page uses: JamesIves/github-pages-deploy-action@3.7.1 with: ACCESS_TOKEN: ${{ secrets.LERAN_GERMAN_DEPLOY_TEST }} BRANCH: master # The branch the action should deploy to. - FOLDER: dist/apps/fe-sys-design # The folder the action should deploy. + FOLDER: dist/apps/learn-german # The folder the action should deploy. REPOSITORY_NAME: takahirohonda/takahirohonda.github.io - TARGET_FOLDER: learn-german-test1 + TARGET_FOLDER: learn-german CLEAN: true # Automatically remove deleted files from the deploy branch diff --git a/apps/fe-sys-design/README.md b/apps/fe-sys-design/README.md index 23e19ec..60463f0 100644 --- a/apps/fe-sys-design/README.md +++ b/apps/fe-sys-design/README.md @@ -81,3 +81,7 @@ recognition.addEventListener('result', (event) => { } }) ``` + +# Favicons + +Generated by https://www.favicon-generator.org/ diff --git a/apps/learn-german/.babelrc b/apps/learn-german/.babelrc new file mode 100644 index 0000000..f2f3806 --- /dev/null +++ b/apps/learn-german/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["@nx/js/babel"] +} diff --git a/apps/learn-german/.eslintrc.json b/apps/learn-german/.eslintrc.json new file mode 100644 index 0000000..9d9c0db --- /dev/null +++ b/apps/learn-german/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/apps/learn-german/.swcrc b/apps/learn-german/.swcrc new file mode 100644 index 0000000..a2d5b04 --- /dev/null +++ b/apps/learn-german/.swcrc @@ -0,0 +1,8 @@ +{ + "jsc": { + "parser": { + "syntax": "typescript" + }, + "target": "es2016" + } +} diff --git a/apps/learn-german/README.md b/apps/learn-german/README.md new file mode 100644 index 0000000..3ff5617 --- /dev/null +++ b/apps/learn-german/README.md @@ -0,0 +1,87 @@ +# Learn German App + +This project was generated by using ![@nx/web](https://nx.dev/nx-api/web/documents/overview#setting-up-nxweb). `@nx/web` is for creating a web component. It can be used to create a vanilla JS project. + +# Web Speech APIs + +https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API + +1. Speech synthesis + +```ts +// first instantiate speech utterance object. +const utterance = new SpeechSynthesisUtterance() +utterance.text = 'Hola, ¿cómo estás?' +utterance.lang = 'es-AR' +utterance.rate = 1 +utterance.volume = 1 +utterance.pitch = 1 + +// then use the speechSynthesis object. +speechSynthesis.speak(utterance) +``` + +```ts +// function example. +function speakGerman() { + const sentence = document.getElementById('sentence')?.textContent + if (sentence) { + const utterance = new SpeechSynthesisUtterance() + utterance.lang = 'de' + utterance.text = sentence + speechSynthesis.speak(utterance) + } +} +``` + +2. Speech Recognition + +```ts +// Function that I made to check +const matchSpeech = (targetSentence = 'Wir Suchen Dich') => { + const SpeechRecognition = + window.SpeechRecognition || window.webkitSpeechRecognition + const recognition = new SpeechRecognition() + recognition.continuous = false + recognition.lang = 'de' + recognition.start() + + recognition.onresult = (event) => { + const recongnisedOutcome = event.results[0][0].transcript + // nothing is getting logged when I try to console.log event. + console.log(`checking event object: ${JSON.stringify(event.results)}`) + console.log( + `checking event object, results[0]: ${JSON.stringify(event.results[0])}` + ) + console.log( + `checking event object, results[0][0]: ${JSON.stringify(event.results[0][0])}` + ) + console.log(`checking the recognised outcome: ${recongnisedOutcome}`) + + if ( + recongnisedOutcome.toLowerCase() === targetSentence.toLowerCase().trim() + ) { + sayGenau() + } else { + sayNein() + } + recognition.stop() + } + +// from the web capability course slide +const recognition = new SpeechRecognition() +recognition.continuous = false +recognition.lang = 'fr-CA' +recognition.addEventListener('result', (event) => { + if ((event.type = 'result')) { + event.results.forEach((result) => { + const confidence = result.confidence * 100 + const text = result.transcript + }) + } +}) +``` + +# Favicons + +Generated by https://www.favicon-generator.org/ diff --git a/apps/learn-german/index.html b/apps/learn-german/index.html new file mode 100644 index 0000000..d45eec2 --- /dev/null +++ b/apps/learn-german/index.html @@ -0,0 +1,94 @@ + + + + + Learn German App + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +

Learn German App

+
    +
    + + diff --git a/apps/learn-german/postcss.config.js b/apps/learn-german/postcss.config.js new file mode 100644 index 0000000..c72626d --- /dev/null +++ b/apps/learn-german/postcss.config.js @@ -0,0 +1,15 @@ +const { join } = require('path'); + +// Note: If you use library-specific PostCSS/Tailwind configuration then you should remove the `postcssConfig` build +// option from your application's configuration (i.e. project.json). +// +// See: https://nx.dev/guides/using-tailwind-css-in-react#step-4:-applying-configuration-to-libraries + +module.exports = { + plugins: { + tailwindcss: { + config: join(__dirname, 'tailwind.config.js'), + }, + autoprefixer: {}, + }, +}; diff --git a/apps/learn-german/project.json b/apps/learn-german/project.json new file mode 100644 index 0000000..2b2c95f --- /dev/null +++ b/apps/learn-german/project.json @@ -0,0 +1,21 @@ +{ + "name": "learn-german", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "application", + "sourceRoot": "apps/learn-german/src", + "tags": [], + "targets": { + "dev": { + "executor": "nx:run-commands", + "options": { + "command": "yarn nx serve learn-german" + } + }, + "build-ci": { + "executor": "nx:run-commands", + "options": { + "command": "export GIT_PAGE_DEPLOY=true && yarn nx build learn-german" + } + } + } +} diff --git a/apps/learn-german/public/favicon.ico b/apps/learn-german/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c17faa56886843237df92b9d8abab090ad073052 GIT binary patch literal 15406 zcmeHO4Nz4@6yC>sqG>v4p#5lKQ)1&-WHaTImR4hB+K`ojmN8Q{&8S%uGmJLPq(%8O zeuBUNb<)UGQb4Q#Q4>Ug#HRcKR1E({fl&Dq{NwAKyzMqj&E}+;vwxyq2DT zSl{9p&t((M*XYwHvJ0QptM?%!BpqH}d+1q(1_}`zoQ9N?{axB;XICIJbTic#YqVva z#dzb5Ol;Y5v`hPdfFwjk6;XXS;bjekBQmlGBSs{3Y0o~Co?Z?=KlUYGg6ITa`1&qJ zMh1C-c=*;eH{WJo+d`6M5inTI9#p6k@-H&>}KE$FP~dB&eGp1|{y_N6^$ zH%g_j{d-U~6{D?|0r zEnn3syAC2?g<(3lET8qrZGaf`wIMpVC7*SOEOlG{{r4wf&K%ks(Ryl~Rs`{Rz3Yge zaky1k8|TdV1tUi$>(YnU)7si5+7FZ|@~yd4YVCWR)&D4Yq@^9i*|Qhm@1NjQhlLCC zz?U)dbK2!I&xnYfPUR;g>|s)D-h4>XS}gQ_yV-w>g>A?CuQJIqDXGM%{Haral(fag zv|p9`sZDOn7a~*gC@45Cc}|?Ngcn{|NA!ycg9x4XtxS6F(62(J-F6Na{d@41ej*)e{63aYCcQCHUto=ZFOboHKj@w;&4%2gyM@5Md$XwPB8 zh9w{|u|(1~G+gYUvwQtlb$#H0<=DT!N{;1~E3GIjJb{>)B7}wIN<>E&VfXIiQZ5r6 zJXno~9x`qXW<9*Um&!G%w6t34;pk6USqiecw`{zo@ei;yuh#507@ZpEK z60g6WLEpZKy5|>Hglg7h~hqKOx4x0q!ohuvx;I!fvY_F{?((aBN~tN@7UkGW{8)6x@L~o zk$g|<4AY<(ckkpI5Fdk@Enr#Y){5 zRI=?Y1Xp$KOwT+XAuvxnX3g3x$2%qE5BXcw!IN_0#5FV*U6lU#Z=UR9;y;|=Nguc^ z^I%?f3>_MeBS&iGx;tsoT3P3b-fCN(i}(yCUmG`;b~q0jPBQK#bhfG9-`tjYD0{Z` z>kmj7+qeIPfdgY@y{dyJCFjOMLo>m-N6w#zhi|1^ocb+3pX7`p^d#ujn`yZXx3$Z> zURc-`x!yE3Uc%dN|K#?Zqt(v=17eVxs@R8fxbMH8BXf@mJ?D2r+H|^=O09nId&+t< zEw{1D{pH-bS*WT~)~mF%GTe4sjC`i0i@WuA-Wi8|`_9NQZfv|r^V}YAzZ8Cao?#&& zj4+)ro)FjuzUMlA#xzW8r*pT_h>tIpTd(Jsuz1k{KP;d-S zJ@q~55~C}h&ufa0PmIjP=jByO9=yJkme$C9kCt4c>b>Y2Y3$h5^7}##1pVRng3lH4 z8a-~@cewrbSh;TSd&A&0gzLB+=dsyGIQOq!yLKJNlTW5l|BadNo%NMN=CgkH-S>_BzX3ic!}nar&u#>Jch=kdef{5E)8?kl UO&>6Q!1Mw7+AuHE0&ZI1AF8FYLI3~& literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/android-icon-144x144.png b/apps/learn-german/public/icons/android-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..f6f5e50a4c2efa69291fb75b9208a08c4870bcfd GIT binary patch literal 6040 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 literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/android-icon-192x192.png b/apps/learn-german/public/icons/android-icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..b42e84bcb585cbb5408f2d3a4d07681a07051375 GIT binary patch literal 7056 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 literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/android-icon-36x36.png b/apps/learn-german/public/icons/android-icon-36x36.png new file mode 100644 index 0000000000000000000000000000000000000000..5b908abc8ffd485fda5b2cc0342bc9e45a99fe2b GIT binary patch literal 1582 zcmZ`(doY!09DdHHa*$+ID7T12&dsIcD}@-&;$+>n-I+GW@!?D^;n2`l)^3+05h2%X zT4jVS>()Kyoi z0#FyYyZF#?&D>xr(R2S;SUDXQggSXS0T;YCnna1gp_XClCGg~ zl*ugj^c=3OefR2>LZKMFbm_cMn95{ktyu#5o{odT1V`z9(S-C4Gr?0g1xTYorm;)*RgT5rN z77zpJOP6-%<(0X){V_c~*4TJ*_39+xQ(y`0As_&93=ArLd}IW1BRBWu{rjhQJldws zv>Si}P{d|W-Me@D?Aa70r7S(Yrvn2i48~4i5kR~9C6EGKJ9uz%Xeisj;QY32&qqg3 zak+;84L}pH2M*FAEY`D;kxF0RiQeAfy1J7<4NyySm6ZoCUVPlwS8Q#4OjY%_%F6S= z9pEl-Oiiu8(sFuy{6#Z@iUJf7g|}p8Xxb<%&a4bS_Y$0DlKHODuAJy znzY4>N9A(4KJkc$hdhi~qG%Bs!o!PgY+Az!MH^qE+=QYVvp3Lt0LPa=(Tn%(=!iwSI@)6i#jlv{!qX}=1RzxzRW3yDen!vNjGn#d zh(Wana&&Qofua_NF4}!YkcXSg((G#W^>m^v6?nNSPcT2xvNXL@-&aJJ(*-V0e*Ej= zKpm%~jEoGKiu+yPt6f(+Tf4iPJ6eu;=xS-O4X;3FN=;S8TI6qH+{rdFW366iYGq<( zWVtrob@_?plBCS)l=78I-{zOg51mcQu{&g8roY2spVC$nv6io|me^#gb*zJ$htxly zpRlX*jDNEvO(;xT(#`U$iXkEc!al^jotl|`^D-`(*mB?noIW`Eok>pK>io-9lft`3 z#=P|wq}hrV*XWm-Dl&o4-N@e5*2+O?(7d&)VzO{*WYe1C1v|aB`=u^B>p5szx`}#N z_I*i3b-8?z$SvdCVm@1ChgMsxK;&&9bNfi0c>%nQ=j`LzSL^r}nZo^A-gmcz@li};FI zXjvaVTBpDF$>_yc?FEx#Kkd1*U+*0z;&lRpgLLSIv93ve>pHsWwg6M9>vn0dNJ^37 z7>W+yad2Ih=$?_4H?%M~H|DmV_kyKY@8!gHIET=5~mU z3X$#+#ZU;7N_WSSY_=pq6iU%UBHqP{iV1D((Wf5@bmp*rVQ~>bBi5*j82*PiFNBif(FXwTF67xTF!SQ<75>8n`Hq#?TVAYPIP zN}8~n!at{C?~V-JQXL@tNXN^MMuEG5XKl~7v9;%~jaQ}n3N+^F_(~EfaGag9N;Xf@ zrGR-Qe;)xtB;gc&b#_FgG(0Ml9U_XCh@&E7+5cJ2w&RFG__o26y`4CS;s)_Wd>gK< iEzd?oak(~jLG~<~!J^N{G1f_?cYwfE=u+hznEW?nK~vlS literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/android-icon-48x48.png b/apps/learn-german/public/icons/android-icon-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..5dfaa2dac1f1e688a342118a2692ea2eb2173da9 GIT binary patch literal 2146 zcmZ{ldobO=g=}nTg3Q%%u{3MJrJXk?x9e z`HEweL=rWWba9I&lH}XhrF=hr=X=ht^F8Nx-skmxz2EQGHR?euV6t*omI z09Z|RbM}HfZrKn@Q12@@cNB68Tql|n0F@_JE;1FNIf~`xMFSw-6aY~=0Q1n2=pz8p zkZ?Q*0CGM6S`mfyo|~b7Qt%E}XRx%~iW@JBp%u80N^^mKM5wQ^M8B_{;0d=tIwej{#QPtQ7Za>+}+T<{SApO2lEa{ z&uE4nt3fm?s?c{H+rpuqzFn4c8_lGqQW@%Q?hOrNA28B1T1hIh|GX@uYAdkCspRnFhrvIC($gF(vOzd2_h&nhb3EDltljwX6-0m&EU!=> zd~-{`(&-u-k>iFEA=mRujBG@pYUZn1{8D0Jdmf(EW1+mqI&6(8D&Qu_ulFD#C1VGr zQJ?i2wXAWm->ub(1l^vwUKq4O4(E<%Wh}l&Zxf-hCa>@T#Y8rlmyUE^Oo~5uwyu(^ znrv%(@%p|eD03JB)hT1YE2q) z$D>EBd42=NDIiAGX!Lc=`@v72Jyxve0obW$=i9%|$CtnCT~Af_bSY`7KArIR`1D_k zaT+J!813fnXu!@=%zBto+Mv(nW2Pz?JK~~kY8DTrBV#KV!?m}X%BRMA%GRBfLrTiV z_x-jY+wjC;5h=yRM*bjUW@k5(qcdB(km{9TtQNiI$ZGxMK+rcg=gz21JxeIsVw_KyP>PRf|pEr!F&xw_PA^GJe3k=;-hT z87f~PA0rBs7)?D?YRyHwd*)I9d!b`1L4566YZ2iv)##99xMdqfUVg<^lT|^{B)_Ue z`;DK*GnCSZ$qSe>wc+TY*T@SeLF zlrvdxstEBOMJ?Ieq;M2?Io@N{r@kONecqloHwbqoWgC%J79P{<)lTx*CkfIIL72fO zjyNR;=sn+=A*-&|@b>w-_}utHO*LBMuo_Gu2y4!q`}|hJ*XKptH?tj~ zYA@HUvJ=4;H3d@99w~d^PyWP*52Ufq4T2{chK3Hu%gu}_*>&rbgCc3GHD|_V8t$DN z<@a|jCZ$SlNfNyr#0TXci$JlZGR8iJ(AC#gcFm&v=AMF`M#ggN-8bpIJpA=N~?tf^WPHX?UPWYYn3bKnZF zrhXdT)2tAmcB#K+y8UK=Sz@9fJ$6_Z>DV^WcdGLoTx6)M7XRm}jH$8)tCcT$s)m3% zQb(8K>kYP#JuL|ve89Yal+k=VQ`zdEJqRIY>ZlmQ*6ubGi%%=O8p$`s=erK_fgkqEVR_(_u#;#x#d^ZV(2qxfipS($VMm`M7crz}kmU z-_OEM9Nj>pwaNcgUtd?hU(3@4Mvb@Q2fDu|T5b<>P2y1~sz-VKwI@mzzKh!__|nvS za21rhIHvc;9GASCk+bAkNT8vrR%OB|G*kgfc%C~sdAHE+VMk+v+7bN39b=qgSr9kzavHSG{P&+Him?2Ky>A5cPudt-&J`1+$-i==U1 zCDv$wYMR?9k?0R(nrp6Vzts5hCdG20q*gIKm+erhh!bWgTxzyu!Q@iZ6no(EjIIM~ z<8L{=D!LH4S(b%K$aTL@Hy=!N%s2ISL+Ym9R$YZ@tnH?{I?kTGVjj{%4+(q?Ybnp( z!B|>I4sC%EZXOW1@7G63=k;PQA7frWte^%J3bfG0PsnBpIb>EO2XcUbBM>n-5(ZDA z;|b)Aw&aZ@OB{}j!^Mr(LUrgD0bju8g~a`T0pgx22@;@|cZd>%2xFL$91toLMnsXZ zSRS9r z%E#khd1!Qq0{BgYjdmoWjU8#jL1h&PQT-*)E?ztb;3$++7k`_8LO#EQyuGL(gcrtv zu8!r03&R9lYzXrpk0l6?!v62cv9>s72+4-cv9o0bbMV0=CW(l*u^|wd96X+A8*FC{ XDXgLM;nr(sLpuPfi-&UsB`Ec8ApL~B literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/android-icon-72x72.png b/apps/learn-german/public/icons/android-icon-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..95d5ba758374c76c2fa3788c199e879acc3ba526 GIT binary patch literal 3017 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 literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/android-icon-96x96.png b/apps/learn-german/public/icons/android-icon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..8e07b23792aa68ec8c7f8931bdeeedb05a6f69dc GIT binary patch literal 3982 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 literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/apple-icon-114x114.png b/apps/learn-german/public/icons/apple-icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..e0c29c2c931e7ee74380925e9427fcb8ed66729d GIT binary patch literal 4685 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 literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/apple-icon-152x152.png b/apps/learn-german/public/icons/apple-icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..d9b03f0903c199fc67080bf9526a2f014f72d203 GIT binary patch literal 6358 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 I1z5y?0ZziT2mk;8 literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/apple-icon-180x180.png b/apps/learn-german/public/icons/apple-icon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0ac0760a8e3d2ba05d638370bd05f648048d8d GIT binary patch literal 7768 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 INP(ii0q7D({r~^~ literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/apple-icon-60x60.png b/apps/learn-german/public/icons/apple-icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..e18c5db8985e17914cdd858a64b4174b738a3d77 GIT binary patch literal 2576 zcmZ{m2{hDeAIJY=7!ySyQiz1gGK+1REE!9NtO;4Vvod2F%pkckqFY3z6j$~oMJ{Tt zp|MO&bh;r-_Oe{ED{I8aJKpo2_wC$s-t#}t|9Aes=kxtO&+|LaIsadhv*VdP5(gy! z0N8`IwQ?0klbr#D2;XQyf4DG+`dc_y06_I^NdaC=_^nE`b#(xM%bEbdOay=pVTw5g z01=n*G9M#|T2OKVt=K?>zYprT2sxaR%1GT6_vBBde`3%;x6^GqqSN z3pdKpd{$tP+j$jk++=$Z%*%TK=^3gRw4d~#H<=^GAZO^9^-*j$tc_fZ5f+xu`qtZ| zMc-<+X-?S@2n#%!PHCGbHVGwx7vf!WT`pFXyi1REwzL0*KY4aC>}$XDT6@Q{foYb$ zI;YjV?)S*{@woP{CO;;(YyYOH)?K&yUMGGB)DHMF^|^{8yF(%CLuoNmec3ZoN7=C+ zYNE;gDFh@a|H%ojqgT^6V2O(YClUM8$0VYcC(o@c@Z{XxoN;XZ$se0<|9S^jom$iH z`P5c5m|EGOJltKr&f%n$Wg!=e!S<@Tk}>@ot0ouD@xZe^YKdk#$2BZ3 z!i*jB9xb;jUe@zb4V{%QNZa?p84BF%PA0c2g$Enic~tsYkToQ=wU4s~iG#n`VJG{a z8_W;2trpeA3v5C) zymxdYP2nPrdVW9s@UQS5qp8)dg^k(TCV|X&YcHjRE3@AG$iZaw$7XeWs8v_ae-Kf;zvHH3_2Nf8Ybil?2)DrK=m0S_AWDa-S1Ai261?DQbLF)x`suso zw3&eHyx8A%Uw28lF95A8bU;}m#_=HB>q`)(UcNF#U(*J-#uU4g294F#-OXa_(^dnP z?Ce)dpYC?D1dmo%Cl<&;AfDC1hi*51JDB{|s)>)~-BPY?`f(7ST_Ke}1k58x#<0*S z1ee1+veK=<&F5pC>?O&8y>~raF$JG)#o?F_wVWQwdy0rfo^tB>;9P|Rjq!L&G0P4E z(kdwt0@{cqSFH7QZrPOgFjx+(0a>}xdvkb_*x8cmNvFTn*5<{m9E)#kOw5;+Qc)=@ zdsRaabG6HoR^oo2E`<`2dO+SGZA0&ALxwM$A(`J$^T2*{O}&Ja%X^vZana&qSd`Wt z)Qk_RCdB%fgzy?oaH59PWS~PW89i=eQGM;X0oZXc0WUl z6d@~8Q*ps^`WgB0C|vh&T2 z{L!kPj#9E}c{7c=qU6AbgT%P};}A$Jxv)AzQ^WY+pdaIz#mr)geX%XQS# z4pYuKZKZpAiCEibEIl+HQmtgkG1J-|MNBuEiDFB8G^Q^}q?mz38X9(^a)5Dph2`0q zfC;oxn3mZWMZLHm(aBm?m>-R1N3MK2)Q*7MxpleRD$1CivfX`}X~90#W5zDLdc7tn zsodWV*BsPR6VP4!;p`=b9QAdvyPECXKweHJ^C_jif+{KwAp~Qf6BRy5gg+gh5bbby zB)+{ZXC+5o>doIS)-D849NG#Rk1Q}>y+vZ4Jay`iNyC!Pu2=Y$7aXlvEiKXE>BQ7; z6^>Ke?M35Xr!8(0pOhMTW!b!0923@&FY%3dqyv0&#EEqVqlR|OzM;%k1c5Kj&W0&w z2;$z`UM@&DJ)$*WGJNIcY)3&Y`q9TO5$MVqpB1RkBlvahkkQ$8-G>&Qr;9;8fI1#} z?M59711(PXp#>CDCxzuQ4YO>ny>%V9{64SrOG!p(y#V=A&D847=^lxyEydR3us-Ia zSD&}?b2&LsB}N_P*I8XJbHN?_ZGW$@MHbzwb3BWHEVzcDaPOA33KlC*$Ok58c*f^O zt_xuB4`GKqt35jmbPKv#S-m#E;}Zj-MXDMvG=BFjL;dkstv39?Z?vQ^&d(TOWtB1(gj zz6$rek2b|HQ+c1)UUm~hzX0nW-^Quq+_@MgT+z!f!1<`v)e#OzSz*-9lwoX1GBK<) zZ$01%5F2EAv9g-ilp6wx);B`yqqO00G#nm1!4`H6KM8_qB&uKZ{}(_x(kP)o zb!P=S&5sd<4<`c@1|yV?hQX-8cz?2RP>F$hv~d6W_sYVK0ywb4x=|v6323wxjTjM3 z4q>3t&O($9AWFA6uzxVv9Tzm(mQ3}hFaX3!B69NdHyfG|etpF|lLo7RVgQ7@AL zI0lnmXf`LDa{p=Syek&)qXv>L^!D@ROku!2S0KkMYsZhwRW`n1B1KzFQD{`k^lez literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/apple-icon-72x72.png b/apps/learn-german/public/icons/apple-icon-72x72.png new file mode 100644 index 0000000000000000000000000000000000000000..95d5ba758374c76c2fa3788c199e879acc3ba526 GIT binary patch literal 3017 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 literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/apple-icon-76x76.png b/apps/learn-german/public/icons/apple-icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..ada20864c82bf0ffa79c5ec86a3b31a7ce0b64aa GIT binary patch literal 3180 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 V>w}B%#L;E|40KI&%C)iK{{{o4onin0 literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/apple-icon-precomposed.png b/apps/learn-german/public/icons/apple-icon-precomposed.png new file mode 100644 index 0000000000000000000000000000000000000000..60e885774afd4c392b598d0aa24b38a22443b891 GIT binary patch literal 7577 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 +#ffffff \ No newline at end of file diff --git a/apps/learn-german/public/icons/favicon-16x16.png b/apps/learn-german/public/icons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..37c5c6e9bb21d6b4c7b398c9adfd61dc4dff0336 GIT binary patch literal 998 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a> zWMrIgU~ssh;p(zwM;aUF8ya>pGjB~wy0?A%;rjZe{{DyR>b4~(uk!M`x@1Yay1F$3 zgERv}yPDdSB}-O&d-rm4pP4wZOJ83KXfgvsr=H%KNt2d4IUTO8tzu*hV_-N`Q?uOJ zxto>s`kFPnGBXb|Fx+EcxXZwBgn?mKdissEYtK%bwmm-n1Pj9hE{1!Y3`dw4w#LSu zn?8NAgv3lGncEc%KNm85pU<$vj$w+V%oGWUUQUKbix~f3XZU}G;r~^Je-{~U^f62p zX6RvKIG)RRXA35?e|7Fdh=f zg|4ARh@p{{v6+>zg|>l#m4QL!v+cmNfTSTeKP5A*61N79-TW3n4GJI|iu2P-$`gxH z88S*r3W}}t^)qu5(^G*sGdWu?zbJjrd09|sNr2RbWR&J6Sy{Q{Czs}?=9O4k1pt*6 zGZ-%azgr(ojVH(yD=UxG%=C;B2183DhuFeUpc-)`bD(O%GgC@3KuRvJQRDzBkwjAB zo0*$hQdyA70CtsrL0-E3rZ7J=b9_U9su&E-jf^cVOiV2;)XTW|fJ*q0%n8n{N@Xx` za+{j|ig%;fyMVtquA>zf%QrdgP#q*|IK vC#4!DStMGR7@C?InIxtf8k(3TS?U3G=mFhlpd`@)w1L6X)z4*}Q$iB}`NvS$ literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/favicon-32x32.png b/apps/learn-german/public/icons/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..e57e76755afa3fab15dd52e45a9b03a965253d01 GIT binary patch literal 1470 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 literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/favicon.ico b/apps/learn-german/public/icons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..925eaa3b5511186264d74e6c9b86f67b9099b4b3 GIT binary patch literal 1150 zcmd6n%S!@L6vodTHK;a15M?f+MYZa&4qE6g1b6N#(1o>VA7N;##>_~Qq?HtA&|_&? z%M@x+L6AMj9`sK{o4(E+9c(m^cFypdbLTtvo^$TG!w?C+tybb^FU^>VI*DkIVTqNp z&W4D6^;Z}~O@wI$WR6r(_??y+wQ-#-s}OS+5b+Yk`m+Y9_aM(H$Qo-9gX6bGA$C4M z4*=a&D6+l%2CY4TI^vZWwY8||>e_(4ZwoYE0&RbRQlIsV=V0$n@Z5x<7KQh?xp|GL z=@Z`fCD-xJyc%g^O(|ez&V`GJ@y-W(B2+JEOv$AVOf`rp&D!$8VVyGzk-}w z&8>fXDkdiOkxmyeFd)x+jOnQ`hW`F#&F69*ux8Ay$5NCqyxuHwxmN^(dAQvfW>*_a z&F4Ed^i5y)+X@lJ$VdvIPyv}tQDbSTfYH$u_eQU^k(KqSTCVarmEV8oX`XTYAK^dB E55qFWRR910 literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/manifest.json b/apps/learn-german/public/icons/manifest.json new file mode 100644 index 0000000..013d4a6 --- /dev/null +++ b/apps/learn-german/public/icons/manifest.json @@ -0,0 +1,41 @@ +{ + "name": "App", + "icons": [ + { + "src": "\/android-icon-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "\/android-icon-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "\/android-icon-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "\/android-icon-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "\/android-icon-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "\/android-icon-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] +} \ No newline at end of file diff --git a/apps/learn-german/public/icons/ms-icon-144x144.png b/apps/learn-german/public/icons/ms-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..f6f5e50a4c2efa69291fb75b9208a08c4870bcfd GIT binary patch literal 6040 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 literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/ms-icon-150x150.png b/apps/learn-german/public/icons/ms-icon-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..1f38a786e2221a41cc3fb7fb96f4fe39c564fc8b GIT binary patch literal 6343 zcmcgwcTiMKkY7M@6j&rFNM?a$2_hLmf`FieT~NszNRp8ZN{}o`SjobYvjhptl5>zG zAUOy~&Im}5+wbbC?yIZ1Kkw?*ys6jo>+X5;diwpQBcAJOP*bo{0001L%_pk*_#XXF zBO}4zaMAyM!G>p&mhFRSob{x0AO;`R8=23}BSuqd4u7%%~W)(kt%_WYn#kNfrzGfh- zJ$G@jjKUr<{?@;y7cYl=wUmf~ft+p3`Wb+>e${Z^5#sykM|VPu2~Fv&$laCy&jpY? zS%S?FpEmQ&bcY1xOX}iCai_O}-G7Z_jcSZR?|AN~JY}w`>g^rox1RtF5)&hmK7EYO z&-thyIuX&+vr}<7$U9HJ^zhjatQ5A3Xe1NEp?Z+A2^>BpD_2=l1DTwQ z&MAqCn~wnv2*JK238MQ{J)poOIgc-=$Da#OJv5P9TfKwdbZo2e3o{gdyHrGkYInA0 zD*N%dFw?lRR~LD$Ri{2dpAAn*apZ%#x%QqtY}D57Y@euTkA+qRySW}C&cMKUc4lL~ zDQ(pM^58{TVSI1o?bmAId4w#yyoQT@5^T+X-)t#e+q!CN$0x*1n8L77;LRXa0qtGP zWs=dCtFx9{4z`#)scZ~5H6UEaZ1X0O%z2MRQVUY7W0A?rp31T+(1 zr0CW{0S&Gx-OOCKAK(i!f8c&ESprs=V_3Y*5t1f2i%t5r_*d$O-(l1$8f`YYx$2zk z%=u_!mv71ar>FG6@DP1^Cf};-ZSt^qBnuQO#`+<75H;xSjXutieM z^4RPi%ZnF?q{KJ_J!NInyK25qx+9|2_rXNo& z8^c^h*eVSU9k^Q`)l9o8!(^y;WmizlcD)iE~KzVymT3?G=*h!Ff9q4#fkcG96Q z^Xl5Nf0(}_KeT^$*0%oI!_Kij5I0dGW~K@ZA6{PS6sj0GopbXdAwjD(2<`s!<*&Nc zYZd-Vr|mVy4qjdH-sRWel799Xb>4I){d@SW`1FjHvz?YbC!eCtoUR>cusgnGg{f({iAy zsy}88Yrr(gUl0>Vp*x~kSQ4eA5}ysx1Bb4Dv+B^@#mjqX&8H6rqiPNXs|FFC4>jKY(VoflrJ0TA zR-N0^rndvPGfT5gQ?2_2EL%I<-hNJq|KLN-ilrJc5c{tQuU=?6ddq|oV}7KYu&Aj$ z&6HNQLGg*KX~|U@wwl1Y(HU~n7ropF5&e9M`uUUH`GM?$Oe^OzM->mbF*Wz9#^=e9 zB_fknVF>jU<|ZF=vrlmK2oRUk!wOHg*IX!w@$>?DtFXkeTiw`mgnX(5>+ z(0pMBVXeHYq}#coDc3Mo9yFeuroG~SR=Ktu)&~|gabA2;lEl#HG5TjryZ-Vr9)m2* zS7bj4Cj&&|W{v3mBeCbK*RKGG^y9nQnv`vvwH;wH z(uy%T6|vj*e8PWXvGqNOU%y=Eug_LkI0}yIS|M3wzgLes)xs}e@30FYkW%F{igPj3_^55wA-qeMYKT>`YvL_|9l)e|Igu*E_6?oTJTgdCyVB#LqpNRh{>;qVdk!n=<_K0ZGVL1N5RhnU zic@!rwB<%ql+M)0KfB)0D4lLr*!yOPV6nFs3d;;gZTn%yEic!&@i>j4Ka5YA?Lhft zpYvtnQ4YDMV3*$mpHdDTDM|<+og{s9e@NxyYe8EmApyIB!c$tRICJx7%5UDxxfQN>QHq)z^Uh(o}%Y0Ij-jbs1!g6rA$)BX8xcD|N zd!gHPufl||USlf4eXsME_Zp{b-S}lnU|n+>P)7CCG?|l=@6o%9w4;$j_3Nra#;-;Z z7XXoxql7tDOQ48;OpY4lPFyhG6h>hONLvU29G{zOMOt!$M?n4 zW5_;Li&*fEJ(zOt@Or=6XQg}UvJix>m7-Dn!?U8D*iXz(^q0~vF&w`Dap%Bz6Ueq`Hb|#Hno^{cSl2E{*{qxTLFy3!y5vMb!kUBX}yBr%(|#H1Xo>Y z^dSSkGcAo-gH;LzaOz>NXpdW#Bm$`dmIwJOT zM>$4sQj+(&dTxg&K73n{hb3ET2T;`@@0yh z6!gwV04gwe)c&yYiwQy0dw9#`-O1C_EOSZPx9Snf)|JE)19JjB?KEHMuzE6~46W^Z_88s5o z&^ysLO|oZPm`xY#gj3#6bK>eLtOJ=;hhm2Vm<%i}wJ@-;F8x5_Hac$Zl%FYQF-yRy8X!3Zh zD}jonzt%Bt2hNdJCqhr*vX$YPEbrsq7NV1bWT{2)D@IIVen>a9Dw4D=OseB2LLZ|C zG^ldC3!JUv&a;RN%#A_{3uIk<{2VRA|2Ehue>&$n0T{^9TGrRg`7zbq zzE&1Kt885RAhP93| zIufnmo;AOdq)R3}^z#KKr~0FT?-@OL=365kO{?E%k=4mbzNYk~xo}=h#s^aRIFDVN zPIXQW)z!9nh&9}Z^@$DftOwK3Js9hE8@&O|t3qC1c`E!L<)pP0=YXeBiLa;PPGrk+ z1JV#u29>r9(|1BpP$-Ln>n&ejxy}d}#Yh-hA$NF$>^fzD-gk6?er0)M54AdSKasN7 zTKxE^5Vt2w^&(2jlRq&x64^go;P*Y>`xuIkk7LM56DGW|dwG%k+BRY~_6dP*_HVL! z{mLx0oqAE>$e^+^>Q|m;IGvKoa$Zqg?iMp1Xlc;Q%OenI=+cBHjOFIw@tjMlBTvm9 z?|iPO6LAwcfPd6(ePx~>pMs3F2XHEWx|-y8N>`|v9u5`+vV$yo@x*wg+xzh{ z+qaPUy?XSk5o~g@@tvsC~!m(zHE#qJpPHtRZr=cfL@j-%&Hv>v{;5a8Ef zYfTF|*#e^}@PyTMLgDPoVIXO5y@l#=X;-_UkGnxvT2RTN(GB*%k3=;swd`ni(;U>AvEpn`D1(v-#q_a zaY#em>!2s$UBk5qGZ&@}y z{gb@4r9$%_Vlu*%W(4b=4CCmwfQ%dsN??cT@?I^^$0ez)7`60IYTSzu1U~BB?iyX> zICB_bZi-+bE8>*Rxj&;2A=j>fPGMnf=deb&!;}fq_F6vwrj>u^LSB7l0>XypY0;NB zVI%UL{G)J3NA;KZc$s6;9*ir+kVCVKxIPJz4ACsdp23feg}n;$e`azQ)F+q4%By@U ztJ{KcR}8$U1_@0cv=SwjnYSzjEEEY6o}On!NQ`zbk`M8Rop*HeaBjH&Oi4F6VDF-) zHo061M*JAxNMPeJ6V}97U3yF|_-tdM?s+>%;W>OluR0qVEFBej8vM$JuPl7vy|tB< zvL%luX3yX=W-C9iV1qY1yKHn)Wq zX!Rph4`kU3t8h!+_%m5i%dXT@Vq)@Va20&2!XKw#JsV6C`#*uiEqHcr9h%q>A*uSu zPLYJ^wh$wiP4zeXxMsRO3yXjD^~414RZrT%I@;Xmj_1KBHuYsFbAB}8Of`;3Wb4fQE>c8+P}HpO;$5OHMGsS zOKMp-w9g`3$r@KoPeTHysj8>Lvm@^Z56JhM(~T>i@`(=&h#^s6Y)P?z!06YH@cWtx z=#2b76lO*3UwUJ8&qajVvI0r@uyjknI<<@ z+7K6>hxu9p{yLZ2;qBZ z7-9BGbhr~LbUHr%B*vJ2iG`(YVKyx;im4Oj$a<(cXQ}a4X)iD^q{W|K-s*jR0gHlH zoHNBb>g8syjcJmoQK>VecVoHZ+#!O)Ak(=r@p<^D=OVJIL})nzn4VGd@V3?TvkWV* z#b#oD^9DnF2;3Sx{XKd-V}G786vA(u^?|U(1gLV4mZRyfY|N0ZDJc6*kwC(AfbQ;s z&W+r@@QfL6y_cWO?QQ+{&w=mTh)6g5e?#ZdTBB;haMj;9j?^;{q=D0^c37u-j`4;K0P-`s`Q6EML`iidEuWXq7S}t>uPL@0_c0{DGb%K0dYEV=0+s-ze0<5ceZ|Q|H(FjJ^QH|; zeZJKI0+>kic2Y3K%I=asZ5fw6!LQVgRcGd&5ju|R6%N0XPc4w|^BIY}dI|KjJTFkE ztC}+brxKxy{-3^j&MB|``gV)S$9^zm=kD|KO++r_I-cjCp>2UQySIH*ix6Kqik5sR zF+cxpX`yLqb_QLe{}S`$r8+l3)$F&`wqU%dx47`psTY$O{25_ixPUbQvxOa*@UE~T zkBMHgwDY^o7#czb235?q6@Rs+(k3snCR7h+<`*2SE%)dN@gr%#HOD*O*W^ecC@-S= zb~IQ$Gg6TY)A8N)QBcu$h&%K6h}vDWc!=?4%&j)SNi*qC_L{_O44pj-WRmFmQd!sU zW2PfnwyvtOeI}~XV zcBZ)x!*VLO67`(6R<@|LR{G@yF-mTdS#bsq6Zb5sHa`o0GRw*5a13ulI@$87e z`>VamBfJmWimMs&sU@(vW;+WS8G6;>_sMhpGgSx6CqUGz#9m7a_%;1S(PGqB~Mlm7mTnGp>5JwyFdyEwfEjeW46RaNSOMPDUs}=d9A22kcy< zTTjX;SIzzv7m%vR@=e|__rynbE9EA=!Bzz`m8&P692=5aJ3|@Iq<-Q^w-H3Aokgi4 z90(?>yoKfLr2l^q9NfGeYR;zTvgO2Aqj}xcjNK8I?nqg8704QCrSS@!|9Eh7Lb-cdx*`EK?(WWR zvZA844wlwPe6xkygPmNhal?1V4#KUhPXHx5>^vZ_w-Hx5WgcUjrzc&Hmdtl*|m z^nYM9|FI$~`vhrgZQ~9QlM#Pp>H@`M?)=Nne_@Pl5$-nsK)#pWC&NQn{sqyobwIj% zJ0k)AIV(|TM{A`jnC}0uqhp9i0mL4POUOt|K9G^-_n@G`LumhH$H3MH34o}mBw`eI z@I$bF4MFua0VvzoNc^jdIykz&cCr>lS$f#QogCdn|9iY pDJ?1X;DNZLB~naGQp!pOjMo6;=Lg|pj>dZcXsYR|maA9<{RdB^((3>K literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/ms-icon-310x310.png b/apps/learn-german/public/icons/ms-icon-310x310.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1205297bfba075bf2db559ba115a06c311eaa4 GIT binary patch literal 16946 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 DY^RC1 literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/icons/ms-icon-70x70.png b/apps/learn-german/public/icons/ms-icon-70x70.png new file mode 100644 index 0000000000000000000000000000000000000000..0eb1ae6e8f61896193d77c4c0d9eb9d375811dc9 GIT binary patch literal 2962 zcmai$2T)Vl8pkg^fb=Rz?;?;;lOO_t&^rWFEF>g^2!Q|rB)Ch7OBbbA=|#~+P(fC@ zNLU0BL_nnpE`m~`2mz$M@ZOtQXJ_8LxpVF}_xyj~ciNpZ|6~^@Yd#(+9smINY;7#v zn9=H}fjF7(5bgQv%)pK}cQglp#+$r*Xb$GLyswR$BLGlT0U(yC|6q2-E&)I|7y!Qb z002B603=AoPhC$l1x}2;wIy(P^pv&NW-)uX$hMA1t|gGLh^ETylhNA%zzw&xH21jr zezhJrkpN zOH?H8Z;961au*xAPzQQd_J0MPz+rGm(Dq8|+(2H)=7yl8ob#Qkmeh<`jBbXzt9gHo<5VL-WCw-9 z{E&EngMKA@-*gY?{t)bymYGYF zE1{(DJ?OCWa~*kn$SNzq;FVZ{U(3Iz<~$!5+-D3n8(u~xAVxKDU>_TMCE{nd(32B>nt^xeBvHKZ_j@{+B30pLEC9{vM*-l z*P>ekVj_?PuDKf=la99KlnL#%s0A_RYQFBo+2=uBz3qL8TFvgYpq2}01)i*tYOGaY zr5xsk5UKU}6=Lh>po*5&J7`3 zYb0lG4(f#ihWD@6)?iON4ok`=WpWi_0Wd&j{k@Ch!-?UV(q%T<#=QFoCM9`BY~w1a z*u?%-vPjj!r_kLOIqIBjoLR~7t@QDltxtZpc%?zS!b)+tt*IXB?w0Sl=3~PNPNQ6M zq`if_ry{Y4`q$=HvyS#?lzXf zs2ZB7&kCikSKLCKPYEF13gF{Q7E_8FTn|0?G472O7iS%g+6Es|4x+A6sc4PqE``V9 z0xvgJjm$XeS=!Cc+^Q@U*x7$uRMda2DWy7cCfP;w6cS0^-w>H8FOTXkhhF=b6bZ7nskJrHF2$HC);Gclzu^09*PDb})R zTl8F80=3w~lo-o)Y^9m=iE4-8RKuPfGQ`Gqx0||QWWaL% z!MWyN_uF2SJd#vkSCKZ#EX;_jtGjUes$kxjlx!c-%$~K%VK`o#w|pREYcu3qs*VfQ z+-=a$&M@ehTKD`(T6Tf0dAI>E(fYJyeL8Z^?gmTk@O--E+you=0-H99^6Deu)c}sM zu_`RS&nu1Rl!o@FW-(1*$s{CR$Rvr42w$DxHBer18J;ncp~$d<$EO{ge=z}I3kzpo zya^v z^ju^stUbn5=JGFMlYdH>ZBhvDTP3_M%f(z{oQrp#-R8-sQ&+^whQeKi*+e-KV&cAi zl&{fu8K(Emytf;TriXm~{)+p?P3w!FicMQ=6_`H;=HXe=r8ZDq3Yh!AGoUOq3~UG+ zgbDLJGo8IYZsCs6Kq^FUUO@yIReEY-(zOg1iSh_L+I`Q}Ef2I_XQ2uYN8svkcqlCj z)%)%}{9Z|jh~BJpF9!>YPO&k2(C!LFtE%M5o@^V#m$XA#kzO7bt2CQM`fr2w8h6r7 zA8mUJa-8UVHWJwtrE>BCh|$TBr3$^0^N#ixyHWd`>pi2ud0>9HK`;Hx2(B{_*ID|DF3utH*P|4((*cQqfjMc zHY!fh;ZKfJ+*MMFAKXLux*EhdjeV*lSY=laEosh>Nvhg0#IgaedHhKg-70#!eM8#a z=Yi_|w-{!PK9JuWNC7km_y4gV|8XZ>F)TbB87psvoSBvjP$47FlCfwq4(=O@V+KGM ztgEjDhH62e9uQr)o*`ThstE?e!QiM*PmX-u-wDKEEWt18e{yi%lQV`zsp{LV7>Nt8ZDF9-ms|SPX8^EAy5j^}%MBt}7?gR=B03#6D6=znM zlIKqn%FPz=BLw1@OV=R=kpqMAI)3N~f^Tq8n9ko@u44#B`#}w`IGCX?1_!}F(NKMe kfq||*8V7;s8)9JE%nWVj{J@HmY0MD-Tcnd^J;EpcU$Y@Ax&QzG literal 0 HcmV?d00001 diff --git a/apps/learn-german/public/manifest.json b/apps/learn-german/public/manifest.json new file mode 100644 index 0000000..a78edf1 --- /dev/null +++ b/apps/learn-german/public/manifest.json @@ -0,0 +1,51 @@ +{ + "name": "Learn German App", + "short_name": "LGA", + "icons": [ + { + "src": "img/android-icon-36x36.png", + "sizes": "36x36", + "type": "image/png", + "density": "0.75" + }, + { + "src": "img/android-icon-48x48.png", + "sizes": "48x48", + "type": "image/png", + "density": "1.0" + }, + { + "src": "img/android-icon-72x72.png", + "sizes": "72x72", + "type": "image/png", + "density": "1.5" + }, + { + "src": "img/android-icon-96x96.png", + "sizes": "96x96", + "type": "image/png", + "density": "2.0" + }, + { + "src": "img/android-icon-144x144.png", + "sizes": "144x144", + "type": "image/png", + "density": "3.0" + }, + { + "src": "img/android-icon-192x192.png", + "sizes": "192x192", + "type": "image/png", + "density": "4.0" + } + ], + "start_url": "/learn-german/index.html", + "scope": ".", + "display": "standalone", + "orientation": "portrait", + "background_color": "#fff", + "theme_color": "#131313", + "description": "Learn German!", + "dir": "ltr", + "lang": "en-US" +} diff --git a/apps/fe-sys-design/scripts/README.md b/apps/learn-german/scripts/README.md similarity index 100% rename from apps/fe-sys-design/scripts/README.md rename to apps/learn-german/scripts/README.md diff --git a/apps/fe-sys-design/scripts/sw.js b/apps/learn-german/scripts/sw.js similarity index 100% rename from apps/fe-sys-design/scripts/sw.js rename to apps/learn-german/scripts/sw.js diff --git a/apps/fe-sys-design/scripts/sw_base.js b/apps/learn-german/scripts/sw_base.js similarity index 100% rename from apps/fe-sys-design/scripts/sw_base.js rename to apps/learn-german/scripts/sw_base.js diff --git a/apps/learn-german/src/app/index.ts b/apps/learn-german/src/app/index.ts new file mode 100644 index 0000000..f16d8bc --- /dev/null +++ b/apps/learn-german/src/app/index.ts @@ -0,0 +1,90 @@ +import { sentences } from './sentences' + +// instantiate utterance once +const utterance = new SpeechSynthesisUtterance() +utterance.lang = 'de' +;(function () { + createSentenceList(sentences) +})() + +function createSentenceList(sentences: string[]) { + const fragment = new DocumentFragment() + sentences.map((sentence) => { + fragment.appendChild(createSentenceRow(sentence)) + }) + const liContainer = document.getElementById('list-container') + liContainer?.appendChild(fragment) +} + +function createSentenceRow(sentence: string) { + const liElem = document.createElement('li') + const sentenceSpan = document.createElement('span') + const sentenceSpanContent = document.createTextNode(sentence) + sentenceSpan.appendChild(sentenceSpanContent) + liElem.appendChild(sentenceSpan) + liElem.appendChild(createSpeakButton(sentence)) + liElem.appendChild(createSpeechTestButton(sentence)) + return liElem +} + +function createSpeakButton(sentence: string) { + const btn = document.createElement('button') + const btnContent = document.createTextNode('Speak') + btn.appendChild(btnContent) + btn.onclick = () => { + speakGerman(sentence) + } + btn.classList.add('text-indigo-800') + return btn +} + +function createSpeechTestButton(sentence: string) { + const btn = document.createElement('button') + const btnContent = document.createTextNode('Test Speech') + btn.appendChild(btnContent) + btn.onclick = () => { + matchSpeech(sentence) + } + return btn +} + +function speakGerman(sentence: string) { + utterance.text = sentence + speechSynthesis.speak(utterance) +} + +function sayGenau() { + speakGerman('Genau') +} + +function sayNein() { + speakGerman('Nein') +} + +function matchSpeech(targetSentence: string) { + const SpeechRecognition = + window.SpeechRecognition || window.webkitSpeechRecognition + const recognition = new SpeechRecognition() + recognition.continuous = false + recognition.lang = 'de' + recognition.start() + + recognition.onresult = (event) => { + const recongnisedOutcome = event.results[0][0].transcript + + console.log(`checking the recognised outcome: ${recongnisedOutcome}`) + console.log( + `checking target sentence: ${targetSentence.toLowerCase().replace(/[^a-z0-9\säöüß]/g, '')}` + ) + + if ( + recongnisedOutcome.toLowerCase() === + targetSentence.toLowerCase().replace(/[^a-z0-9\säöüß]/g, '') + ) { + sayGenau() + } else { + sayNein() + } + recognition.stop() + } +} diff --git a/apps/learn-german/src/app/sentences.ts b/apps/learn-german/src/app/sentences.ts new file mode 100644 index 0000000..55974d1 --- /dev/null +++ b/apps/learn-german/src/app/sentences.ts @@ -0,0 +1,6 @@ +export const sentences = [ + 'Wir Suchen Dich.', + 'Döner macht schöner.', + 'Geben Sie mir bitte einen Kaffee.', + 'Was darf es sein?', +] diff --git a/apps/learn-german/src/assets/.gitkeep b/apps/learn-german/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/learn-german/src/index.css b/apps/learn-german/src/index.css new file mode 100644 index 0000000..17df0e7 --- /dev/null +++ b/apps/learn-german/src/index.css @@ -0,0 +1,17 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/apps/learn-german/src/main.ts b/apps/learn-german/src/main.ts new file mode 100644 index 0000000..c65d943 --- /dev/null +++ b/apps/learn-german/src/main.ts @@ -0,0 +1,2 @@ +import './index.css' +import './app' diff --git a/apps/learn-german/tailwind.config.js b/apps/learn-german/tailwind.config.js new file mode 100644 index 0000000..b64c71c --- /dev/null +++ b/apps/learn-german/tailwind.config.js @@ -0,0 +1,23 @@ +const { createGlobPatternsForDependencies } = require('@nx/react/tailwind') +const { join } = require('path') + +const patterns = createGlobPatternsForDependencies(__dirname) +console.log(`Checking the glob pattern... ${JSON.stringify(patterns)}`) + +/** @type {import('tailwindcss').Config} */ +module.exports = { + corePlugins: { + preflight: false, + }, + content: [ + join(__dirname, 'src/**/*.{ts,css,html}'), + join(__dirname, 'index.html'), + ...createGlobPatternsForDependencies(__dirname), + // './src/**/*.{ts,tsx,html}', + // 'index.html', + ], + theme: { + extend: {}, + }, + plugins: [], +} diff --git a/apps/learn-german/tsconfig.app.json b/apps/learn-german/tsconfig.app.json new file mode 100644 index 0000000..3253fc8 --- /dev/null +++ b/apps/learn-german/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": ["node"] + }, + "exclude": ["src/**/*.spec.ts", "src/**/*.test.ts"], + "include": ["src/**/*.ts"] +} diff --git a/apps/learn-german/tsconfig.json b/apps/learn-german/tsconfig.json new file mode 100644 index 0000000..cee4bba --- /dev/null +++ b/apps/learn-german/tsconfig.json @@ -0,0 +1,30 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ESNext", "DOM"], + "moduleResolution": "Node", + "strict": true, + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "noEmit": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "skipLibCheck": true, + "types": ["vite/client"] + }, + "include": ["src"], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/apps/learn-german/tsconfig.spec.json b/apps/learn-german/tsconfig.spec.json new file mode 100644 index 0000000..3c002c2 --- /dev/null +++ b/apps/learn-german/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/apps/learn-german/vite.config.ts b/apps/learn-german/vite.config.ts new file mode 100644 index 0000000..b5041cd --- /dev/null +++ b/apps/learn-german/vite.config.ts @@ -0,0 +1,52 @@ +/// +import { defineConfig } from 'vite' + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin' + +const isGitPageDeploy = Boolean(process.env.GIT_PAGE_DEPLOY) + +export default defineConfig({ + base: isGitPageDeploy ? '/learn-german' : '', + root: __dirname, + cacheDir: '../../node_modules/.vite/apps/learn-german', + + server: { + port: 4200, + host: 'localhost', + }, + + preview: { + port: 4300, + host: 'localhost', + }, + + plugins: [nxViteTsPaths()], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + build: { + outDir: '../../dist/apps/learn-german', + reportCompressedSize: true, + commonjsOptions: { + transformMixedEsModules: true, + }, + }, + + test: { + globals: true, + cache: { + dir: '../../node_modules/.vitest', + }, + environment: 'jsdom', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/apps/learn-german', + provider: 'v8', + }, + }, +})