Refactor code structure for improved readability and maintainability
All checks were successful
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 2m31s
All checks were successful
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 2m31s
This commit is contained in:
5
.vscode/launch.json
vendored
5
.vscode/launch.json
vendored
@@ -11,7 +11,10 @@
|
|||||||
"FLASK_APP": "backend/main.py",
|
"FLASK_APP": "backend/main.py",
|
||||||
"FLASK_DEBUG": "1",
|
"FLASK_DEBUG": "1",
|
||||||
"SECRET_KEY": "dev-secret-key-change-in-production",
|
"SECRET_KEY": "dev-secret-key-change-in-production",
|
||||||
"REFRESH_TOKEN_EXPIRY_DAYS": "90"
|
"REFRESH_TOKEN_EXPIRY_DAYS": "90",
|
||||||
|
"DIGEST_TOKEN_SECRET": "dev-digest-token",
|
||||||
|
"VAPID_PUBLIC_KEY": "BNKkHdq45uLigohSG7c1TwlAo7ETncoRVLQK02LxHgu2P1DgSJD9njRMfbbzUsaTQGllvLBz7An1WiWsNYQhvKE",
|
||||||
|
"VAPID_PRIVATE_KEY": "jNiZJT0UO4H861KmnCt874Fg6p5jDAyYKS4V2MZf8bQ"
|
||||||
},
|
},
|
||||||
"args": [
|
"args": [
|
||||||
"run",
|
"run",
|
||||||
|
|||||||
@@ -1,28 +1,28 @@
|
|||||||
-----BEGIN PRIVATE KEY-----
|
-----BEGIN PRIVATE KEY-----
|
||||||
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
|
||||||
+wapUQ7517R2w2tUnAOidg==
|
1Jroja8Cq6ZE3XsBwW+ge28=
|
||||||
-----END PRIVATE KEY-----
|
-----END PRIVATE KEY-----
|
||||||
|
|||||||
@@ -1,25 +1,26 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
MIIETDCCArSgAwIBAgIQDRI/2ndt0jHqQgdHokXM3jANBgkqhkiG9w0BAQsFADCB
|
MIIEYjCCAsqgAwIBAgIRAKMCeivvVrGdMDcAcGb3ArYwDQYJKoZIhvcNAQELBQAw
|
||||||
hTEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMS0wKwYDVQQLDCRERVNL
|
gZMxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTE0MDIGA1UECwwrcnlh
|
||||||
VE9QLUFVOTBHNkpcUnlhbkBERVNLVE9QLUFVOTBHNkoxNDAyBgNVBAMMK21rY2Vy
|
bkBtYWNib29rLnRhaWxhMTQ2YjMudHMubmV0IChSeWFuIEtlZ2VsKTE7MDkGA1UE
|
||||||
dCBERVNLVE9QLUFVOTBHNkpcUnlhbkBERVNLVE9QLUFVOTBHNkowHhcNMjUxMTE4
|
AwwybWtjZXJ0IHJ5YW5AbWFjYm9vay50YWlsYTE0NmIzLnRzLm5ldCAoUnlhbiBL
|
||||||
MTU1MjA1WhcNMjgwMjE4MTU1MjA1WjBYMScwJQYDVQQKEx5ta2NlcnQgZGV2ZWxv
|
ZWdlbCkwHhcNMjYwNDE2MjAyNzE0WhcNMjgwNzE2MjAyNzE0WjBfMScwJQYDVQQK
|
||||||
cG1lbnQgY2VydGlmaWNhdGUxLTArBgNVBAsMJERFU0tUT1AtQVU5MEc2SlxSeWFu
|
Ex5ta2NlcnQgZGV2ZWxvcG1lbnQgY2VydGlmaWNhdGUxNDAyBgNVBAsMK3J5YW5A
|
||||||
QERFU0tUT1AtQVU5MEc2SjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
bWFjYm9vay50YWlsYTE0NmIzLnRzLm5ldCAoUnlhbiBLZWdlbCkwggEiMA0GCSqG
|
||||||
AK7jB0uQTexMN30x5r4AkWmeyTadHQIGbQyqikm+vQTtf6I6lVF18c6rFDm9Lprm
|
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKVW6l8o9I6Wt1QY2kEBPm4AZpp7P67HPJ
|
||||||
yMyMMMuOk7pBvpmjTOubo352OF8+UhN3Bdeg1bhNRGtZoEXJBcPMe355pUExelGE
|
+xqjOjnXjUrxIOOxqcQkS+LkR/ZxEqGTIkqHAvX+1Q1K5/b5PABm3kM+J9mdMbN6
|
||||||
tgVyke8Vqb4R8zvlcHlSY17jTR4qEALkgwg7G4BaEww3VN8wZWS36lACFMVht5Yy
|
Mo9d0Y2qzqk383l41yDfZUNx0iyv6Viu5OZXPDNTSFwgCIXxzGsIZJPIO0javKFD
|
||||||
8R8LFjQhjfB/Mx/v5kwpzVhDRHyGHCoXYo/kGzDBMUAgA2GimSoaSzM7PllFAhWV
|
+kIeeNdElCpmLF6SDw7NuJgzM7zupBpuwc16dVe/p/fH/iAkELoiFNS/W+awOf8X
|
||||||
kJJh6Ft8YSSWk+guM94XSpklbA/NnLR9P1IkfWwuXxID/4pOjqfcZ4mk90b4yXEy
|
3UckRSKO1PH5z9xONl3bkLK8zqolNamPMaAYlAvwGilk4V78s+0+J3AioCQdpeDj
|
||||||
CLtr2ENczwyXAJW6zfhqlVsCAwEAAaNkMGIwDgYDVR0PAQH/BAQDAgWgMBMGA1Ud
|
YLwOTS52ffvLs6kw5jZa/u3dgFqBZOwqGM9HmSPJJG7RACAtDp55AgMBAAGjZDBi
|
||||||
JQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFMdcsDJbHnPC2tztDztuvlALzXcJ
|
MA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAfBgNVHSMEGDAW
|
||||||
MBoGA1UdEQQTMBGCCWxvY2FsaG9zdIcEwKgBZjANBgkqhkiG9w0BAQsFAAOCAYEA
|
gBSzPmpBCA7e+Z8h2a25FLP+CEFnrDAaBgNVHREEEzARgglsb2NhbGhvc3SHBMCo
|
||||||
nhDUKSW8Ti6h39cth+JeX3isU/cBO1l3y3Ptflb3i02na3x2b39hVstm1xCuxF43
|
AWYwDQYJKoZIhvcNAQELBQADggGBAHjDyJQaET4fuLp/PGlyOqeRqr2YWFGho9/r
|
||||||
KNLF+Mfe1OegifDHCxkEQGM6HvppBjbUchZlTcr0q1xusU6v/moGxYnEP1BewvRv
|
sPdJ8bw785vkSmvMFBl3qK9kj0X/GkRqJ1tXit7pMVetoXRBSbVe07kX0G+jm5bT
|
||||||
B5eNHSADROdRNSbtuK8DeVPWG3uXzyqmQPTlSmtNYAXuigsmPEodiFLBxIoE1qWd
|
En+TEzp0cSc0NqyRJAR7PuLQtcZA4XQWductqwszcggrIUdozzWNQ0gjuQ0fWD6A
|
||||||
Y4EGWK9b7Vka7IjIH6KnegJe5n9aI102Hu2rZwP8WIlDhqPzpDprrpj0n8t38Q5z
|
kkH1uyqWb4zVWnwwuoi6Z0Gmbim3ldW/EilhtYd7DzA4ztYaDmt4D8WKZo5LjH5y
|
||||||
FK+Qae3E1i5vSAZoX0buUngnpXAbGDQl/Sq/PIIFeljlOWtI8JDhUb2nZHWnPoyA
|
OgoiHuWAqP85R7wsscNWUgei1ltERsGLlvz5f/WGqkeVYzC3EwKnubh4fo2NKqc0
|
||||||
NuiGgYsOFfU6eH6gFw/sTphjrABIQ9JbQoSjeUA3vcol1De7mqCPJ6oC4lbeMdr1
|
UmHRnUrX1o5ZUPemnp0vnE4NPYFDZf9iyn8WkG9qC+/IbPudsia3I8aZQ5RqAttj
|
||||||
xt1bD6UiIhjx219ikAlnNSfm9eZsqBepPLi029wBDP/De1RdGRcLRwtNBxNWkYcc
|
rWJkzqsJE6UAb3L1XCbYzxUz1vtzDZpH9dq/UG+iDckxJvlSl+DMa60bd2qH2ui3
|
||||||
t/7BWjjDd0/67meIEK85kYatfK1uUrVOjeU097LjwHjvsfsqKZr3Kok+kAzFalvF
|
VusOFBKS5uUam6JFsV2/fLzHJUo9CdVl/bscK8byN5IxWOpOc4SiDpKybVpNmHwD
|
||||||
|
WuBkDmpNzU0HOUSxZNRIIVb5/dA7YA==
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|||||||
BIN
frontend/vue-app/public/icons/icon-192x192.png
Normal file
BIN
frontend/vue-app/public/icons/icon-192x192.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
BIN
frontend/vue-app/public/icons/icon-512x512.png
Normal file
BIN
frontend/vue-app/public/icons/icon-512x512.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 188 KiB |
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"id": "/",
|
||||||
"name": "Reward App",
|
"name": "Reward App",
|
||||||
"short_name": "Rewards",
|
"short_name": "Rewards",
|
||||||
"start_url": "/",
|
"start_url": "/",
|
||||||
@@ -9,8 +10,20 @@
|
|||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "/favicon.ico",
|
"src": "/favicon.ico",
|
||||||
"sizes": "48x48",
|
"sizes": "32x32",
|
||||||
"type": "image/x-icon"
|
"type": "image/x-icon"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/icons/icon-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png",
|
||||||
|
"purpose": "any"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/icons/icon-512x512.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png",
|
||||||
|
"purpose": "any"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
/* Service Worker for Reward App push notifications */
|
/* Service Worker for Reward App push notifications */
|
||||||
|
|
||||||
|
/* Activate immediately — no waiting for old tabs to close */
|
||||||
|
self.addEventListener('install', function (event) {
|
||||||
|
event.waitUntil(self.skipWaiting())
|
||||||
|
})
|
||||||
|
|
||||||
|
self.addEventListener('activate', function (event) {
|
||||||
|
event.waitUntil(self.clients.claim())
|
||||||
|
})
|
||||||
|
|
||||||
self.addEventListener('push', function (event) {
|
self.addEventListener('push', function (event) {
|
||||||
if (!event.data) return
|
if (!event.data) return
|
||||||
|
|
||||||
@@ -13,6 +22,7 @@ self.addEventListener('push', function (event) {
|
|||||||
const title = payload.title || 'Reward App'
|
const title = payload.title || 'Reward App'
|
||||||
const options = {
|
const options = {
|
||||||
body: payload.body || '',
|
body: payload.body || '',
|
||||||
|
icon: '/icons/icon-192x192.png',
|
||||||
data: payload,
|
data: payload,
|
||||||
actions: [
|
actions: [
|
||||||
{ action: 'approve', title: 'Approve' },
|
{ action: 'approve', title: 'Approve' },
|
||||||
|
|||||||
Reference in New Issue
Block a user