Compare commits

..

378 Commits

Author SHA1 Message Date
janishutz 01f2752fcb Finish version bump 2026-01-22 13:25:04 +01:00
Janis Hutz 89d7ca4379 Merge pull request #55 from janishutz/dependabot/npm_and_yarn/src/webapp/main/multi-a3036e3255
Bump tar and pdfjs-dist in /src/webapp/main
2026-01-22 12:23:11 +00:00
dependabot[bot] aad3f47e41 Bump tar and pdfjs-dist in /src/webapp/main
Removes [tar](https://github.com/isaacs/node-tar). It's no longer used after updating ancestor dependency [pdfjs-dist](https://github.com/mozilla/pdf.js). These dependencies need to be updated together.


Removes `tar`

Updates `pdfjs-dist` from 4.2.67 to 4.10.38
- [Release notes](https://github.com/mozilla/pdf.js/releases)
- [Commits](https://github.com/mozilla/pdf.js/compare/v4.2.67...v4.10.38)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 
  dependency-type: indirect
- dependency-name: pdfjs-dist
  dependency-version: 4.10.38
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-22 12:23:05 +00:00
Janis Hutz ad2a86c3ab Merge pull request #54 from janishutz/dependabot/npm_and_yarn/src/webapp/setup/lodash-4.17.23
Bump lodash from 4.17.21 to 4.17.23 in /src/webapp/setup
2026-01-22 12:22:55 +00:00
Janis Hutz fa104cc100 Merge pull request #53 from janishutz/dependabot/npm_and_yarn/src/server/lodash-es-4.17.23
Bump lodash-es from 4.17.21 to 4.17.23 in /src/server
2026-01-22 12:22:43 +00:00
dependabot[bot] 04db517ff1 Bump lodash from 4.17.21 to 4.17.23 in /src/webapp/setup
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-22 12:22:14 +00:00
dependabot[bot] 20f841367b Bump lodash-es from 4.17.21 to 4.17.23 in /src/server
Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash-es
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-22 12:22:11 +00:00
Janis Hutz 707091be2b Merge pull request #52 from janishutz/dependabot/npm_and_yarn/src/webapp/main/lodash-es-4.17.23
Bump lodash-es from 4.17.21 to 4.17.23 in /src/webapp/main
2026-01-22 12:20:57 +00:00
Janis Hutz e15ed09735 Merge pull request #51 from janishutz/dependabot/npm_and_yarn/src/server/multi-516376c24b
Bump tar and bcrypt in /src/server
2026-01-22 12:20:40 +00:00
Janis Hutz e67fac0436 Merge pull request #50 from janishutz/dependabot/npm_and_yarn/src/server/multi-6d05d0e569
Bump qs, body-parser and express in /src/server
2026-01-22 12:20:28 +00:00
Janis Hutz 28ebd7da97 Merge pull request #49 from janishutz/dependabot/npm_and_yarn/src/server/nodemailer-7.0.11
Bump nodemailer from 7.0.10 to 7.0.11 in /src/server
2026-01-22 12:20:11 +00:00
janishutz f7ea972264 Prepare version bump 2026-01-22 13:19:31 +01:00
janishutz 28acb2070c [Android] Update app 2026-01-22 13:08:38 +01:00
dependabot[bot] 000339add6 Bump lodash-es from 4.17.21 to 4.17.23 in /src/webapp/main
Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash-es
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-21 23:39:30 +00:00
dependabot[bot] 2895709c73 Bump tar and bcrypt in /src/server
Removes [tar](https://github.com/isaacs/node-tar). It's no longer used after updating ancestor dependency [bcrypt](https://github.com/kelektiv/node.bcrypt.js). These dependencies need to be updated together.


Removes `tar`

Updates `bcrypt` from 5.1.1 to 6.0.0
- [Release notes](https://github.com/kelektiv/node.bcrypt.js/releases)
- [Changelog](https://github.com/kelektiv/node.bcrypt.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kelektiv/node.bcrypt.js/compare/v5.1.1...v6.0.0)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 
  dependency-type: indirect
- dependency-name: bcrypt
  dependency-version: 6.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-16 21:36:26 +00:00
dependabot[bot] cda7769398 Bump qs, body-parser and express in /src/server
Bumps [qs](https://github.com/ljharb/qs), [body-parser](https://github.com/expressjs/body-parser) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `qs` from 6.14.0 to 6.14.1
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.14.0...v6.14.1)

Updates `body-parser` from 1.20.3 to 1.20.4
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/1.20.3...1.20.4)

Updates `express` from 4.21.2 to 4.22.1
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/v4.22.1/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v4.22.1)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.1
  dependency-type: direct:production
- dependency-name: body-parser
  dependency-version: 1.20.4
  dependency-type: direct:production
- dependency-name: express
  dependency-version: 4.22.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-01 13:53:43 +00:00
dependabot[bot] 19ecd7b1db Bump nodemailer from 7.0.10 to 7.0.11 in /src/server
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 7.0.10 to 7.0.11.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v7.0.10...v7.0.11)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-version: 7.0.11
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-02 03:47:08 +00:00
janishutz 0219e718dc Finish version bump & security fixes 2025-11-19 15:25:18 +01:00
janishutz 02a8325117 Finish version bump & security fixes 2025-09-28 09:06:51 +02:00
jh04 19782f0bc3 Finish version bump 2025-07-22 10:22:42 +02:00
jh04 0460c25e75 Version bump 2025-07-22 10:21:48 +02:00
jh04 b04bb8cd98 Update deps 2025-07-22 10:20:24 +02:00
Janis Hutz 503b376e1c Merge pull request #41 from janishutz/dependabot/npm_and_yarn/src/server/form-data-4.0.4
Bump form-data from 4.0.2 to 4.0.4 in /src/server
2025-07-22 08:17:29 +00:00
Janis Hutz 1d1b6376de Merge pull request #40 from janishutz/dependabot/npm_and_yarn/src/server/multi-0acb442647
Bump on-headers and express-session in /src/server
2025-07-22 08:17:20 +00:00
Janis Hutz 7a9ee5f34d Merge pull request #39 from janishutz/dependabot/npm_and_yarn/src/server/multer-2.0.2
Bump multer from 2.0.1 to 2.0.2 in /src/server
2025-07-22 08:17:09 +00:00
dependabot[bot] c86fd9283f Bump form-data from 4.0.2 to 4.0.4 in /src/server
---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-22 05:08:45 +00:00
dependabot[bot] be89d84dfd Bump on-headers and express-session in /src/server
---
updated-dependencies:
- dependency-name: on-headers
  dependency-version: 1.1.0
  dependency-type: indirect
- dependency-name: express-session
  dependency-version: 1.18.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-18 05:32:23 +00:00
dependabot[bot] 80b2210b57 Bump multer from 2.0.1 to 2.0.2 in /src/server
Bumps [multer](https://github.com/expressjs/multer) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/expressjs/multer/releases)
- [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/expressjs/multer/compare/v2.0.1...v2.0.2)

---
updated-dependencies:
- dependency-name: multer
  dependency-version: 2.0.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-18 01:21:08 +00:00
jh04 208c657bf4 V1.1.12 Version Bump (high severity security fix for express) 2025-06-05 10:16:03 +02:00
Janis Hutz 4bac130bb4 Merge pull request #38 from janishutz/dependabot/npm_and_yarn/src/server/multer-2.0.1 2025-06-05 05:51:26 +00:00
dependabot[bot] 218fa641b5 Bump multer from 2.0.0 to 2.0.1 in /src/server
Bumps [multer](https://github.com/expressjs/multer) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/expressjs/multer/releases)
- [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/expressjs/multer/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: multer
  dependency-version: 2.0.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-05 05:09:29 +00:00
Janis Hutz 7426d6ac31 Merge pull request #37 from janishutz/dependabot/npm_and_yarn/src/server/multer-2.0.0
Bump multer from 1.4.5-lts.2 to 2.0.0 in /src/server
2025-06-04 07:02:00 +00:00
dependabot[bot] 706b3b7cc4 Bump multer from 1.4.5-lts.2 to 2.0.0 in /src/server
Bumps [multer](https://github.com/expressjs/multer) from 1.4.5-lts.2 to 2.0.0.
- [Release notes](https://github.com/expressjs/multer/releases)
- [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/expressjs/multer/compare/v1.4.5-lts.2...v2.0.0)

---
updated-dependencies:
- dependency-name: multer
  dependency-version: 2.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-04 06:58:37 +00:00
jh04 f4cb2cd4e7 V1.1.11 Version bump (security fix) 2025-06-04 08:57:41 +02:00
jh04 b4a7e3a6f0 V1.1.10 Version bump done 2025-04-19 11:41:02 +02:00
jh04 02c297a310 Fully fix npm issues 2025-04-19 11:38:53 +02:00
jh04 50978d248c Address npm issues 2025-04-19 10:17:58 +02:00
jh04 a51997ac0c V1.1.9 Version bump, fix npm issues 2025-04-18 13:54:14 +02:00
jh04 c82c0c70ef Update Android app 2025-04-18 13:36:48 +02:00
janishutz ef90b9f089 Finish version bump 2025-03-18 11:22:43 +01:00
janishutz e1980c21d3 Address security vulnerabilities in dependencies 2025-03-18 11:20:46 +01:00
janishutz 27cf7b04d8 Move favicons 2025-02-24 11:48:02 +01:00
Janis Hutz 2c7a476321 Update SECURITY.md 2025-02-18 11:47:59 +00:00
janishutz 57feeb0f50 Address security vulnerabilities in dependencies, Version bump 2025-02-10 07:23:20 +01:00
janishutz b71f8e42f8 version bump 2024-10-11 14:16:11 +02:00
Janis Hutz c99fe308ec Merge pull request #25 from janishutz/dependabot/npm_and_yarn/src/server/multi-b9178efa7f 2024-10-11 08:17:17 +00:00
dependabot[bot] 8aba1aff3c Bump cookie, cookie-parser, express and express-session in /src/server
Bumps [cookie](https://github.com/jshttp/cookie) to 0.7.2 and updates ancestor dependencies [cookie](https://github.com/jshttp/cookie), [cookie-parser](https://github.com/expressjs/cookie-parser), [express](https://github.com/expressjs/express) and [express-session](https://github.com/expressjs/session). These dependencies need to be updated together.


Updates `cookie` from 0.4.1 to 0.7.2
- [Release notes](https://github.com/jshttp/cookie/releases)
- [Commits](https://github.com/jshttp/cookie/compare/v0.4.1...v0.7.2)

Updates `cookie-parser` from 1.4.6 to 1.4.7
- [Release notes](https://github.com/expressjs/cookie-parser/releases)
- [Changelog](https://github.com/expressjs/cookie-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/cookie-parser/compare/1.4.6...1.4.7)

Updates `express` from 4.21.0 to 4.21.1
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.1/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.0...4.21.1)

Updates `express-session` from 1.17.3 to 1.18.1
- [Release notes](https://github.com/expressjs/session/releases)
- [Changelog](https://github.com/expressjs/session/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/session/compare/v1.17.3...v1.18.1)

---
updated-dependencies:
- dependency-name: cookie
  dependency-type: indirect
- dependency-name: cookie-parser
  dependency-type: direct:production
- dependency-name: express
  dependency-type: direct:production
- dependency-name: express-session
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-10 13:45:26 +00:00
janishutz 2258aff2b7 complete version update 2024-10-02 18:39:56 +02:00
janishutz d0589dfbd7 address security vulnerability in rollup.js - Update coming soon 2024-10-02 14:49:38 +02:00
janishutz 76bbdff176 fix readme 2024-09-20 09:36:18 +02:00
janishutz 950431aaea update README.md 2024-09-20 09:34:37 +02:00
janishutz 340728c838 address security vulnerabilities in dependencies 2024-09-20 09:31:34 +02:00
janishutz 7ebd61f612 bump to V1.1.3 2024-08-27 15:48:58 +02:00
janishutz c074d6c025 prepare for a simpler installation method. Still missing config adjustments (i.e. adjusting how the config is loaded) 2024-08-26 11:45:15 +02:00
janishutz a68e42c4bb Revert "Restructuring for new way of installing libreevent"
This reverts commit 688b0616cc.
2024-08-26 11:21:52 +02:00
janishutz 688b0616cc Restructuring for new way of installing libreevent 2024-08-26 11:16:28 +02:00
janishutz 4d0b8eb1cb perform version bump && address vulnerability in dependency 2024-08-20 14:22:11 +02:00
janishutz 80ddf3fac9 update Android App to new Target API (mostly done) 2024-08-20 14:18:49 +02:00
janishutz f281289435 finish version bump 2024-08-01 08:23:02 +02:00
janishutz 0bc9a4e83c bump to v1.0.6, addresses vulnerability in dependency 2024-08-01 08:22:16 +02:00
janishutz 0175e9120d update docs 2024-06-05 14:06:17 +02:00
Janis Hutz 5cff69fac7 Merge pull request #21 from simplePCBuilding/simplePCBuilding-patch-1
Update README.md
2024-06-05 12:00:26 +00:00
Janis Hutz c04c0dfd04 Update README.md 2024-06-05 12:00:07 +00:00
Janis Hutz a3b72966c7 Update README.md 2024-06-05 11:59:46 +00:00
Janis Hutz 36ccf29eac Update README.md 2024-06-05 11:59:15 +00:00
janishutz c742d037a6 start updating doc style 2024-05-24 09:56:26 +02:00
janishutz 8e127a1cb5 update docs 2024-05-24 09:50:23 +02:00
janis 284f96a42d update to latest version 2024-05-08 08:59:40 +02:00
Janis Hutz c9fd44c337 Merge pull request #19 from simplePCBuilding/dependabot/npm_and_yarn/src/webapp/main/multi-aecc66a090 2024-05-08 06:45:11 +00:00
dependabot[bot] 29ce117898 Bump pdfjs-dist and @pdfme/ui in /src/webapp/main
Bumps [pdfjs-dist](https://github.com/mozilla/pdfjs-dist) to 4.2.67 and updates ancestor dependency [@pdfme/ui](https://github.com/pdfme/pdfme). These dependencies need to be updated together.


Updates `pdfjs-dist` from 2.12.313 to 4.2.67
- [Commits](https://github.com/mozilla/pdfjs-dist/commits)

Updates `@pdfme/ui` from 1.2.3 to 3.2.1
- [Release notes](https://github.com/pdfme/pdfme/releases)
- [Changelog](https://github.com/pdfme/pdfme/blob/main/RELEASE.md)
- [Commits](https://github.com/pdfme/pdfme/compare/1.2.3...3.2.1)

---
updated-dependencies:
- dependency-name: pdfjs-dist
  dependency-type: indirect
- dependency-name: "@pdfme/ui"
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-07 10:46:46 +00:00
Janis Hutz efee0b4a71 Merge pull request #18 from simplePCBuilding/dependabot/npm_and_yarn/src/server/tar-6.2.1 2024-04-11 08:20:48 +00:00
dependabot[bot] f2557e5bf6 Bump tar from 6.1.13 to 6.2.1 in /src/server
Bumps [tar](https://github.com/isaacs/node-tar) from 6.1.13 to 6.2.1.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v6.1.13...v6.2.1)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-11 07:46:59 +00:00
Janis Hutz 74263ed71a Merge pull request #17 from simplePCBuilding/dependabot/npm_and_yarn/src/webapp/setup/vite-4.5.3 2024-04-04 05:35:38 +00:00
Janis Hutz cbbb7d200c Merge pull request #16 from simplePCBuilding/dependabot/npm_and_yarn/src/webapp/main/vite-2.9.18 2024-04-04 05:35:33 +00:00
dependabot[bot] 4f7d945ad0 Bump vite from 4.5.2 to 4.5.3 in /src/webapp/setup
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.5.2 to 4.5.3.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.5.3/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.5.3/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-04 01:36:42 +00:00
dependabot[bot] 95af5357d5 Bump vite from 2.9.17 to 2.9.18 in /src/webapp/main
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 2.9.17 to 2.9.18.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v2.9.18/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v2.9.18/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-03 17:52:46 +00:00
janishutz 0bafd9a96c update version to 1.0.4 2024-04-02 19:14:53 +02:00
Janis Hutz f58a597b90 Merge pull request #14 from simplePCBuilding/dependabot/npm_and_yarn/src/server/express-4.19.2 2024-04-02 14:12:18 +00:00
dependabot[bot] 60b260c3e2 Bump express from 4.18.2 to 4.19.2 in /src/server
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-29 02:35:57 +00:00
Janis Hutz 203fc1fdad Merge pull request #13 from simplePCBuilding/dependabot/npm_and_yarn/src/server/follow-redirects-1.15.6 2024-03-19 09:07:44 +01:00
dependabot[bot] 86fe6b27f6 Bump follow-redirects from 1.15.5 to 1.15.6 in /src/server
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-17 01:14:54 +00:00
janis 47b1bae815 update package.json for new release 2024-03-07 16:17:17 +01:00
janis 5a5407920b update to V1.0.3 2024-03-07 16:13:41 +01:00
janishutz 45a38cb36b update nodemailer because security 2024-03-05 17:01:41 +01:00
Janis Hutz 961fa5fc80 Update README.md 2024-01-29 19:31:51 +01:00
Janis Hutz 09633132e0 Update README.md 2024-01-29 19:30:13 +01:00
janishutz c3e1411bfe add version update stuff 2024-01-20 09:05:27 +01:00
Janis Hutz 35c4e89c9e Merge pull request #10 from simplePCBuilding/dependabot/npm_and_yarn/src/webapp/setup/vite-4.5.2 2024-01-20 08:56:28 +01:00
Janis Hutz 359fca424c Merge pull request #9 from simplePCBuilding/dependabot/npm_and_yarn/src/webapp/main/vite-2.9.17 2024-01-20 08:56:21 +01:00
dependabot[bot] 6846c187c3 Bump vite from 4.4.12 to 4.5.2 in /src/webapp/setup
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.4.12 to 4.5.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.5.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.5.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-20 02:23:47 +00:00
dependabot[bot] 0b0ddda4b9 Bump vite from 2.9.16 to 2.9.17 in /src/webapp/main
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 2.9.16 to 2.9.17.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v2.9.17/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v2.9.17/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-19 22:55:39 +00:00
Janis Hutz 0f5c652bd4 Merge pull request #8 from simplePCBuilding/dependabot/npm_and_yarn/src/server/follow-redirects-1.15.4 2024-01-12 11:01:02 +01:00
dependabot[bot] 7b31b209e7 Bump follow-redirects from 1.15.2 to 1.15.4 in /src/server
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1.15.4.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.2...v1.15.4)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-10 22:33:09 +00:00
Janis Hutz 7243592d03 Merge pull request #7 from simplePCBuilding/dependabot/npm_and_yarn/src/webapp/setup/vite-4.4.12 2023-12-08 09:28:07 +00:00
dependabot[bot] 92d6065e01 Bump vite from 4.4.4 to 4.4.12 in /src/webapp/setup
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.4.4 to 4.4.12.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v4.4.12/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.4.12/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-06 00:12:37 +00:00
janishutz 3916aefe6b add launch trailer thumbnail 2023-11-29 21:00:19 +01:00
Janis Hutz 3ec9788163 Merge pull request #6 from simplePCBuilding/dependabot/npm_and_yarn/src/server/axios-1.6.0
Bump axios from 1.4.0 to 1.6.0 in /src/server
2023-11-12 12:34:32 +00:00
janishutz ddfb2ed5b9 small change 2023-11-12 12:33:40 +01:00
janishutz 6a181b0139 finish version bump 2023-11-12 12:27:52 +01:00
janishutz bf24533cdd bump version number 2023-11-12 12:12:20 +01:00
janishutz 0d8f3d3e0a small setup patches (spelling mistakes) 2023-11-12 12:09:27 +01:00
janishutz f6e4d3f8e3 add missing file 2023-11-12 11:07:58 +01:00
dependabot[bot] 4e46f2dc3a Bump axios from 1.4.0 to 1.6.0 in /src/server
Bumps [axios](https://github.com/axios/axios) from 1.4.0 to 1.6.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.4.0...v1.6.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-11 14:28:52 +00:00
Janis Hutz acae6ba9c0 Update README.md 2023-11-06 09:59:04 +01:00
Janis Hutz 1aafb0550a Merge pull request #4 from simplePCBuilding/dependabot/npm_and_yarn/src/webapp/setup/postcss-8.4.31
Bump postcss from 8.4.26 to 8.4.31 in /src/webapp/setup
2023-11-06 09:57:10 +01:00
Janis Hutz 811ab2727b Merge pull request #5 from simplePCBuilding/dependabot/npm_and_yarn/src/server/crypto-js-4.2.0
Bump crypto-js from 4.1.1 to 4.2.0 in /src/server
2023-11-06 09:54:48 +01:00
dependabot[bot] 7d61d084f1 Bump crypto-js from 4.1.1 to 4.2.0 in /src/server
Bumps [crypto-js](https://github.com/brix/crypto-js) from 4.1.1 to 4.2.0.
- [Commits](https://github.com/brix/crypto-js/compare/4.1.1...4.2.0)

---
updated-dependencies:
- dependency-name: crypto-js
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-06 08:53:07 +00:00
dependabot[bot] 160eaaa0ce Bump postcss from 8.4.26 to 8.4.31 in /src/webapp/setup
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.26 to 8.4.31.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.26...8.4.31)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-06 08:52:54 +00:00
Janis Hutz 5ee5c3695d Create dependabot.yml 2023-11-06 09:51:24 +01:00
Janis Hutz 77de93f9c3 Merge pull request #3 from simplePCBuilding/simplePCBuilding-patch-1
Create SECURITY.md
2023-11-06 09:48:49 +01:00
Janis Hutz cc4efce26d Create SECURITY.md 2023-11-06 09:48:00 +01:00
Janis Hutz 5fef565e4b Update notes.md 2023-10-31 07:36:07 +00:00
Janis Hutz d683f4a520 Update notes.md 2023-10-31 07:35:41 +00:00
Janis Hutz 7ce024a768 Update notes.md
Add links to apps to add to website
2023-10-27 08:49:05 +00:00
janishutz 0d8915930c fix backdrop of highlighting on website 2023-10-25 19:30:29 +02:00
janishutz d9ca5bd7fc fix small spelling mistake on website 2023-10-25 19:17:34 +02:00
janishutz 66f0042e1c reset databases 2023-10-25 19:07:35 +02:00
janishutz 451222ee5d fix merge error 2023-10-25 15:50:34 +02:00
janishutz d66fdb7c58 add updates to voting plugin 2023-10-25 15:48:58 +02:00
janis ee6d73a4cf remove debug code 2023-10-24 10:33:20 +02:00
janis 8750ea54a9 add sorting to voting plugin 2023-10-24 10:14:06 +02:00
janis 0134e984f0 remove ticket limit hard coded for testing 2023-10-24 10:12:24 +02:00
janishutz 60b53ec435 add class to div that was missing it 2023-10-23 18:12:24 +02:00
janishutz 172659b1c4 fix up voting styling 2023-10-23 18:11:57 +02:00
janishutz ffbb040f22 make voting plugin better 2023-10-23 18:11:18 +02:00
janishutz 13cba558d2 improve voting plugin - more updates incoming! 2023-10-23 14:28:03 +02:00
Janis Hutz 255b5f503c Update README.md
Remove note that project is not complete yet
2023-10-21 16:24:39 +00:00
janishutz f02cb8cbc0 small change to package script 2023-10-21 14:58:28 +02:00
janishutz f41e03ddf8 fix admin panel nav bug 2023-10-20 19:46:13 +02:00
janishutz c6778bd251 potential fix for nav menu bug on webkit 2023-10-20 18:47:39 +02:00
janishutz 095567eb44 slight design change 2023-10-18 15:08:24 +02:00
janishutz 15bf96de3e add config files back for testing 2023-10-16 08:29:36 +02:00
janishutz bdaf04e3b5 add mail notification if processing fails 2023-10-15 15:05:19 +02:00
janishutz a679c5915e make payment processing more robust 2023-10-15 08:02:02 +02:00
janishutz 9b6fd1355e small note in readme 2023-10-14 13:49:00 +02:00
janishutz 98c5f4424e fixed bug in 2fa 2023-10-14 10:56:49 +02:00
janishutz 02dee5ad0d bug fixes 2023-10-14 10:50:50 +02:00
janishutz b31667a77f fix a few bugs 2023-10-14 08:00:44 +02:00
janishutz e61a425ba3 make side cart view look better on mobile 2023-10-13 13:35:50 +02:00
janishutz debe7b8147 add more docs 2023-10-12 15:28:34 +02:00
janishutz 71a6cc6de3 last preparations for release 2023-10-12 15:15:47 +02:00
janishutz 9e07c493dc add favicon 2023-10-12 15:07:59 +02:00
janishutz 6fc1193119 optimize package script 2023-10-12 14:59:18 +02:00
janishutz e1bc7579db make package script clean up 2023-10-12 14:53:04 +02:00
janishutz e09039f019 finished package script 2023-10-12 14:50:27 +02:00
janishutz e517ae4766 add packaging script 2023-10-12 14:21:57 +02:00
janishutz 62c2d57606 remove test routes 2023-10-11 13:33:13 +02:00
janishutz 1633cedec2 reset database, update imports, prepare for build 2023-10-11 11:01:57 +02:00
janishutz e12a8cecee add deployment notes 2023-10-11 09:57:08 +02:00
janishutz 470e3f3e91 fix bug in android app + more pages 2023-10-10 17:54:35 +02:00
janishutz ee8f6291cd improve ticket validation engine 2023-10-10 15:10:45 +02:00
janishutz 13c09f5a8c remove app marketing directory from repo 2023-10-10 15:01:28 +02:00
janishutz 96c09f4977 add iOS app source code 2023-10-10 13:49:59 +02:00
janishutz ea5ea207a9 android app done, fix in ticket selection api 2023-10-10 12:10:12 +02:00
janishutz 5245305daa design updates 2023-10-10 10:35:13 +02:00
janishutz a82d954d77 add automatic favicon generator 2023-10-09 20:11:20 +02:00
janishutz e5daaaee43 add link for case that download failed 2023-10-09 20:04:41 +02:00
janishutz 904a3e0b64 start removing third-party requests 2023-10-09 20:00:54 +02:00
janishutz 459c6fb316 add gpl note 2023-10-09 19:26:22 +02:00
janishutz 839e118129 almost finished android app 2023-10-09 19:17:19 +02:00
janishutz 45562414e4 fix bug in seat selector + more android stuff 2023-10-09 17:49:45 +02:00
janishutz ee5b70fd3c fix small bug in ticket validation engine 2023-10-08 12:00:21 +02:00
janishutz 5644272d5e some more progress on android app 2023-10-08 11:07:25 +02:00
janishutz ff87b8646a some more progress on android app 2023-10-08 11:07:25 +02:00
janishutz 033fdf3483 update colors + bugfixes 2023-10-07 16:55:42 +02:00
janishutz 5d55140681 finish up website 2023-10-07 15:49:50 +02:00
janishutz d5c7a96ad7 updates to website 2023-10-07 15:43:51 +02:00
janishutz e767c1fb3d update website to be almost complete 2023-10-07 15:04:39 +02:00
janishutz 97c68d9b17 add db reset to init 2023-10-07 14:44:39 +02:00
Janis Hutz 6a60c3c93b Update README.md 2023-10-06 19:56:07 +00:00
janis dbb1e7a977 add linting to server folder 2023-10-05 13:57:35 +02:00
janis 5c5462186f do more cleanup of code using eslint 2023-10-05 13:46:53 +02:00
janis 0352bb9051 setup do linter run & fix 2023-10-05 13:31:51 +02:00
janis 46d565fbe7 update logo 2023-10-05 13:30:58 +02:00
janis 7a34e36c4e update notes 2023-10-05 12:06:39 +02:00
janis 63e5ff7afc update project logo (partially) 2023-10-04 21:28:14 +02:00
janishutz a9f1018add more fixes that were suggested by eslint 2023-10-02 06:37:39 +02:00
janishutz 02e4446e78 add notes 2023-10-02 06:36:31 +02:00
janishutz f7e3e2122a some more fixes from eslint 2023-10-01 15:46:52 +02:00
janishutz 5887913f07 run eslint to fix errors 2023-10-01 15:45:02 +02:00
janishutz 3850544ebb some progress on website 2023-10-01 15:40:28 +02:00
janishutz fee562d6e7 imporve readme, add more docs 2023-09-30 17:04:18 +02:00
janishutz ee7b90cd93 lots of progress on docs 2023-09-30 16:56:42 +02:00
janishutz 5a3323a0ea mobile optimisation of seat plan optimized 2023-09-30 14:36:15 +02:00
janishutz e8e0de3ae9 new start page template done 2023-09-30 14:30:49 +02:00
janishutz a84e4197d4 add logo upload 2023-09-30 14:01:34 +02:00
janishutz 9e9c4b0ec6 free seat tracker rewrite 2023-09-30 13:44:07 +02:00
janishutz fa5be769e2 prepare for rewrite of ticket counting 2023-09-30 10:34:11 +02:00
janishutz b5c88e6284 more styling 2023-09-30 09:55:36 +02:00
janishutz bcc32f9b28 mobile optimize popups and notifications 2023-09-29 16:03:32 +02:00
janishutz 7e4b04570e styling, first start page template 2023-09-27 16:08:39 +02:00
janishutz b3bfa36c77 some progress on designing 2023-09-26 17:18:15 +02:00
janis 6abc675d12 update website 2023-09-25 09:58:55 +02:00
janishutz 10da2d6ba0 start mobile optimization 2023-09-24 11:27:58 +02:00
janishutz 167f1c8037 remove todos 2023-09-23 11:15:17 +02:00
janishutz e858daae64 more mobile optimizations 2023-09-23 11:13:47 +02:00
janishutz 009cf4aaf0 android app almost done, start designing 2023-09-23 10:54:55 +02:00
janishutz 0019b25244 fix a possible crash in payrexx integration 2023-09-22 16:49:22 +02:00
janishutz a6c6a4feb0 app api fix 2023-09-22 09:53:41 +02:00
janis d37fcda0db remove obsolete file 2023-09-21 15:18:22 +02:00
janishutz 80b1c2c3ec small file changes 2023-09-20 16:17:07 +02:00
janishutz 203af48961 seat numbering algorithm working 2023-09-20 16:13:00 +02:00
janishutz 32baf07c39 progress on seat numbering algorithm 2023-09-20 15:41:48 +02:00
janis e3f104ccf9 improve email checker 2023-09-19 14:33:29 +02:00
janis d7a293517d add todo 2023-09-19 13:46:21 +02:00
janis 7eaa81ba14 seat numbering algorithm progress 2023-09-19 11:10:11 +02:00
janis 8097ec6368 more docs 2023-09-19 09:24:58 +02:00
janis b76f832068 more docs 2023-09-18 17:11:00 +02:00
janis 163564ae7d begin of seat numbering impl 2023-09-18 16:50:22 +02:00
janis 36ad4c5122 fix notifications 2023-09-18 16:36:30 +02:00
janis a856f227bc various changes to components 2023-09-18 16:14:57 +02:00
janishutz 130831f050 progress on docs, fixes in basic setup 2023-09-18 15:14:09 +02:00
janishutz 9a4d38be31 payrexx integration fixed 2023-09-18 14:07:48 +02:00
janis 5c6f189396 doc updates 2023-09-18 10:11:58 +02:00
janishutz 9c8278df37 some more docs 2023-09-18 09:04:58 +02:00
janishutz 2881d6a4fc fix ascii art 2023-09-18 08:54:19 +02:00
janishutz a9a12d0dc3 move db to a more accessible folder 2023-09-18 08:50:24 +02:00
janishutz fb8c3b1824 small changes 2023-09-17 17:24:59 +02:00
janishutz cd9d6d5027 add more checks 2023-09-17 17:19:40 +02:00
janishutz daba3332e8 various bugfixes 2023-09-17 17:00:00 +02:00
janishutz 6dd11300d3 lots of fixes 2023-09-17 12:25:44 +02:00
janishutz 4d4bb81099 cleanup work and prep for testing 2023-09-16 15:32:34 +02:00
janishutz 94ee69642a newsletter plugin done 2023-09-16 15:11:17 +02:00
janishutz 892772bcb9 prepare newsletter plugin 2023-09-16 11:49:35 +02:00
janishutz 364f1d4c38 android app progress + polls plugin 2023-09-16 11:43:42 +02:00
janishutz 196cc5aed9 polls plugin + android app progress 2023-09-16 11:43:42 +02:00
janishutz 086a9a9654 start work on newsletter plugin 2023-09-13 16:09:11 +02:00
janishutz d7eed47d2c try to fix payrexx integration (unsuccessful) 2023-09-11 19:50:56 +02:00
janis 24e54f7e5c start seat counting 2023-09-11 17:05:58 +02:00
janis 2630a1707d seat counting working 2023-09-11 16:47:18 +02:00
janishutz 9f75aaac99 bug fixes for payrexx integration (still no good) 2023-09-11 15:10:39 +02:00
janishutz 171cba0833 add more install instructions 2023-09-10 19:52:32 +02:00
janishutz ebb55ffe5e try to fix payrexx (not yet working) 2023-09-10 17:46:14 +02:00
janishutz 51476afbb3 add note about beta for test deployment 2023-09-10 10:53:30 +02:00
janishutz c976f97e78 update event data 2023-09-09 14:06:11 +02:00
janishutz 1d089c8d93 add colouring for seat plan 2023-09-09 13:55:05 +02:00
janishutz defaafdd54 setup app complete 2023-09-08 16:26:37 +02:00
janishutz 809a05c864 fix app api routes 2023-09-07 12:50:51 +02:00
janishutz 1ac4e1ce40 add troubleshooting guide for encoding err 2023-09-07 09:32:28 +02:00
janishutz 733cbf2dbb user account page done (- styling) 2023-09-07 08:40:21 +02:00
janishutz 10d0703d78 user account view functionality partially done 2023-09-06 17:50:46 +02:00
janishutz b91337f831 progress on setup and account view 2023-09-06 15:54:33 +02:00
janishutz 4afeb7a146 add some setup routes already 2023-09-06 15:27:50 +02:00
janishutz 667b542893 start page settings done 2023-09-05 18:45:17 +02:00
janishutz adf0133cd3 add start page settings 2023-09-05 17:42:39 +02:00
janishutz cc57a8b80a add startPage settings files 2023-09-05 13:15:36 +02:00
janis 1ad22482a4 fix bug in start page settings + a bit of progress 2023-09-05 10:33:55 +02:00
janis a52ec14845 start pages settings (BROKEN) 2023-09-04 17:05:58 +02:00
janis bebf53e5eb mobile optimize user signup 2023-09-04 16:00:54 +02:00
janishutz 62f0ef1ce8 add version + start page builder 2023-09-04 14:47:15 +02:00
janishutz 4a26a05cdc fix admin account deletion 2023-09-04 14:24:21 +02:00
janishutz b9b2898392 more android app stuff 2023-09-03 16:03:54 +02:00
janishutz fcd3f4a6bb work on android app 2023-09-03 16:03:46 +02:00
janishutz b784a6c605 finish various todo 2023-09-02 13:48:11 +02:00
janishutz 043aa171ca root login + admin account settings 2023-09-01 17:16:52 +02:00
janishutz bac321f48e fix bug in seat plan editor (loading broken) 2023-09-01 09:50:40 +02:00
janishutz e26369f133 payment gateway settings now fully working 2023-09-01 09:40:06 +02:00
janishutz 6d68c2d55a add password setting option with password view 2023-08-31 18:01:35 +02:00
janis b801417c01 add root accounts 2023-08-31 16:12:03 +02:00
janis 1ecfbacc89 add dark mode on default start page 2023-08-31 13:51:05 +02:00
janishutz 6ea687fa47 add plugin settings page 2023-08-30 17:17:06 +02:00
janishutz f0d433a0eb load payment gateway settings 2023-08-30 16:07:53 +02:00
janishutz 6a3127a35a prepare payment gateway settings 2023-08-29 17:27:45 +02:00
janishutz 6ac4fd9cda setup almost complete without saving 2023-08-29 16:51:34 +02:00
janis 466a4fbd8b various fixes 2023-08-28 17:09:56 +02:00
janishutz a0984782a8 add testing of new method of start page 2023-08-27 13:54:07 +02:00
janishutz 8c4d70ac28 more progress on setup 2023-08-26 15:01:57 +02:00
janishutz 991b96d54d reset db 2023-08-26 09:59:05 +02:00
janishutz c128b18418 fix major bug in json db 2023-08-26 09:58:19 +02:00
janishutz 97183cb304 json db has major bug -> fix under way 2023-08-25 20:09:55 +02:00
janishutz 9952566b6b fix jsondb bug -> missing promise resolution 2023-08-25 19:11:06 +02:00
janis 59fa703595 in setup name change 2023-08-25 16:18:28 +02:00
janishutz 86a7ec13ad root account setup email and pw checker + other 2023-08-25 09:57:29 +02:00
janishutz 1705128482 start styling setup 2023-08-24 16:12:20 +02:00
janis fa5d53aef4 update settings 2023-08-24 13:50:49 +02:00
janishutz 920da0f321 progress on setup 2023-08-23 16:21:08 +02:00
janishutz 17481ba03c deletion postponing 2023-08-23 15:40:31 +02:00
janishutz c3179194b8 various changes 2023-08-23 11:58:37 +02:00
janis eacaebd84b add gc for db 2023-08-22 19:21:40 +02:00
janishutz 64af566b86 update some event settings 2023-08-21 15:11:17 +02:00
janishutz e2440485d9 config update, Almost fully styled details page 2023-08-21 14:52:24 +02:00
janis 6743ed778e begin json db testing 2023-08-21 11:59:30 +02:00
janishutz 4bacd4aa8f some styling for event details view 2023-08-20 11:55:58 +02:00
janishutz 5505313e3e app endpoints, enforce email verification 2023-08-19 14:10:40 +02:00
janishutz 71a2927372 various small changes and fixes 2023-08-19 13:35:46 +02:00
janishutz 6051b18796 implement first part of occupied seat counter 2023-08-18 18:13:53 +02:00
janishutz 4208ad44a2 json db almost done 2023-08-18 09:28:54 +02:00
janishutz fbb96ba838 updates to docs 2023-08-18 09:07:42 +02:00
janis ec7ab0faee add some more details on website 2023-08-16 09:16:58 +02:00
janishutz c7b097fe23 update documentation 2023-08-15 12:11:05 +02:00
janishutz 3e7ff741a3 add first json db functions 2023-08-15 10:42:24 +02:00
janishutz 1beba0131a add plugin loader 2023-08-13 15:07:41 +02:00
janishutz 029181329a general event settings done 2023-08-12 14:49:36 +02:00
janishutz e634ac5381 add payrexx as payment provider 2023-08-12 12:47:35 +02:00
janishutz 2c7e0f39bc Ignore event assets on git upload 2023-08-11 16:52:00 +02:00
janishutz 887e905343 Loading event data from ui possible now 2023-08-11 16:50:55 +02:00
janishutz dbfe89998e fix some things with event loading 2023-08-11 16:32:53 +02:00
janishutz d5c581170f event settings almost done 2023-08-11 15:37:04 +02:00
janishutz d2c0257b8f clean up settings of event and general ones 2023-08-10 20:54:53 +02:00
janishutz 5c87a5a282 event image upload done 2023-08-10 19:48:10 +02:00
janishutz 0a1dee882a restructure and rethink setup 2023-08-10 14:11:13 +02:00
janishutz 0735224dd1 pw reset done 2023-08-10 13:54:17 +02:00
janishutz dfda842c7b password reset preparations done 2023-08-10 12:23:26 +02:00
janishutz adca2915b7 move to easier to manage ticket selection 2023-08-09 14:22:38 +02:00
janishutz 3e95dfeee3 fix payments not working with last change 2023-08-08 16:08:38 +02:00
janishutz 234d809ebf completely re-engineered backend for tickets 2023-08-08 15:53:10 +02:00
janishutz 4d27fc8c48 prepare to redo ticket selection api 2023-08-08 10:52:51 +02:00
janishutz ed991d3f57 start implementing android app 2023-08-07 18:01:56 +02:00
janishutz 18f6a5226f Android App Scaffolding 2023-08-07 17:53:13 +02:00
janishutz e15057d682 optimise speed of webhook for stripe 2023-08-07 17:41:49 +02:00
janishutz 9b7eb913ae mostly working ticket selection for non-seatplan 2023-08-07 17:35:20 +02:00
janishutz ed38edd880 ticket gen working + various changes 2023-08-07 12:24:52 +02:00
janishutz 5cbf624284 payments fully integrated 2023-08-06 20:35:50 +02:00
janishutz 32ed36b93f ticket generation working 2023-08-06 18:37:21 +02:00
janishutz 2812ab9055 2fa settings now available 2023-08-05 12:45:05 +02:00
janishutz 2c18ee6f61 working user sign up 2023-08-05 12:30:34 +02:00
janishutz f9e6b8fc17 sign up almost fully working 2023-08-05 11:52:29 +02:00
janishutz d9adc91256 signup partially working 2023-08-04 13:46:26 +02:00
janishutz 935c8e32da payment cancellation 2023-08-03 16:44:23 +02:00
janishutz 8784f79014 stripe integration done, handling missing still 2023-08-03 15:37:50 +02:00
janishutz 19874cd007 fix various bugs in seat plan selector 2023-08-03 11:11:16 +02:00
janishutz 127bd5b630 stripe almost working 2023-08-02 17:09:39 +02:00
janishutz de3ab81be2 working 2fa system 2023-08-02 14:13:21 +02:00
janishutz 242bfa012e remove some debug code 2023-08-01 15:17:10 +02:00
janishutz 581e7143f7 various small changes + almost complete ticket gen 2023-08-01 14:26:46 +02:00
janishutz 836b56b69d add queue handler 2023-07-31 15:54:34 +02:00
janishutz 9827bb2c69 clean up some todos 2023-07-31 15:47:10 +02:00
janishutz 6083ec262c add more documentation 2023-07-29 11:08:32 +02:00
janishutz 0ef138c865 add some more documentation 2023-07-28 09:38:53 +02:00
janishutz b8b6467633 various bugfixes 2023-07-27 15:10:14 +02:00
janishutz 88f16c0421 add cookie security settings 2023-07-27 14:26:29 +02:00
janishutz a2dac4bbbb update postHandler to accept ticket counts 2023-07-27 14:22:13 +02:00
janishutz d624637e3e some semi finished features 2023-07-27 12:01:19 +02:00
janishutz 15217c640a working occupied seats 2023-07-26 16:45:15 +02:00
janishutz 7716f56ea1 loading of occupied seats (BROKEN) 2023-07-26 15:45:21 +02:00
janishutz ee8aa52dd8 db + saving of reserved tickets 2023-07-26 12:24:18 +02:00
janishutz d0b215f022 add another db table (sql dbs) 2023-07-26 08:18:20 +02:00
janishutz 782a245c17 begin stripe plugin 2023-07-25 15:23:49 +02:00
janishutz ff277a41ae begin integration of payment gateways 2023-07-25 12:20:52 +02:00
janishutz c6313bafdf various changes 2023-07-25 11:52:10 +02:00
janishutz 8e777ee281 add console styling 2023-07-24 18:59:55 +02:00
janishutz 84c0017e2a working location settings (incl saving) 2023-07-24 15:44:24 +02:00
janishutz 5e5e7fee49 fix bug in seat plan loading 2023-07-23 19:41:32 +02:00
janishutz 4aa4602f69 purchase view progress, cleanup 2023-07-22 10:44:04 +02:00
janishutz 29d5652834 finished cart management 2023-07-22 10:10:18 +02:00
janishutz 3fe01239b3 semi finished standing sp comp selection 2023-07-21 14:56:52 +02:00
janishutz cbadd2a2c1 seatplan saving and loading for admin & user 2023-07-20 15:24:38 +02:00
janishutz d855f61347 mostly working seat selection 2023-07-19 14:42:32 +02:00
janishutz b20103d5f1 update ticket rendering 2023-07-18 21:40:31 +02:00
janishutz e271ff091e migrate to new cart engine 2023-07-18 10:19:49 +02:00
janishutz 21afcdb036 restructuring 2023-07-18 09:00:57 +02:00
janishutz 98ac5c8dfc finish moving setup to own webapp 2023-07-17 16:14:46 +02:00
janishutz 7f08269796 separate setup from main page for faster load 2023-07-17 15:43:25 +02:00
janishutz b30a3226a5 fix event sorting in order view 2023-07-17 15:08:41 +02:00
janishutz 9da40f2528 ordering view sorting (broken) 2023-07-17 15:01:34 +02:00
janishutz e5d3e08a75 add password hashing function + easier prod 2023-07-16 14:59:07 +02:00
janishutz 8b6c190e15 almost finished admin auth system 2023-07-16 13:40:40 +02:00
janishutz afdaf13048 almost functional user login (mail still missing) 2023-07-16 11:45:48 +02:00
janishutz a8cf4ec9a4 mysql db partially integrated 2023-07-15 17:07:15 +02:00
janishutz 5270317e2d fix bugs, full two fa system done 2023-07-13 15:00:58 +02:00
janishutz 9f5d5a3be3 two fa almost complete 2023-07-13 09:58:43 +02:00
janishutz 399726d563 work on 2fa system 2023-07-12 17:04:40 +02:00
janishutz 447533ed87 sql manager 2023-07-12 16:23:13 +02:00
janishutz cdaa6d76e5 progress on mysql db interface 2023-07-12 11:39:26 +02:00
janishutz fbedf9e95e add more mysql stuff 2023-07-12 09:06:29 +02:00
janishutz 865141d945 restruct + 2fa + auth 2023-07-11 16:53:17 +02:00
janishutz d0647ba1bb update eslint config + other changes 2023-07-11 15:40:39 +02:00
janishutz d763448a12 add nodemailer and html-to-text 2023-07-11 15:14:24 +02:00
janishutz 72aae72dcf add mail config file 2023-07-11 15:05:33 +02:00
janishutz 29a68edc0c add various things of the backend 2023-07-09 19:53:55 +02:00
janishutz fc4b18274b more progress on backend 2023-07-08 13:53:06 +02:00
janishutz be263fcd6b begin backend implementation 2023-07-08 13:31:42 +02:00
janishutz ca5ab2d74a lots of changes for the website 2023-07-08 13:01:21 +02:00
janishutz b86d7dd434 many changes to various components 2023-07-08 11:45:16 +02:00
janishutz 775a91351a Optimise seat chooser 2023-07-07 21:11:49 +02:00
janishutz 2e0c9c49b5 fix bugs caused by switch to vite 2023-07-04 18:34:18 +02:00
janishutz 77260542e1 update vite config 2023-07-04 18:15:04 +02:00
janishutz 3b8bec2f6c migrate to vite instead of webpack 2023-07-04 18:11:20 +02:00
481 changed files with 34658 additions and 27042 deletions
+2 -1
View File
@@ -64,6 +64,7 @@ module.exports = {
'space-in-parens': [
'error',
'always'
]
],
'no-var': 'error'
}
};
+11
View File
@@ -0,0 +1,11 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "npm" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
+15
View File
@@ -15,3 +15,18 @@ node_modules
# ignore dist folder (this repo only contains source code!)
/dist
*.secret.json
# ignore all latex files except .tex
*.aux
*.fls
*.synctex.gz
*.fdb_latexmk
._wordcount_selection.tex
/*.zip
AppMarketing
yarn.lock
package-lock.json
-53
View File
@@ -619,56 +619,3 @@ Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
+29 -16
View File
@@ -22,9 +22,19 @@
<img alt="App Version" src="https://img.shields.io/github/package-json/v/simplePCBuilding/libreevent.svg?label=Development Version">
</div>
A fully featured, fully free and open source event management solution you can host yourself, to manage your event and sell tickets. All you need is a webserver that can run node.js!
<div id="donate" align="center">
<a href="https://store.janishutz.com/donate" target="_blank"><img src="https://store-cdn.janishutz.com/static/support-me.jpg" width="150px"></a>
</div>
Visit our [website](https://libreevent.janishutz.com)
A fully featured, free and open source event management solution you can host yourself, to manage your event and sell tickets. All you need is a webserver that can run node.js!
Visit the project's [website](https://libreevent.janishutz.com)
libreǝvent IS FREE SOFTWARE. IT IS PROVIDED "AS IS" AND AS SUCH COMES WITH ABSOLUTELY NO WARRANTY TO THE EXTENT PERMITTED BY APPLICABLE LAW. If anything does not work, please report it back, but do not expect it to be fixed immediately, as this software is developed by volunteers in their free time.
# Download
You may download this project using the GitHub releases page or the direct links on the [libreevent website](https://libreevent.janishutz.com/download) as this only downloads the ready-to-distribute version, not the development version.
Alternatively, you may download the project directly from GitHub (by cloning it or downloading the code) but you'll have to compile and package the project [manually](https://libreevent.janishutz.com/docs/contributing/packaging).
# System requirements
- node.js V16.0+
@@ -33,15 +43,19 @@ Visit our [website](https://libreevent.janishutz.com)
- any CPU from the last 10 years
- Any operating system that can run node.js
# Download
You may download this project using the GitHub releases page or the direct links on the [libreevent website](https://libreevent.janishutz.com/download) as this only downloads the ready-to-distribute version, not the development version.
Alternatively, you may download the project directly from GitHub (by cloning it or downloading the code) but you'll have to compile and package the project [manually](https://libreevent.janishutz.com/docs/contributing/packaging).
# Roadmap
There are a few features planned for libreevent. Please discuss other ideas in the issue I opened specifically for this. (see #12)
# Contributing
If you want to contribute to this project, please read more [here](https://libreevent.janishutz.com/docs/contributing). Until the end of October 2023, no contributions can be accepted into master.
If you want to contribute to this project, please read more [here](https://libreevent.janishutz.com/docs/contributing).
# Supporting the project
If you like this project and it helped you save money, please consider donating to help fund the continuous development. If you are a company, please contact me [here](https://libreevent.janishutz.com/docs/sponsoring) if you want to sponsor the project and become an official partner.
<div id="donate" align="center">
<a href="https://store.janishutz.com/donate">
<img src="https://store-cdn.janishutz.com/static/support-me.jpg" width="150px">
</a>
</div>
# Repository structure
- [assets/](/assets/): contains the logo (as png and GIMP file), also iOS and Android marketing materials, just global assets (images / videos)
@@ -52,19 +66,18 @@ If you like this project and it helped you save money, please consider donating
- [website/](/website/): contains all of the website files:
- [website/dist/](/website/dist/): contains all the ready to distribute website files
- [website/src/](/website/src/): contains all of the source files (markdown format) for the website. These files are converted into HTML by the build script.
- [package.js](/package.js): collects all of the files of the project and copies them into the [dist/](/dist/) folder. It also minifies the files in the process to reduce package size.
- [.eslintrc.js](/.eslintrc.js): ESlint config, the linter used for the project
- [.gitignore](/.gitignore): ignored files, currently is node_modules & log files.
- [package.sh](/package.sh): collects all of the files of the project and copies them into the [dist/](/dist/) folder. It also automatically compiles the webapps and removes unnecessary files as well as resetting the databases and settings to the defaults.
- [.eslintrc.js](/.eslintrc.js): ESlint config, the linter used for the project. Before starting a PR, make sure the linter is happy!
- [notes.md](./notes.md): Project notes, including future plans for it.
You may notice some additional folders appearing after running
```
npm run package
./package.sh
```
This is to shrink the repository size. Distribution ready files can be found in the releases or on our [website](https://libreevent.janishutz.com/download).
## This project is currently NOT ready to be used!
Development of this project is currently ongoing and no stable version is available yet.
## ROADMAP
The goal is to get this tool fully functioning by the End of September 2023.
<div id="donate" align="center">
<a href="https://store.janishutz.com/donate">
<img src="https://store-cdn.janishutz.com/static/support-me.jpg" width="150px">
</a>
</div>
+13
View File
@@ -0,0 +1,13 @@
# Security Policy
## Supported Versions
libreevent gets security updates as part of regular software updates. Since there is only one major version currently, only this one gets updates
| Version | Supported |
| ------- | ------------------ |
| 1.x.x | :white_check_mark: |
| 0.x.x | :x: |
## Reporting a Vulnerability
Please open an issue if you have discovered a security problem or send a mail to [development@janishutz.com](mailto:development@janishutz.com)
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

+3
View File
@@ -0,0 +1,3 @@
# Ticket Template
This template can be used by libreevent if you do not edit the template. It is entirely copyleft and you can change it to your liking. The LaTex document is included with libreevent.
Binary file not shown.
@@ -0,0 +1,25 @@
\documentclass[11pt]{article}
% Imports %
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage[export]{adjustbox}
\usepackage{tcolorbox}
\usepackage{xcolor}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\addtolength{\oddsidemargin}{-0.5in}
\addtolength{\textwidth}{1in}
\addtolength{\evensidemargin}{-0.55in}
\addtolength{\topmargin}{-0.75in}
\addtolength{\textheight}{1.5in}
\begin{document}
\begin{tcolorbox}[colback=gray!5!white,colframe=black!75!black,title=Your Ticket - libreevent event management solution]
\vspace{6cm}
\end{tcolorbox}
\end{document}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 698 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

+22
View File
@@ -0,0 +1,22 @@
# DEPLOY
For deployment create the following items:
- libreevent-[VERSION HERE]-npm.zip (contains the node_modules folder from src/server)
- libreevent-[VERSION HERE]-prebuilt.zip (contains a ready-to-use compiled version of libreevent (main download))
- libreevent-[VERSION HERE]-full-icu.zip (contains the package.json file which can be used if full-icu is not enabled in Node.js)
-> This can be achieved by running the bash script `package.sh` in the root folder of the project
# Links to apps
- https://play.google.com/store/apps/details?id=com.janishutz.libreevent
- https://apps.apple.com/ch/app/libreevent-entry-control/id6464594870?l=en-GB
# PLANS
- Website: Add ids to titles
- FUTURE: Implement Permission system
- FUTURE: Add Admin profile (page to change account settings per person like changing pwd)
- FUTURE: add multi-language support
- FUTURE: Guest purchase
- FUTURE: Colour for event banner background
- FUTURE: add webpack (or any other minifying tool) to project website to decrease file size (OPTIONAL)
-8
View File
@@ -1,8 +0,0 @@
/*
* libreevent - package.js
*
* Created by Janis Hutz 05/14/2023, Licensed under the GPL V3 License
* https://janishutz.com, development@janishutz.com
*
*
*/
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "libreevent",
"version": "1.0.0",
"version": "1.1.16",
"description": "A free and open source event management solution",
"main": "/dist/app.js",
"scripts": {
Executable
+206
View File
@@ -0,0 +1,206 @@
#
# libreevent - package.sh
#
# Created by Janis Hutz 10/12/2023, Licensed under the GPL V3 License
# https://janishutz.com, development@janishutz.com
#
#
v="V1.1.16"
echo "
_ _ _ _
| (_) | | |
| |_| |__ _ __ ___ _____ _____ _ __ | |_
| | | '_ \\| '__/ _ \\/ _ \\ \\ / / _ \\ '_ \\| __|
| | | |_) | | | __/ __/\\ V / __/ | | | |_
|_|_|_.__/|_| \\___|\\___| \\_/ \\___|_| |_|\\__|
-------------------------------
==> Preparing packages for libreevent
"
echo "
==> Compiling setup... <==
"
sleep 0.5
cd src/webapp/setup
npm i
npm audit fix --force
sleep 1
npm run build
echo "
==> Compiling main webapp... <==
"
sleep 0.5
cd ../main
npm i
npm audit fix --force
sleep 1
npm run build
echo "
==> Resetting databases <==
"
sleep 1
cd ../../server
node prepareDB.js
sleep 1
echo "
==> Updating dependencies of backend <==
"
npm audit fix --force
sleep 1
echo "
==> Collecting files to archive <==
"
sleep 1
cd ../../
rm -rf dist/
mkdir dist/
cd dist
shopt -s extglob
cp -r ../src/server/!(node_modules) .
rm webapp
mkdir webapp
mkdir webapp/main
mkdir webapp/setup
cp -rv ../src/webapp/main/dist ./webapp/main/dist
cp -rv ../src/webapp/setup/dist ./webapp/setup/dist
rm .gitignore
rm prepareDB.js
rm test.js
rm config/*.secret.json
rm backend/plugins/payments/*/*.secret.json
echo "agdhgasjlgagaldusaglueagelwadgl" >> setupkey.txt
echo "
==> Collected files to archive <==
==> Archiving... <==
"
sleep 1
cd ..
zip -9r libreevent-$v-custom.zip dist
echo "
==> Created custom archive <==
==> Creating archive for node_modules <==
"
sleep 1
cd src/server
npm i
npm audit fix --force
sleep 1
cd ../../
zip -9r libreevent-$v-npm.zip src/server/node_modules
echo "
==> Created npm archive <==
==> Creating archive for full-icu package.json <==
"
sleep 1
cd src/server
npm i full-icu
cd ../../
zip -9r libreevent-$v-full-icu.zip src/server/package.json src/server/package-lock.json
cd src/server
npm uninstall full-icu
echo "
==> Archived full-icu config <==
==> Creating archive for prebuilt install <==
"
cd ../../dist
cp ../README.md .
cd ..
rm -rf ./simple/node_modules
rm ./simple/package-lock.json
rm ./simple/yarn.lock
zip -9r libreevent-$v-prebuilt.zip simple
echo "
_ _ _ _
| (_) | | |
| |_| |__ _ __ ___ _____ _____ _ __ | |_
| | | '_ \\| '__/ _ \\/ _ \\ \\ / / _ \\ '_ \\| __|
| | | |_) | | | __/ __/\\ V / __/ | | | |_
|_|_|_.__/|_| \\___|\\___| \\_/ \\___|_| |_|\\__|
-------------------------------
==> Done
==> Successfully packaged libreevent $v
Next steps:
- Check that everything was packaged correctly
- Create a release on GitHub
- Run 'cd dist && npm publish'
- Delete all newly spawned files
"
+16
View File
@@ -0,0 +1,16 @@
/*
* libreevent - index.js
*
* Created by Janis Hutz 08/26/2024, Licensed under the GPL V3 License
* https://janishutz.com, development@janishutz.com
*
*
*/
/*
This file is a wrapper for the npm package
*/
const libreevent = require( 'libreevent' );
libreevent.run( __dirname );
+7
View File
@@ -0,0 +1,7 @@
{
"host": "",
"database": "",
"user": "",
"password": "",
"port": 3306
}
+12
View File
@@ -0,0 +1,12 @@
{
"host":"",
"port": 587,
"secure": false,
"auth": {
"user":"",
"pass":""
},
"tls": {
"servername": ""
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"init":false,
"setupDone":false,
"twoFA":"allow",
"twoFAMode":"simple",
"db":"mysql",
"payments":"stripe",
"name":"libreevent",
"yourDomain":"",
"mailSender":"",
"maxTickets":10,
"currency":"USD",
"gcInterval":300,
"ticketTimeout":900,
"startPage":"default",
"version":"1.0.1"
}
+26
View File
@@ -0,0 +1,26 @@
{
"name": "libreevent-simple",
"version": "1.0.0",
"description": "Simplify libreevent's install using the npm package",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/janishutz/libreevent.git"
},
"keywords": [
"libreevent",
"simple"
],
"author": "Janis Hutz",
"license": "GPL-3.0-or-later",
"bugs": {
"url": "https://github.com/janishutz/libreevent/issues"
},
"homepage": "https://libreevent.janishutz.com",
"dependencies": {
"libreevent": "^1.1.3"
}
}
+1
View File
@@ -0,0 +1 @@
awe0g9pü02w 3tvaä9p4'efgt$ä'4fgtaäaw34ftg$a3qwf4t'p93wft3waqäü
+15
View File
@@ -0,0 +1,15 @@
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties
+1
View File
@@ -0,0 +1 @@
libreevent entry control
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AndroidProjectSystem">
<option name="providerId" value="com.android.tools.idea.GradleProjectSystem" />
</component>
</project>
+123
View File
@@ -0,0 +1,123 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<JetCodeStyleSettings>
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<codeStyleSettings language="XML">
<option name="FORCE_REARRANGE_MODE" value="1" />
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>ANDROID_ATTRIBUTE_ORDER</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</codeStyleSettings>
</code_scheme>
</component>
+5
View File
@@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="21" />
</component>
</project>
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<targetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="$USER_HOME$/.android/avd/Pixel_7_Pro_API_30.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2023-10-10T15:22:18.675007998Z" />
</component>
</project>
+18
View File
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetSelector">
<selectionStates>
<SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" />
<DropdownSelection timestamp="2025-04-18T11:32:08.036063878Z">
<Target type="DEFAULT_BOOT">
<handle>
<DeviceId pluginId="LocalEmulator" identifier="path=/home/janis/.android/avd/Pixel_9_Pro_XL.avd" />
</handle>
</Target>
</DropdownSelection>
<DialogSelection />
</SelectionState>
</selectionStates>
</component>
</project>
+20
View File
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="CHOOSE_PER_TEST" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="/usr/share/java/gradle" />
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="1.9.0" />
</component>
</project>
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectMigrations">
<option name="MigrateToGradleLocalJavaHome">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
</component>
</project>
+9
View File
@@ -0,0 +1,9 @@
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
<option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
<option value="com.intellij.execution.junit.PatternConfigurationProducer" />
<option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
<option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
<option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" />
<option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" />
<option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" />
</set>
</option>
</component>
</project>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
</component>
</project>
+1
View File
@@ -0,0 +1 @@
/build
+45
View File
@@ -0,0 +1,45 @@
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
android {
namespace = "com.janishutz.libreevent"
compileSdk = 36
defaultConfig {
applicationId = "com.janishutz.libreevent"
minSdk = 24
targetSdk = 36
versionCode = 6
versionName = "1.1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
dependencies {
implementation("androidx.core:core-ktx:1.9.0")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.8.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
implementation("com.journeyapps:zxing-android-embedded:4.2.0")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}
+21
View File
@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
Binary file not shown.
@@ -0,0 +1,24 @@
package com.janishutz.libreevent
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.Assert.*
/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
fun useAppContext() {
// Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.janishutz.libreevent", appContext.packageName)
}
}
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="true"
tools:ignore="UnnecessaryRequiredFeature" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.LibreeventEntryControl"
tools:targetApi="35">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ScannerActivity"
android:exported="true">
</activity>
</application>
</manifest>
Binary file not shown.

After

Width:  |  Height:  |  Size: 225 KiB

@@ -0,0 +1,116 @@
package com.janishutz.libreevent
import java.io.BufferedReader
import java.io.DataOutputStream
import java.io.InputStreamReader
import java.lang.Exception
import java.net.HttpURLConnection
import java.net.URL
class ApiClient {
fun authenticateUser(apiUrl: String, username: String, password: String): String {
try {
val url = URL("$apiUrl/app/authenticate")
println(url)
val connection = url.openConnection() as HttpURLConnection
// Set the request method to POST
connection.requestMethod = "POST"
// Set request headers (if needed)
connection.setRequestProperty("Content-Type", "application/json")
// Enable input and output streams for the connection
connection.doInput = true
connection.doOutput = true
// Create the JSON request body
val jsonRequest = "{\"email\":\"$username\",\"password\":\"$password\"}"
// Write the JSON data to the output stream
val outputStream = DataOutputStream(connection.outputStream)
outputStream.write(jsonRequest.toByteArray(Charsets.UTF_8))
outputStream.flush()
outputStream.close()
// Get the response code from the server
val responseCode = connection.responseCode
if (responseCode == HttpURLConnection.HTTP_OK) {
// Read and handle the response from the server
val reader = BufferedReader(InputStreamReader(connection.inputStream))
val response = StringBuilder()
var line: String?
while (reader.readLine().also { line = it } != null) {
response.append(line)
}
reader.close()
// Return the response as a String
return response.toString()
} else {
println(responseCode)
return "status-code-non-ok"
}
} catch (e: Exception) {
e.printStackTrace()
return "error"
}
}
fun checkTicket(apiUrl: String, username: String, password: String, ticket: String): String {
var url = URL("$apiUrl/app/ticketLookup")
if ( !apiUrl.contains( "https://" )) {
url = URL("https://$apiUrl/app/ticketLookup")
}
val connection = url.openConnection() as HttpURLConnection
// Set the request method to POST
connection.requestMethod = "POST"
// Set request headers (if needed)
connection.setRequestProperty("Content-Type", "application/json")
// Enable input and output streams for the connection
connection.doInput = true
connection.doOutput = true
// Create the JSON request body
val jsonRequest = "{\"email\":\"$username\",\"password\":\"$password\",\"ticketID\":\"$ticket\"}"
// Write the JSON data to the output stream
val outputStream = DataOutputStream(connection.outputStream)
outputStream.write(jsonRequest.toByteArray(Charsets.UTF_8))
outputStream.flush()
outputStream.close()
// Get the response code from the server
val responseCode = connection.responseCode
if (responseCode == HttpURLConnection.HTTP_OK) {
// Read and handle the response from the server
val reader = BufferedReader(InputStreamReader(connection.inputStream))
val response = StringBuilder()
var line: String?
while (reader.readLine().also { line = it } != null) {
response.append(line)
}
reader.close()
// Return the response as a String
return response.toString()
} else {
val r = BufferedReader(InputStreamReader(connection.errorStream))
val res = StringBuilder()
var line: String?
while (r.readLine().also { line = it } != null) {
res.append(line)
}
r.close()
println(res.toString())
return "Error"
}
}
}
@@ -0,0 +1,107 @@
package com.janishutz.libreevent
import android.Manifest
import android.content.pm.PackageManager
import android.app.AlertDialog
import android.content.Intent
import android.os.Bundle
import android.os.StrictMode
import android.os.StrictMode.ThreadPolicy
import android.widget.Button
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val policy = ThreadPolicy.Builder().permitAll().build()
StrictMode.setThreadPolicy(policy)
val sharedPref = applicationContext.getSharedPreferences( "login", MODE_PRIVATE )
val hasSwitched = intent.hasExtra("hasSwitched")
val loginButton = findViewById<Button>(R.id.loginButton)
val urlEditText = findViewById<EditText>(R.id.url)
val usernameEditText = findViewById<EditText>(R.id.username)
val passwordEditText = findViewById<EditText>(R.id.password)
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CAMERA), CAMERA_PERMISSION_REQUEST)
}
if (sharedPref.getString( "url", null ).toString() != "null" && sharedPref.getString( "username", null ).toString() != "null" ) {
urlEditText.setText(sharedPref.getString( "url", null ).toString())
usernameEditText.setText(sharedPref.getString( "username", null ).toString())
}
if (sharedPref.getString( "loginOk", null ).toString() != "null" && !hasSwitched) {
println(sharedPref.getString( "loginOk", null ).toString())
val switchIntent = Intent(this, ScannerActivity::class.java)
startActivity(switchIntent)
}
loginButton.setOnClickListener {
val url = urlEditText.text.toString()
val username = usernameEditText.text.toString()
val password = passwordEditText.text.toString()
login( url, username, password )
}
}
private fun login( url: String, username: String, password: String ) {
val res = ApiClient().authenticateUser( url, username, password )
println( res )
if ( res == "authOk" ) {
val sharedPref = applicationContext.getSharedPreferences( "login", MODE_PRIVATE )
val editor = sharedPref.edit()
editor.putString( "username", username )
editor.putString( "password", password )
editor.putString( "url", url )
editor.putString( "loginOk", "true" )
editor.apply()
val switchIntent = Intent(this, ScannerActivity::class.java)
startActivity(switchIntent)
} else if ( res == "status-code-non-ok" ) {
val alertDialogBuilder = AlertDialog.Builder(this)
alertDialogBuilder.setTitle("Username or password incorrect")
alertDialogBuilder.setMessage("Please ensure that the values entered are correct and try again")
alertDialogBuilder.setIcon(android.R.drawable.ic_dialog_alert)
alertDialogBuilder.setPositiveButton("OK") { dialog, _ ->
dialog.dismiss()
}
alertDialogBuilder.show()
} else if ( res == "error") {
val alertDialogBuilder = AlertDialog.Builder(this)
alertDialogBuilder.setTitle("Unable to connect")
alertDialogBuilder.setMessage("Please ensure that the url specified is correct.")
alertDialogBuilder.setIcon(android.R.drawable.ic_dialog_alert)
alertDialogBuilder.setPositiveButton("OK") { dialog, _ ->
dialog.dismiss()
}
alertDialogBuilder.show()
} else if ( res == "wrong") {
val alertDialogBuilder = AlertDialog.Builder(this)
alertDialogBuilder.setTitle("Username or password incorrect")
alertDialogBuilder.setMessage("Please ensure that the values entered are correct and try again")
alertDialogBuilder.setIcon(android.R.drawable.ic_dialog_alert)
alertDialogBuilder.setPositiveButton("OK") { dialog, _ ->
dialog.dismiss()
}
alertDialogBuilder.show()
}
}
companion object {
private const val CAMERA_PERMISSION_REQUEST = 1
}
}
@@ -0,0 +1,135 @@
package com.janishutz.libreevent
import android.Manifest
import android.app.AlertDialog
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle
import android.widget.Button
import androidx.core.app.ActivityCompat
import com.journeyapps.barcodescanner.BarcodeCallback
import com.journeyapps.barcodescanner.BarcodeResult
import com.journeyapps.barcodescanner.CaptureActivity
import com.journeyapps.barcodescanner.CaptureManager
import com.journeyapps.barcodescanner.DecoratedBarcodeView
import java.util.Date
import androidx.core.content.edit
class ScannerActivity : CaptureActivity() {
private lateinit var barcodeView: DecoratedBarcodeView
private lateinit var captureManager: CaptureManager
private var lastScanned: String = ""
private var lastScanTimestamp: Long = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_scanner)
barcodeView = findViewById(R.id.barcodeScannerView)
val logoutButton = findViewById<Button>(R.id.logoutButton)
logoutButton.setOnClickListener {
val sharedPref = applicationContext.getSharedPreferences( "login", MODE_PRIVATE )
sharedPref.edit {
remove("password")
remove("loginOk")
}
val switchIntent = Intent(this, MainActivity::class.java)
switchIntent.putExtra("hasSwitched", true)
startActivity(switchIntent)
}
// Check for camera permission and request if not granted
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CAMERA), CAMERA_PERMISSION_REQUEST)
} else {
setupScanner()
}
}
private fun setupScanner() {
captureManager = CaptureManager(this, barcodeView)
captureManager.initializeFromIntent(intent, null)
captureManager.decode()
barcodeView.decodeContinuous { result ->
if (result != null) {
val scannedData = result.text // This is the scanned data (e.g., QR code content)
handleScanResult(scannedData)
}
}
}
private fun handleScanResult(result: String) {
if ( lastScanned != result || lastScanTimestamp + 2000 < System.currentTimeMillis()) {
lastScanTimestamp = System.currentTimeMillis()
val sharedPref = applicationContext.getSharedPreferences( "login", MODE_PRIVATE )
val status = ApiClient().checkTicket( sharedPref.getString( "url", null ).toString(),
sharedPref.getString( "username", null ).toString(),
sharedPref.getString( "password", null ).toString(), result )
lastScanned = result
val alertDialogBuilder = AlertDialog.Builder(this)
when (status) {
"ticketValid" -> {
alertDialogBuilder.setTitle("Ticket is valid")
}
"ticketInvalid" -> {
alertDialogBuilder.setTitle("Ticket is invalid")
}
"Error" -> {
alertDialogBuilder.setTitle("There was an error connecting")
alertDialogBuilder.setMessage("Please log out and log in again")
}
}
alertDialogBuilder.setIcon(android.R.drawable.ic_dialog_alert)
alertDialogBuilder.setPositiveButton("OK") { dialog, _ ->
dialog.dismiss()
}
alertDialogBuilder.show()
}
}
override fun onResume() {
super.onResume()
captureManager.onResume()
}
override fun onPause() {
super.onPause()
captureManager.onPause()
}
// Pass savedInstanceState to onSaveInstanceState
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
captureManager.onSaveInstanceState(outState)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == CAMERA_PERMISSION_REQUEST) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
setupScanner()
} else {
val alertDialogBuilder = AlertDialog.Builder(this)
alertDialogBuilder.setTitle("Camera access required!")
alertDialogBuilder.setMessage("Please ensure that camera access is enabled in settings")
alertDialogBuilder.setIcon(android.R.drawable.ic_dialog_alert)
alertDialogBuilder.setPositiveButton("OK") { dialog, _ ->
dialog.dismiss()
}
alertDialogBuilder.show()
}
}
}
companion object {
private const val CAMERA_PERMISSION_REQUEST = 1
}
}
@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>
@@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>
@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleX="2"
android:scaleY="2"
android:text="Welcome to libreevent!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.157" />
<EditText
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="52dp"
android:ems="10"
android:hint="Your account email"
android:inputType="textEmailAddress"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/url" />
<EditText
android:id="@+id/url"
android:layout_width="302dp"
android:layout_height="48dp"
android:layout_marginTop="32dp"
android:ems="10"
android:hint="link to libreevent instance"
android:inputType="text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2" />
<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:ems="10"
android:hint="Password"
android:inputType="textPassword"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/username" />
<Button
android:id="@+id/loginButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="84dp"
android:text="Log in"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/password" />
<TextView
android:id="@+id/textView2"
android:layout_width="306dp"
android:layout_height="51dp"
android:layout_marginTop="40dp"
android:text="This app requires a libreevent server instance to work. Please log in below"
android:textAlignment="center"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.journeyapps.barcodescanner.DecoratedBarcodeView
android:id="@+id/barcodeScannerView"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/logoutButton"
android:layout_width="122dp"
android:layout_height="wrap_content"
android:text="@string/log_out" />
</com.journeyapps.barcodescanner.DecoratedBarcodeView>
</FrameLayout>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

@@ -0,0 +1,7 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Base.Theme.LibreeventEntryControl" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Customize your dark theme here. -->
<!-- <item name="colorPrimary">@color/my_dark_primary</item> -->
</style>
</resources>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
</resources>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#213A50</color>
</resources>
@@ -0,0 +1,4 @@
<resources>
<string name="app_name">libreevent entry control</string>
<string name="log_out">Log out</string>
</resources>
@@ -0,0 +1,9 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Base.Theme.LibreeventEntryControl" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Customize your light theme here. -->
<!-- <item name="colorPrimary">@color/my_light_primary</item> -->
</style>
<style name="Theme.LibreeventEntryControl" parent="Base.Theme.LibreeventEntryControl" />
</resources>
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?><!--
Sample backup rules file; uncomment and customize as necessary.
See https://developer.android.com/guide/topics/data/autobackup
for details.
Note: This file is ignored for devices older that API 31
See https://developer.android.com/about/versions/12/backup-restore
-->
<full-backup-content>
<!--
<include domain="sharedpref" path="."/>
<exclude domain="sharedpref" path="device.xml"/>
-->
</full-backup-content>
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?><!--
Sample data extraction rules file; uncomment and customize as necessary.
See https://developer.android.com/about/versions/12/backup-restore#xml-changes
for details.
-->
<data-extraction-rules>
<cloud-backup>
<!-- TODO: Use <include> and <exclude> to control what is backed up.
<include .../>
<exclude .../>
-->
</cloud-backup>
<!--
<device-transfer>
<include .../>
<exclude .../>
</device-transfer>
-->
</data-extraction-rules>
@@ -0,0 +1,17 @@
package com.janishutz.libreevent
import org.junit.Test
import org.junit.Assert.*
/**
* Example local unit test, which will execute on the development machine (host).
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
class ExampleUnitTest {
@Test
fun addition_isCorrect() {
assertEquals(4, 2 + 2)
}
}
+5
View File
@@ -0,0 +1,5 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id("com.android.application") version "8.13.1" apply false
id("org.jetbrains.kotlin.android") version "1.9.0" apply false
}
+23
View File
@@ -0,0 +1,23 @@
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official
# Enables namespacing of each library's R class so that its R class includes only the
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
Binary file not shown.
@@ -0,0 +1,6 @@
#Sun Sep 03 11:15:46 CEST 2023
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Vendored Executable
+185
View File
@@ -0,0 +1,185 @@
#!/usr/bin/env sh
#
# Copyright 2015 the original author or authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
exec "$JAVACMD" "$@"
+89
View File
@@ -0,0 +1,89 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
+17
View File
@@ -0,0 +1,17 @@
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "libreevent entry control"
include(":app")
@@ -0,0 +1,393 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 56;
objects = {
/* Begin PBXBuildFile section */
921EDBF82A827CF200F8965C /* libreevent_entry_controlApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 921EDBF72A827CF200F8965C /* libreevent_entry_controlApp.swift */; };
921EDBFA2A827CF200F8965C /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 921EDBF92A827CF200F8965C /* ContentView.swift */; };
921EDBFC2A827CF400F8965C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 921EDBFB2A827CF400F8965C /* Assets.xcassets */; };
921EDBFF2A827CF400F8965C /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 921EDBFE2A827CF400F8965C /* Preview Assets.xcassets */; };
92DBBD892AA9B6A6006F6094 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92DBBD882AA9B6A6006F6094 /* LoginView.swift */; };
92DBBD8C2AA9C0C5006F6094 /* CodeScanner in Frameworks */ = {isa = PBXBuildFile; productRef = 92DBBD8B2AA9C0C5006F6094 /* CodeScanner */; };
92DBBD922AA9D0AF006F6094 /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 92DBBD912AA9D0AF006F6094 /* Launch Screen.storyboard */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
921EDBF42A827CF200F8965C /* libreevent-entry-control.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "libreevent-entry-control.app"; sourceTree = BUILT_PRODUCTS_DIR; };
921EDBF72A827CF200F8965C /* libreevent_entry_controlApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = libreevent_entry_controlApp.swift; sourceTree = "<group>"; };
921EDBF92A827CF200F8965C /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
921EDBFB2A827CF400F8965C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
921EDBFE2A827CF400F8965C /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
92DBBD882AA9B6A6006F6094 /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = "<group>"; };
92DBBD912AA9D0AF006F6094 /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; };
92DBBD932AA9D5AD006F6094 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
921EDBF12A827CF200F8965C /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
92DBBD8C2AA9C0C5006F6094 /* CodeScanner in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
921EDBEB2A827CF200F8965C = {
isa = PBXGroup;
children = (
921EDBF62A827CF200F8965C /* libreevent-entry-control */,
921EDBF52A827CF200F8965C /* Products */,
);
sourceTree = "<group>";
};
921EDBF52A827CF200F8965C /* Products */ = {
isa = PBXGroup;
children = (
921EDBF42A827CF200F8965C /* libreevent-entry-control.app */,
);
name = Products;
sourceTree = "<group>";
};
921EDBF62A827CF200F8965C /* libreevent-entry-control */ = {
isa = PBXGroup;
children = (
92DBBD932AA9D5AD006F6094 /* Info.plist */,
921EDBF72A827CF200F8965C /* libreevent_entry_controlApp.swift */,
921EDBF92A827CF200F8965C /* ContentView.swift */,
92DBBD882AA9B6A6006F6094 /* LoginView.swift */,
921EDBFB2A827CF400F8965C /* Assets.xcassets */,
921EDBFD2A827CF400F8965C /* Preview Content */,
92DBBD912AA9D0AF006F6094 /* Launch Screen.storyboard */,
);
path = "libreevent-entry-control";
sourceTree = "<group>";
};
921EDBFD2A827CF400F8965C /* Preview Content */ = {
isa = PBXGroup;
children = (
921EDBFE2A827CF400F8965C /* Preview Assets.xcassets */,
);
path = "Preview Content";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
921EDBF32A827CF200F8965C /* libreevent-entry-control */ = {
isa = PBXNativeTarget;
buildConfigurationList = 921EDC022A827CF400F8965C /* Build configuration list for PBXNativeTarget "libreevent-entry-control" */;
buildPhases = (
921EDBF02A827CF200F8965C /* Sources */,
921EDBF12A827CF200F8965C /* Frameworks */,
921EDBF22A827CF200F8965C /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = "libreevent-entry-control";
packageProductDependencies = (
92DBBD8B2AA9C0C5006F6094 /* CodeScanner */,
);
productName = "libreevent-entry-control";
productReference = 921EDBF42A827CF200F8965C /* libreevent-entry-control.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
921EDBEC2A827CF200F8965C /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 1420;
LastUpgradeCheck = 1420;
TargetAttributes = {
921EDBF32A827CF200F8965C = {
CreatedOnToolsVersion = 14.2;
};
};
};
buildConfigurationList = 921EDBEF2A827CF200F8965C /* Build configuration list for PBXProject "libreevent-entry-control" */;
compatibilityVersion = "Xcode 14.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 921EDBEB2A827CF200F8965C;
packageReferences = (
92DBBD8A2AA9C0C5006F6094 /* XCRemoteSwiftPackageReference "CodeScanner" */,
);
productRefGroup = 921EDBF52A827CF200F8965C /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
921EDBF32A827CF200F8965C /* libreevent-entry-control */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
921EDBF22A827CF200F8965C /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
92DBBD922AA9D0AF006F6094 /* Launch Screen.storyboard in Resources */,
921EDBFF2A827CF400F8965C /* Preview Assets.xcassets in Resources */,
921EDBFC2A827CF400F8965C /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
921EDBF02A827CF200F8965C /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
92DBBD892AA9B6A6006F6094 /* LoginView.swift in Sources */,
921EDBFA2A827CF200F8965C /* ContentView.swift in Sources */,
921EDBF82A827CF200F8965C /* libreevent_entry_controlApp.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
921EDC002A827CF400F8965C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 16.2;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
921EDC012A827CF400F8965C /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 16.2;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
921EDC032A827CF400F8965C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_ASSET_PATHS = "\"libreevent-entry-control/Preview Content\"";
DEVELOPMENT_TEAM = 8CRQNHKNVF;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "libreevent-entry-control/Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = libreevent;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.business";
INFOPLIST_KEY_NSCameraUsageDescription = "We need to scan QR codes";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UILaunchStoryboardName = "Launch Screen.storyboard";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1;
PRODUCT_BUNDLE_IDENTIFIER = "com.janishutz.libreevent-entry-control";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
921EDC042A827CF400F8965C /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_ASSET_PATHS = "\"libreevent-entry-control/Preview Content\"";
DEVELOPMENT_TEAM = 8CRQNHKNVF;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "libreevent-entry-control/Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = libreevent;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.business";
INFOPLIST_KEY_NSCameraUsageDescription = "We need to scan QR codes";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UILaunchStoryboardName = "Launch Screen.storyboard";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1;
PRODUCT_BUNDLE_IDENTIFIER = "com.janishutz.libreevent-entry-control";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
921EDBEF2A827CF200F8965C /* Build configuration list for PBXProject "libreevent-entry-control" */ = {
isa = XCConfigurationList;
buildConfigurations = (
921EDC002A827CF400F8965C /* Debug */,
921EDC012A827CF400F8965C /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
921EDC022A827CF400F8965C /* Build configuration list for PBXNativeTarget "libreevent-entry-control" */ = {
isa = XCConfigurationList;
buildConfigurations = (
921EDC032A827CF400F8965C /* Debug */,
921EDC042A827CF400F8965C /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
92DBBD8A2AA9C0C5006F6094 /* XCRemoteSwiftPackageReference "CodeScanner" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/twostraws/CodeScanner";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 2.0.0;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
92DBBD8B2AA9C0C5006F6094 /* CodeScanner */ = {
isa = XCSwiftPackageProductDependency;
package = 92DBBD8A2AA9C0C5006F6094 /* XCRemoteSwiftPackageReference "CodeScanner" */;
productName = CodeScanner;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = 921EDBEC2A827CF200F8965C /* Project object */;
}
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
@@ -0,0 +1,14 @@
{
"pins" : [
{
"identity" : "codescanner",
"kind" : "remoteSourceControl",
"location" : "https://github.com/twostraws/CodeScanner",
"state" : {
"revision" : "bf5d7087015620b250ee6c865b3c9039fc159d1a",
"version" : "2.3.3"
}
}
],
"version" : 2
}
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>libreevent-entry-control.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
</dict>
</plist>
@@ -0,0 +1,11 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 920 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Some files were not shown because too many files have changed in this diff Show More