Compare commits

...

71 Commits

Author SHA1 Message Date
Ratstail91 21f1eac554 Update README.md 2026-05-03 16:15:02 +10:00
Ratstail91 789f81129f Update README.md 2026-05-03 16:10:55 +10:00
Ratstail91 d43e9a3ee2 Update README.md 2026-05-03 14:26:50 +10:00
dependabot[bot] e318d2f621 Bump @babel/preset-env from 7.29.0 to 7.29.2
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.29.0 to 7.29.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.2/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-version: 7.29.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-17 22:13:22 +10:00
dependabot[bot] 934fcaa351 Bump webpack from 5.105.4 to 5.106.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.105.4 to 5.106.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.105.4...v5.106.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.106.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-17 22:13:01 +10:00
dependabot[bot] c0706cd0da Bump react-dom from 19.2.4 to 19.2.5
Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 19.2.4 to 19.2.5.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.5/packages/react-dom)

---
updated-dependencies:
- dependency-name: react-dom
  dependency-version: 19.2.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-17 22:12:45 +10:00
dependabot[bot] cd5c648b05 Bump react-router from 7.13.1 to 7.14.0
Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.13.1 to 7.14.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.14.0/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 09:54:38 +10:00
dependabot[bot] 8f22333929 Bump webpack-bundle-analyzer from 5.2.0 to 5.3.0
Bumps [webpack-bundle-analyzer](https://github.com/webpack/webpack-bundle-analyzer) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/webpack/webpack-bundle-analyzer/releases)
- [Changelog](https://github.com/webpack/webpack-bundle-analyzer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-bundle-analyzer/compare/v5.2.0...v5.3.0)

---
updated-dependencies:
- dependency-name: webpack-bundle-analyzer
  dependency-version: 5.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-13 09:54:26 +10:00
dependabot[bot] d66a07232d Bump dotenv from 17.3.1 to 17.4.1
Bumps [dotenv](https://github.com/motdotla/dotenv) from 17.3.1 to 17.4.1.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v17.3.1...v17.4.1)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 17.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-07 22:02:47 +10:00
dependabot[bot] 2ebb9d4105 Bump babel-loader from 10.1.0 to 10.1.1
Bumps [babel-loader](https://github.com/babel/babel-loader) from 10.1.0 to 10.1.1.
- [Release notes](https://github.com/babel/babel-loader/releases)
- [Changelog](https://github.com/babel/babel-loader/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel-loader/compare/v10.1.0...v10.1.1)

---
updated-dependencies:
- dependency-name: babel-loader
  dependency-version: 10.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-07 22:01:48 +10:00
dependabot[bot] 3d4df1684c Bump compression-webpack-plugin from 11.1.0 to 12.0.0
Bumps [compression-webpack-plugin](https://github.com/webpack/compression-webpack-plugin) from 11.1.0 to 12.0.0.
- [Release notes](https://github.com/webpack/compression-webpack-plugin/releases)
- [Changelog](https://github.com/webpack/compression-webpack-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/compression-webpack-plugin/compare/v11.1.0...v12.0.0)

---
updated-dependencies:
- dependency-name: compression-webpack-plugin
  dependency-version: 12.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-03 09:01:54 +11:00
dependabot[bot] 4d99e7bda7 Bump babel-loader from 10.0.0 to 10.1.0
Bumps [babel-loader](https://github.com/babel/babel-loader) from 10.0.0 to 10.1.0.
- [Release notes](https://github.com/babel/babel-loader/releases)
- [Changelog](https://github.com/babel/babel-loader/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel-loader/compare/v10.0.0...v10.1.0)

---
updated-dependencies:
- dependency-name: babel-loader
  dependency-version: 10.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-03 08:43:13 +11:00
dependabot[bot] 2eda5b0084 Bump mariadb from 3.5.1 to 3.5.2
Bumps [mariadb](https://github.com/mariadb-corporation/mariadb-connector-nodejs) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/mariadb-corporation/mariadb-connector-nodejs/releases)
- [Changelog](https://github.com/mariadb-corporation/mariadb-connector-nodejs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mariadb-corporation/mariadb-connector-nodejs/compare/3.5.1...3.5.2)

---
updated-dependencies:
- dependency-name: mariadb
  dependency-version: 3.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-03 08:42:44 +11:00
dependabot[bot] 7e8c257e17 Bump sequelize from 6.37.7 to 6.37.8
Bumps [sequelize](https://github.com/sequelize/sequelize) from 6.37.7 to 6.37.8.
- [Release notes](https://github.com/sequelize/sequelize/releases)
- [Changelog](https://github.com/sequelize/sequelize/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sequelize/sequelize/compare/v6.37.7...v6.37.8)

---
updated-dependencies:
- dependency-name: sequelize
  dependency-version: 6.37.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-03 08:42:13 +11:00
dependabot[bot] 2468b43b11 Bump webpack from 5.105.3 to 5.105.4
Bumps [webpack](https://github.com/webpack/webpack) from 5.105.3 to 5.105.4.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.105.3...v5.105.4)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.105.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-03 08:41:37 +11:00
dependabot[bot] a38024f179 Bump webpack from 5.105.2 to 5.105.3
Bumps [webpack](https://github.com/webpack/webpack) from 5.105.2 to 5.105.3.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.105.2...v5.105.3)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.105.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-03 15:59:58 +11:00
dependabot[bot] b3aff2b5b4 Bump react-router from 7.13.0 to 7.13.1
Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.13.0 to 7.13.1.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.13.1/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.13.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-03 15:59:16 +11:00
dependabot[bot] 4c027a41bf Bump nodemon from 3.1.12 to 3.1.14
Bumps [nodemon](https://github.com/remy/nodemon) from 3.1.12 to 3.1.14.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.1.12...v3.1.14)

---
updated-dependencies:
- dependency-name: nodemon
  dependency-version: 3.1.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 09:46:36 +11:00
Kayne Ruse a91287b34a Updated dependencies to fix multiple issues
There's still more issues coming from various dependencies, and I'm
pretty sure this should work correctly, but for now IDC - if it doesn't
work, open an issue.
2026-02-20 09:46:32 +11:00
dependabot[bot] 74050cfc27 Bump html-webpack-plugin from 5.6.5 to 5.6.6
Bumps [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) from 5.6.5 to 5.6.6.
- [Release notes](https://github.com/jantimon/html-webpack-plugin/releases)
- [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jantimon/html-webpack-plugin/compare/v5.6.5...v5.6.6)

---
updated-dependencies:
- dependency-name: html-webpack-plugin
  dependency-version: 5.6.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-20 09:18:58 +11:00
dependabot[bot] 3c2b047a33 Bump @babel/core from 7.28.5 to 7.28.6
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.28.5 to 7.28.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.6/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 7.28.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-20 09:18:43 +11:00
dependabot[bot] b0cc3f0391 Bump webpack-bundle-analyzer from 5.1.1 to 5.2.0
Bumps [webpack-bundle-analyzer](https://github.com/webpack/webpack-bundle-analyzer) from 5.1.1 to 5.2.0.
- [Changelog](https://github.com/webpack/webpack-bundle-analyzer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-bundle-analyzer/commits)

---
updated-dependencies:
- dependency-name: webpack-bundle-analyzer
  dependency-version: 5.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-20 09:18:14 +11:00
dependabot[bot] dabc719cfd Bump webpack-dev-server from 5.2.2 to 5.2.3
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 5.2.2 to 5.2.3.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v5.2.2...v5.2.3)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-version: 5.2.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-20 09:17:09 +11:00
dependabot[bot] a67a855687 Bump react-router from 7.11.0 to 7.12.0
Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.11.0 to 7.12.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.12.0/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-14 11:14:54 +11:00
dependabot[bot] 704ed6c9d8 Bump webpack-bundle-analyzer from 5.1.0 to 5.1.1
Bumps [webpack-bundle-analyzer](https://github.com/webpack/webpack-bundle-analyzer) from 5.1.0 to 5.1.1.
- [Changelog](https://github.com/webpack/webpack-bundle-analyzer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-bundle-analyzer/compare/v5.1.0...v5.1.1)

---
updated-dependencies:
- dependency-name: webpack-bundle-analyzer
  dependency-version: 5.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-14 11:14:19 +11:00
dependabot[bot] 88aa68bc47 Bump socket.io-client from 4.8.1 to 4.8.3
Bumps [socket.io-client](https://github.com/socketio/socket.io) from 4.8.1 to 4.8.3.
- [Release notes](https://github.com/socketio/socket.io/releases)
- [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io/compare/socket.io-client@4.8.1...socket.io-client@4.8.3)

---
updated-dependencies:
- dependency-name: socket.io-client
  dependency-version: 4.8.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-02 18:37:32 +11:00
dependabot[bot] a2526ef845 Bump react-router from 7.10.1 to 7.11.0
Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.10.1 to 7.11.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.11.0/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-23 13:51:21 +11:00
dependabot[bot] 18ce64ca94 Bump webpack from 5.103.0 to 5.104.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.103.0 to 5.104.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.103.0...v5.104.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.104.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-23 13:50:54 +11:00
dependabot[bot] aaee9450b8 Bump react-dom from 19.2.1 to 19.2.3
Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 19.2.1 to 19.2.3.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.3/packages/react-dom)

---
updated-dependencies:
- dependency-name: react-dom
  dependency-version: 19.2.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-17 13:59:26 +11:00
dependabot[bot] 48a3eed3e6 Bump react from 19.2.1 to 19.2.3
Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) from 19.2.1 to 19.2.3.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.3/packages/react)

---
updated-dependencies:
- dependency-name: react
  dependency-version: 19.2.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-17 13:49:01 +11:00
Kayne Ruse c154f777b4 Updated copyright year 2025-12-10 11:48:23 +11:00
Kayne Ruse 20377359c6 webpack-bundle-analyzer is NOT optional 2025-12-10 11:28:03 +11:00
Kayne Ruse e259f9b1ba Removed the use 'timezone' in the generated 'configure-script.js' 2025-12-10 11:16:38 +11:00
Kayne Ruse 377fe8f605 Updated syntax for docker and CI files 2025-12-10 10:22:05 +11:00
Kayne Ruse fb52787b26 Updated webpack-bundle-analyzer to v5.1 2025-12-10 09:52:29 +11:00
Kayne Ruse 356d0a3638 Updated dependencies 2025-12-10 09:03:46 +11:00
dependabot[bot] 756680888b Bump react-router from 7.9.5 to 7.9.6
Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.9.5 to 7.9.6.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.9.6/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.9.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 08:06:07 +11:00
dependabot[bot] 63a9790265 Bump webpack from 5.102.1 to 5.103.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.102.1 to 5.103.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.102.1...v5.103.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.103.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 08:05:32 +11:00
dependabot[bot] edd60307e9 Bump html-webpack-plugin from 5.6.4 to 5.6.5
Bumps [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) from 5.6.4 to 5.6.5.
- [Release notes](https://github.com/jantimon/html-webpack-plugin/releases)
- [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jantimon/html-webpack-plugin/compare/v5.6.4...v5.6.5)

---
updated-dependencies:
- dependency-name: html-webpack-plugin
  dependency-version: 5.6.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 08:05:07 +11:00
dependabot[bot] ddf1fc7979 Bump nodemon from 3.1.10 to 3.1.11
Bumps [nodemon](https://github.com/remy/nodemon) from 3.1.10 to 3.1.11.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.1.10...v3.1.11)

---
updated-dependencies:
- dependency-name: nodemon
  dependency-version: 3.1.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 08:04:24 +11:00
dependabot[bot] 78dcaed0aa Bump react-router from 7.9.4 to 7.9.5
Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.9.4 to 7.9.5.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.9.5/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.9.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-05 06:38:09 +11:00
dependabot[bot] f93e1749f7 Bump @babel/preset-env from 7.28.3 to 7.28.5
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.28.3 to 7.28.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.5/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-version: 7.28.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-28 17:52:37 +11:00
dependabot[bot] 44a9dbfe13 Bump @babel/preset-react from 7.27.1 to 7.28.5
Bumps [@babel/preset-react](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-react) from 7.27.1 to 7.28.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.5/packages/babel-preset-react)

---
updated-dependencies:
- dependency-name: "@babel/preset-react"
  dependency-version: 7.28.5
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-28 17:47:27 +11:00
dependabot[bot] 225890dfd5 Bump @babel/core from 7.28.4 to 7.28.5
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.28.4 to 7.28.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.5/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 7.28.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-28 17:46:52 +11:00
dependabot[bot] baebd2d594 Bump webpack from 5.101.3 to 5.102.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.101.3 to 5.102.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.101.3...v5.102.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.102.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-12 22:27:46 +11:00
dependabot[bot] a2ef968ddf Bump react-router from 7.9.1 to 7.9.3
Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.9.1 to 7.9.3.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.9.3/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.9.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-12 22:23:28 +11:00
dependabot[bot] 88f44a412b Bump react-dom from 19.1.1 to 19.2.0
Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) from 19.1.1 to 19.2.0.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.0/packages/react-dom)

---
updated-dependencies:
- dependency-name: react-dom
  dependency-version: 19.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-12 22:20:26 +11:00
dependabot[bot] 09b08cd791 Bump dotenv from 17.2.2 to 17.2.3
Bumps [dotenv](https://github.com/motdotla/dotenv) from 17.2.2 to 17.2.3.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v17.2.2...v17.2.3)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 17.2.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-12 22:20:03 +11:00
Kayne Ruse 2964c1e448 Updated dependencies
* Removed 'react-router-dom' as no longer needed

Linked to:

* news-server v1.7.4
* auth-server v1.8.10
* chat-server v1.5.4
2025-09-18 10:48:24 +10:00
dependabot[bot] a2344947f8 Bump react-router-dom from 7.8.2 to 7.9.1
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 7.8.2 to 7.9.1.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.9.1/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-version: 7.9.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-18 10:08:51 +10:00
Kayne Ruse 52b755fe16 Bump dependencies 2025-09-10 14:02:40 +10:00
dependabot[bot] b1c31731ee Bump @babel/core from 7.28.0 to 7.28.4
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.28.0 to 7.28.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.4/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 7.28.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 12:58:02 +10:00
dependabot[bot] b8cc43c556 Bump html-webpack-plugin from 5.6.3 to 5.6.4
Bumps [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) from 5.6.3 to 5.6.4.
- [Release notes](https://github.com/jantimon/html-webpack-plugin/releases)
- [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jantimon/html-webpack-plugin/compare/v5.6.3...v5.6.4)

---
updated-dependencies:
- dependency-name: html-webpack-plugin
  dependency-version: 5.6.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 12:53:11 +10:00
dependabot[bot] 24b9ff3b5f Bump dotenv from 17.2.1 to 17.2.2
Bumps [dotenv](https://github.com/motdotla/dotenv) from 17.2.1 to 17.2.2.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v17.2.1...v17.2.2)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 17.2.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 12:49:46 +10:00
dependabot[bot] a38b8922a0 Bump @babel/preset-env from 7.28.0 to 7.28.3
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.28.0 to 7.28.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.3/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-version: 7.28.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 12:49:13 +10:00
dependabot[bot] fcedc00612 Bump react-router-dom from 7.7.1 to 7.8.2
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 7.7.1 to 7.8.2.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.8.2/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-version: 7.8.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-10 12:48:11 +10:00
Kayne Ruse da4316dccc Experimenting with dependabot 2025-09-09 18:48:01 +10:00
Kayne Ruse faacb8b8c7 Fixed CORS configuration 2025-07-29 14:40:24 +10:00
Kayne Ruse c48fcba994 Commented out MacOS check in configure-script.js 2025-07-29 12:49:50 +10:00
Kayne Ruse 56e3151db0 Fixed a missing import 2025-07-29 11:02:02 +10:00
Kayne Ruse 8aeaa46332 Updated dependencies, removed server demo 2025-07-26 04:03:32 +10:00
Ratstail91 cd34f0db5c Fully tested the remote database
Added default host for the admin account
2024-05-03 09:22:45 +10:00
Ratstail91 ab9e7456fb UNTESTED: Updated all dependencies 2024-05-03 07:07:32 +10:00
Ratstail91 90a4fc1a6a UNTESTED: Added database port as a configurable option
Also updated license field in package.json
2024-04-15 21:02:58 +10:00
Ratstail91 42fa9e27e7 Updated dependencies 2024-04-15 17:11:18 +10:00
Ratstail91 0c462d0e6c Tweaks to token provider 2023-12-24 06:43:42 +11:00
Ratstail91 fce018d19b Fixed Date API bug 2023-12-24 02:48:53 +11:00
Ratstail91 6717dbdef6 Missed a reference to page limit 2023-12-24 00:30:11 +11:00
Ratstail91 39c3e55bd5 Updated to support PAGE_SIZE in news-server 2023-12-23 23:40:10 +11:00
Ratstail91 c4c836edb7 Updated libraries, docker engine version, docker distro version
Also updated copyright year, since it's nearly time.
2023-12-23 22:40:41 +11:00
Kayne Ruse fe089e13f1 Gotcha! 2023-06-27 04:24:50 +10:00
28 changed files with 4595 additions and 3104 deletions
+2
View File
@@ -1,6 +1,8 @@
WEB_PORT=3000 WEB_PORT=3000
DB_HOSTNAME=localhost DB_HOSTNAME=localhost
DB_PORTNAME=3306
DB_DATABASE=template DB_DATABASE=template
DB_USERNAME=template DB_USERNAME=template
DB_PASSWORD=pikachu DB_PASSWORD=pikachu
+10
View File
@@ -0,0 +1,10 @@
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
+5 -2
View File
@@ -1,3 +1,5 @@
(I am now *mirroring* to github from my private gitea, because mircrosoft is evil.)
# MERN-template # MERN-template
A website template using the MERN stack. It is geared towards Persistent Browser Based Games (think neopets), but is flexible enough for a number of different uses. A website template using the MERN stack. It is geared towards Persistent Browser Based Games (think neopets), but is flexible enough for a number of different uses.
@@ -7,7 +9,7 @@ The primary technology involved is:
* React * React
* Nodejs * Nodejs
* MariaDB (with Sequelize) * MariaDB (with Sequelize)
* Docker (with docker-compose) * Docker (with docker compose)
This template is designed to support the development of persistent browser based games (PBBGs), but it, and it's component microservices, can be used elsewhere. This template is designed to support the development of persistent browser based games (PBBGs), but it, and it's component microservices, can be used elsewhere.
@@ -31,7 +33,7 @@ A clean install is this easy:
git clone https://github.com/krgamestudios/MERN-template.git git clone https://github.com/krgamestudios/MERN-template.git
cd MERN-template cd MERN-template
node configure-script.js node configure-script.js
docker-compose up --build docker compose up --build
``` ```
# Setup Development # Setup Development
@@ -44,6 +46,7 @@ To set up this template in development mode:
4. Run `cp .envdev .env` and enter your details into the `.env` file 4. Run `cp .envdev .env` and enter your details into the `.env` file
5. Execute `npm run dev` 5. Execute `npm run dev`
6. Navigate to `http://localhost:3001` in your web browser 6. Navigate to `http://localhost:3001` in your web browser
7. Repeat this process for each microservice (linked above)
# Features List # Features List
-3
View File
@@ -1,6 +1,3 @@
//polyfills
import 'regenerator-runtime/runtime';
import React from 'react'; import React from 'react';
import ReactDOM from 'react-dom/client'; import ReactDOM from 'react-dom/client';
+1 -1
View File
@@ -1,5 +1,5 @@
import React, { useEffect, useContext, useRef } from 'react'; import React, { useEffect, useContext, useRef } from 'react';
import { Link, Navigate } from 'react-router-dom'; import { Link, Navigate } from 'react-router';
import ApplyToBody from '../utilities/apply-to-body'; import ApplyToBody from '../utilities/apply-to-body';
+1 -1
View File
@@ -1,5 +1,5 @@
import React, { useContext, useRef } from 'react'; import React, { useContext, useRef } from 'react';
import { Link, Navigate } from 'react-router-dom'; import { Link, Navigate } from 'react-router';
import ApplyToBody from '../utilities/apply-to-body'; import ApplyToBody from '../utilities/apply-to-body';
+1 -1
View File
@@ -1,5 +1,5 @@
import React, { useContext, useRef } from 'react'; import React, { useContext, useRef } from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router';
import { TokenContext } from '../../utilities/token-provider'; import { TokenContext } from '../../utilities/token-provider';
+1 -1
View File
@@ -1,5 +1,5 @@
import React, { useContext, useRef } from 'react'; import React, { useContext, useRef } from 'react';
import { Link, useNavigate } from 'react-router-dom'; import { Link, useNavigate } from 'react-router';
import ApplyToBody from '../utilities/apply-to-body'; import ApplyToBody from '../utilities/apply-to-body';
+1 -1
View File
@@ -1,5 +1,5 @@
import React, { useContext, useRef } from 'react'; import React, { useContext, useRef } from 'react';
import { Link, useNavigate, useSearchParams } from 'react-router-dom'; import { Link, useNavigate, useSearchParams } from 'react-router';
import ApplyToBody from '../utilities/apply-to-body'; import ApplyToBody from '../utilities/apply-to-body';
+1 -1
View File
@@ -1,5 +1,5 @@
import React, { useContext, useRef } from 'react'; import React, { useContext, useRef } from 'react';
import { Link, useNavigate } from 'react-router-dom'; import { Link, useNavigate } from 'react-router';
import ApplyToBody from '../utilities/apply-to-body'; import ApplyToBody from '../utilities/apply-to-body';
+1 -1
View File
@@ -1,5 +1,5 @@
import React, { useContext } from 'react'; import React, { useContext } from 'react';
import { Link, Navigate } from 'react-router-dom'; import { Link, Navigate } from 'react-router';
import ApplyToBody from '../utilities/apply-to-body'; import ApplyToBody from '../utilities/apply-to-body';
+1 -1
View File
@@ -1,5 +1,5 @@
import React, { useContext } from 'react'; import React, { useContext } from 'react';
import { Link, Navigate } from 'react-router-dom'; import { Link, Navigate } from 'react-router';
import ApplyToBody from '../utilities/apply-to-body'; import ApplyToBody from '../utilities/apply-to-body';
@@ -18,7 +18,7 @@ const NewsEditor = props => {
//run once //run once
useEffect(() => { useEffect(() => {
fetch(`${process.env.NEWS_URI}/news/metadata?limit=999`) fetch(`${process.env.NEWS_URI}/news/metadata?page_size=999`)
.then(res => res.json()) .then(res => res.json())
.then(json => { .then(json => {
setArticles(json) setArticles(json)
+1 -1
View File
@@ -1,6 +1,6 @@
//react //react
import React, { useContext, Suspense, lazy } from 'react'; import React, { useContext, Suspense, lazy } from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom'; import { BrowserRouter, Routes, Route } from 'react-router';
import { TokenContext } from './utilities/token-provider'; import { TokenContext } from './utilities/token-provider';
//styling //styling
+1 -1
View File
@@ -1,5 +1,5 @@
import React, { useContext } from 'react'; import React, { useContext } from 'react';
import { Link, Navigate } from 'react-router-dom'; import { Link, Navigate } from 'react-router';
import ApplyToBody from './utilities/apply-to-body'; import ApplyToBody from './utilities/apply-to-body';
+1 -1
View File
@@ -1,5 +1,5 @@
import React, { useContext } from 'react'; import React, { useContext } from 'react';
import { Link, Navigate } from 'react-router-dom'; import { Link, Navigate } from 'react-router';
import ApplyToBody from './utilities/apply-to-body'; import ApplyToBody from './utilities/apply-to-body';
+1 -1
View File
@@ -1,5 +1,5 @@
import React from 'react'; import React from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router';
import ApplyToBody from './utilities/apply-to-body'; import ApplyToBody from './utilities/apply-to-body';
+2 -2
View File
@@ -1,5 +1,5 @@
import React from 'react'; import React from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router';
const Break = () => { const Break = () => {
return ( return (
@@ -13,7 +13,7 @@ const Break = () => {
const Footer = () => { const Footer = () => {
return ( return (
<footer> <footer>
<p className='text centered'>© <a href='https://krgamestudios.com'>KR Game Studios</a> 2020-2022<Break /><Link to='/privacypolicy'>Privacy Policy</Link><Break /><Link to='/credits'>Credits</Link></p> <p className='text centered'>© <a href='https://krgamestudios.com'>KR Game Studios</a> 2020-2025<Break /><Link to='/privacypolicy'>Privacy Policy</Link><Break /><Link to='/credits'>Credits</Link></p>
</footer> </footer>
); );
}; };
+1 -1
View File
@@ -1,5 +1,5 @@
import React from 'react'; import React from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router';
const Static = props => { const Static = props => {
return ( return (
+1 -1
View File
@@ -1,5 +1,5 @@
import React from 'react'; import React from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router';
const Static = props => { const Static = props => {
return ( return (
+13 -4
View File
@@ -1,5 +1,5 @@
import React, { useState, useEffect, createContext } from 'react'; import React, { useState, useEffect, createContext } from 'react';
import decode from 'jwt-decode'; import { jwtDecode } from 'jwt-decode';
export const TokenContext = createContext(); export const TokenContext = createContext();
@@ -31,7 +31,7 @@ const TokenProvider = props => {
let bearer = accessToken; let bearer = accessToken;
//if expired (10 minutes, normally) //if expired (10 minutes, normally)
const expired = new Date(decode(accessToken).exp + 600) < Date.now(); const expired = new Date(jwtDecode(accessToken).exp) < Date.now() / 1000;
if (expired) { if (expired) {
//BUGFIX: if logging out, just skip over the refresh token //BUGFIX: if logging out, just skip over the refresh token
@@ -48,6 +48,9 @@ const TokenProvider = props => {
//ping the auth server for a new access token //ping the auth server for a new access token
const response = await fetch(`${process.env.AUTH_URI}/auth/token`, { const response = await fetch(`${process.env.AUTH_URI}/auth/token`, {
method: 'POST', method: 'POST',
headers: {
'Authorization': `Bearer ${bearer}`
},
credentials: 'include' credentials: 'include'
}); });
@@ -79,13 +82,19 @@ const TokenProvider = props => {
//access the refreshed token via callback //access the refreshed token via callback
const tokenCallback = async (cb) => { const tokenCallback = async (cb) => {
//use this?
let bearer = accessToken;
//if expired (10 minutes, normally) //if expired (10 minutes, normally)
const expired = new Date(decode(accessToken).exp * 1000) < Date.now(); const expired = new Date(jwtDecode(accessToken).exp) < Date.now() / 1000;
if (expired) { if (expired) {
//ping the auth server for a new token //ping the auth server for a new token
const response = await fetch(`${process.env.AUTH_URI}/auth/token`, { const response = await fetch(`${process.env.AUTH_URI}/auth/token`, {
method: 'POST', method: 'POST',
headers: {
'Authorization': `Bearer ${bearer}`
},
credentials: 'include' credentials: 'include'
}); });
@@ -110,7 +119,7 @@ const TokenProvider = props => {
}; };
return ( return (
<TokenContext.Provider value={{ accessToken, setAccessToken, tokenFetch, tokenCallback, getPayload: () => decode(accessToken) }}> <TokenContext.Provider value={{ accessToken, setAccessToken, tokenFetch, tokenCallback, getPayload: () => jwtDecode(accessToken) }}>
{props.children} {props.children}
</TokenContext.Provider> </TokenContext.Provider>
) )
+128 -32
View File
@@ -36,7 +36,7 @@ const question = (prompt, def = null) => {
Currently, all microservices are mandatory; you'll have to mess with the result Currently, all microservices are mandatory; you'll have to mess with the result
and the source code if you wish to be more selective. Microservices currently and the source code if you wish to be more selective. Microservices currently
impelented are: implemented are:
* auth-server * auth-server
* news-server * news-server
@@ -46,24 +46,62 @@ See https://github.com/krgamestudios/MERN-template/wiki for help.
` `
); );
//determine local computer address for mac user vs everyone else // //determine local computer address for mac user vs everyone else
let macUser = ''; // let macUser = '';
while (macUser.toLowerCase() !== 'yes' && macUser.toLowerCase() !== 'no') { // while (macUser.toLowerCase() !== 'yes' && macUser.toLowerCase() !== 'no') {
macUser = await question('Will the MERN Template be running locally on a MacOS system? (yes or no)', ''); // macUser = await question('Will the MERN-Template be running locally on a MacOS system? (yes or no, this only alters startup.sql)', '');
} // }
const localAddress = macUser ? 'localhost' : '%'; // const localAddress = macUser === 'yes' ? 'localhost' : '%';
const localAddress = '%';
//project configuration //project configuration
const projectName = await question('Project Name', 'template'); const projectName = await question('Project Name', 'template');
const projectWebAddress = await question('Project Web Address', 'example.com'); const projectWebAddress = await question('Project Web Address', 'example.com');
const corsWebOrigin = await question('CORS Web Origin', `https://${projectWebAddress}`);
let projectDBLocation = '';
while (typeof projectDBLocation != 'string' || /^[le]/i.test(projectDBLocation[0]) == false) {
projectDBLocation = await question('Project [l]ocal or [e]xternal database?');
}
let projectDBHost = '';
let projectDBPort = '';
if (/^[l]/i.test(projectDBLocation[0])) {
projectDBHost = 'database';
projectDBPort = '3306';
}
else {
projectDBHost = await question('Project DB Host');
projectDBPort = await question('Project DB Port', '3306');
}
const projectDBUser = await question('Project DB Username', projectName); const projectDBUser = await question('Project DB Username', projectName);
const projectDBPass = await question('Project DB Password', 'pikachu'); const projectDBPass = await question('Project DB Password', 'pikachu');
//news configuration //news configuration
const newsName = await question('News Name', 'news'); const newsName = await question('News Name', 'news');
const newsWebAddress = await question('News Web Address', `${newsName}.${projectWebAddress}`); const newsWebAddress = await question('News Web Address', `${newsName}.${projectWebAddress}`);
let newsDBLocation = '';
while (typeof newsDBLocation != 'string' || /^[le]/i.test(newsDBLocation[0]) == false) {
newsDBLocation = await question('News [l]ocal or [e]xternal database?');
}
let newsDBHost = '';
let newsDBPort = '';
if (/^[l]/i.test(newsDBLocation[0])) {
newsDBHost = 'database';
newsDBPort = '3306';
}
else {
newsDBHost = await question('News DB Host');
newsDBPort = await question('News DB Port', '3306');
}
const newsDBUser = await question('News DB Username', newsName); const newsDBUser = await question('News DB Username', newsName);
const newsDBPass = await question('News DB Password', 'venusaur'); const newsDBPass = await question('News DB Password', 'venusaur');
@@ -72,6 +110,24 @@ See https://github.com/krgamestudios/MERN-template/wiki for help.
const authWebAddress = await question('Auth Web Address', `${authName}.${projectWebAddress}`); const authWebAddress = await question('Auth Web Address', `${authName}.${projectWebAddress}`);
const authPostValidationHookArray = await question('Auth Post Validation Hook Array', ''); const authPostValidationHookArray = await question('Auth Post Validation Hook Array', '');
const authResetAddress = await question('Auth Reset Addr', `${projectWebAddress}/reset`); const authResetAddress = await question('Auth Reset Addr', `${projectWebAddress}/reset`);
let authDBLocation = '';
while (typeof authDBLocation != 'string' || /^[le]/i.test(authDBLocation[0]) == false) {
authDBLocation = await question('Auth [l]ocal or [e]xternal database?');
}
let authDBHost = '';
let authDBPort = '';
if (/^[l]/i.test(authDBLocation[0])) {
authDBHost = 'database';
authDBPort = '3306';
}
else {
authDBHost = await question('Auth DB Host');
authDBPort = await question('Auth DB Port', '3306');
}
const authDBUser = await question('Auth DB Username', authName); const authDBUser = await question('Auth DB Username', authName);
const authDBPass = await question('Auth DB Password', 'charizard'); const authDBPass = await question('Auth DB Password', 'charizard');
@@ -83,6 +139,24 @@ See https://github.com/krgamestudios/MERN-template/wiki for help.
//chat goes here //chat goes here
const chatName = await question('Chat Name', 'chat'); const chatName = await question('Chat Name', 'chat');
const chatWebAddress = await question('Chat Web Address', `${chatName}.${projectWebAddress}`); const chatWebAddress = await question('Chat Web Address', `${chatName}.${projectWebAddress}`);
let chatDBLocation = '';
while (typeof chatDBLocation != 'string' || /^[le]/i.test(chatDBLocation[0]) == false) {
chatDBLocation = await question('Chat [l]ocal or [e]xternal database?');
}
let chatDBHost = '';
let chatDBPort = '';
if (/^[l]/i.test(chatDBLocation[0])) {
chatDBHost = 'database';
chatDBPort = '3306';
}
else {
chatDBHost = await question('Chat DB Host');
chatDBPort = await question('Chat DB Port', '3306');
}
const chatDBUser = await question('Chat DB Username', chatName); const chatDBUser = await question('Chat DB Username', chatName);
const chatDBPass = await question('Chat DB Password', 'blastoise'); const chatDBPass = await question('Chat DB Password', 'blastoise');
@@ -99,32 +173,34 @@ See https://github.com/krgamestudios/MERN-template/wiki for help.
//MUST be at least 8 chars //MUST be at least 8 chars
let tmpPass = ''; let tmpPass = '';
let tmpHost = '';
while (defaultUser && tmpPass.length < 8) { while (defaultUser && tmpPass.length < 8) {
console.log('--All passwords must be at least 8 characters long--'); console.log('--All passwords must be at least 8 characters long--');
tmpPass = await question('Default Admin Pass', ''); tmpPass = await question('Default Admin Pass', '');
tmpHost = await question('Default Admin Host', '');
} }
const defaultPass = tmpPass; const defaultPass = tmpPass;
const defaultHost = tmpHost;
if (defaultUser) { if (defaultUser) {
console.log(`Default user email will be: ${defaultUser}@${authWebAddress}`); console.log(`Default user email will be: ${defaultUser}@${defaultHost}`);
} }
//traefic configuration //traefic configuration
const supportEmail = await question('Support Email', emailUser); const supportEmail = await question('Support Email', emailUser);
//misc. configuration //misc. configuration
const projectPort = 3000; const projectPort = '3000';
const newsPort = 3100; const newsPort = '3100';
const authPort = 3200; const authPort = '3200';
const chatPort = 3300; const chatPort = '3300';
const ymlfile = ` const ymlfile = `
version: "3.6"
services: services:
${projectName}: ${projectName}:
build: . build: .
ports: ports:
- "${projectPort}" - ${projectPort}
labels: labels:
- traefik.enable=true - traefik.enable=true
- traefik.http.routers.${projectName}router.rule=Host(\`${projectWebAddress}\`) - traefik.http.routers.${projectName}router.rule=Host(\`${projectWebAddress}\`)
@@ -133,8 +209,10 @@ services:
- traefik.http.routers.${projectName}router.service=${projectName}service@docker - traefik.http.routers.${projectName}router.service=${projectName}service@docker
- traefik.http.services.${projectName}service.loadbalancer.server.port=${projectPort} - traefik.http.services.${projectName}service.loadbalancer.server.port=${projectPort}
environment: environment:
- WEB_ORIGIN=${corsWebOrigin}
- WEB_PORT=${projectPort} - WEB_PORT=${projectPort}
- DB_HOSTNAME=database - DB_HOSTNAME=${projectDBHost}
- DB_PORTNAME=${projectDBPort}
- DB_DATABASE=${projectName} - DB_DATABASE=${projectName}
- DB_USERNAME=${projectDBUser} - DB_USERNAME=${projectDBUser}
- DB_PASSWORD=${projectDBPass} - DB_PASSWORD=${projectDBPass}
@@ -143,10 +221,12 @@ services:
- AUTH_URI=https://${authWebAddress} - AUTH_URI=https://${authWebAddress}
- CHAT_URI=https://${chatWebAddress} - CHAT_URI=https://${chatWebAddress}
- SECRET_ACCESS=${accessToken} - SECRET_ACCESS=${accessToken}
volumes:
- /etc/localtime:/etc/localtime:ro
networks: networks:
- app-network - app-network
depends_on: depends_on:${ projectDBHost != 'database' ? '' : `
- database - database`}
- traefik - traefik
${newsName}: ${newsName}:
@@ -161,18 +241,22 @@ services:
- traefik.http.routers.${newsName}router.service=${newsName}service@docker - traefik.http.routers.${newsName}router.service=${newsName}service@docker
- traefik.http.services.${newsName}service.loadbalancer.server.port=${newsPort} - traefik.http.services.${newsName}service.loadbalancer.server.port=${newsPort}
environment: environment:
- WEB_ORIGIN=${corsWebOrigin}
- WEB_PORT=${newsPort} - WEB_PORT=${newsPort}
- DB_HOSTNAME=database - DB_HOSTNAME=${newsDBHost}
- DB_PORTNAME=${newsDBPort}
- DB_DATABASE=${newsName} - DB_DATABASE=${newsName}
- DB_USERNAME=${newsDBUser} - DB_USERNAME=${newsDBUser}
- DB_PASSWORD=${newsDBPass} - DB_PASSWORD=${newsDBPass}
- DB_TIMEZONE=${dbTimeZone} - DB_TIMEZONE=${dbTimeZone}
- QUERY_LIMIT=10 - PAGE_SIZE=10
- SECRET_ACCESS=${accessToken} - SECRET_ACCESS=${accessToken}
volumes:
- /etc/localtime:/etc/localtime:ro
networks: networks:
- app-network - app-network
depends_on: depends_on:${ newsDBHost != 'database' ? '' : `
- database - database`}
- traefik - traefik
${authName}: ${authName}:
@@ -187,12 +271,14 @@ services:
- traefik.http.routers.${authName}router.service=${authName}service@docker - traefik.http.routers.${authName}router.service=${authName}service@docker
- traefik.http.services.${authName}service.loadbalancer.server.port=${authPort} - traefik.http.services.${authName}service.loadbalancer.server.port=${authPort}
environment: environment:
- WEB_ORIGIN=${corsWebOrigin}
- WEB_PROTOCOL=https - WEB_PROTOCOL=https
- WEB_ADDRESS=${authWebAddress} - WEB_ADDRESS=${authWebAddress}
- HOOK_POST_VALIDATION_ARRAY=${authPostValidationHookArray} - HOOK_POST_VALIDATION_ARRAY=${authPostValidationHookArray}
- WEB_RESET_ADDRESS=${authResetAddress} - WEB_RESET_ADDRESS=${authResetAddress}
- WEB_PORT=${authPort} - WEB_PORT=${authPort}
- DB_HOSTNAME=database - DB_HOSTNAME=${authDBHost}
- DB_PORTNAME=${authDBPort}
- DB_DATABASE=${authName} - DB_DATABASE=${authName}
- DB_USERNAME=${authDBUser} - DB_USERNAME=${authDBUser}
- DB_PASSWORD=${authDBPass} - DB_PASSWORD=${authDBPass}
@@ -202,13 +288,16 @@ services:
- MAIL_PASSWORD=${emailPass} - MAIL_PASSWORD=${emailPass}
- MAIL_PHYSICAL=${emailPhysical} - MAIL_PHYSICAL=${emailPhysical}
- ADMIN_DEFAULT_USERNAME=${defaultUser} - ADMIN_DEFAULT_USERNAME=${defaultUser}
- ADMIN_DEFAULT_HOSTNAME=${defaultHost}
- ADMIN_DEFAULT_PASSWORD=${defaultPass} - ADMIN_DEFAULT_PASSWORD=${defaultPass}
- SECRET_ACCESS=${accessToken} - SECRET_ACCESS=${accessToken}
- SECRET_REFRESH=${refreshToken} - SECRET_REFRESH=${refreshToken}
volumes:
- /etc/localtime:/etc/localtime:ro
networks: networks:
- app-network - app-network
depends_on: depends_on:${ authDBHost != 'database' ? '' : `
- database - database`}
- traefik - traefik
${chatName}: ${chatName}:
@@ -223,19 +312,24 @@ services:
- traefik.http.routers.${chatName}router.service=${chatName}service@docker - traefik.http.routers.${chatName}router.service=${chatName}service@docker
- traefik.http.services.${chatName}service.loadbalancer.server.port=${chatPort} - traefik.http.services.${chatName}service.loadbalancer.server.port=${chatPort}
environment: environment:
- WEB_ORIGIN=${corsWebOrigin}
- WEB_PORT=${chatPort} - WEB_PORT=${chatPort}
- DB_HOSTNAME=database - DB_HOSTNAME=${chatDBHost}
- DB_PORTNAME=${chatDBPort}
- DB_DATABASE=${chatName} - DB_DATABASE=${chatName}
- DB_USERNAME=${chatDBUser} - DB_USERNAME=${chatDBUser}
- DB_PASSWORD=${chatDBPass} - DB_PASSWORD=${chatDBPass}
- DB_TIMEZONE=${dbTimeZone} - DB_TIMEZONE=${dbTimeZone}
- SECRET_ACCESS=${accessToken} - SECRET_ACCESS=${accessToken}
volumes:
- /etc/localtime:/etc/localtime:ro
networks: networks:
- app-network - app-network
depends_on: depends_on:${ chatDBHost != 'database' ? '' : `
- database - database`}
- traefik - traefik
${ [projectDBHost, newsDBHost, authDBHost, chatDBHost].some(x => x == "database") == false ? '' : `
database: database:
image: mariadb image: mariadb
restart: always restart: always
@@ -244,11 +338,12 @@ services:
volumes: volumes:
- ./mysql:/var/lib/mysql - ./mysql:/var/lib/mysql
- ./startup.sql:/docker-entrypoint-initdb.d/startup.sql:ro - ./startup.sql:/docker-entrypoint-initdb.d/startup.sql:ro
- /etc/localtime:/etc/localtime:ro
networks: networks:
- app-network - app-network
`}
traefik: traefik:
image: traefik:v2.4 image: traefik:latest
container_name: traefik container_name: traefik
command: command:
- --log.level=ERROR - --log.level=ERROR
@@ -269,6 +364,7 @@ services:
volumes: volumes:
- ./letsencrypt:/letsencrypt - ./letsencrypt:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro - /var/run/docker.sock:/var/run/docker.sock:ro
- /etc/localtime:/etc/localtime:ro
networks: networks:
- app-network - app-network
@@ -278,12 +374,12 @@ networks:
`; `;
const dockerfile = ` const dockerfile = `
FROM node:18-bullseye-slim FROM node:22-bookworm-slim
WORKDIR "/app" WORKDIR "/app"
COPY . /app COPY . /app
RUN mkdir /app/public RUN mkdir -p /app/public
RUN chown node:node /app/public RUN chown node:node /app/public
RUN npm install --production RUN npm install --omit=dev
EXPOSE ${projectPort} EXPOSE ${projectPort}
USER node USER node
ENTRYPOINT ["bash", "-c"] ENTRYPOINT ["bash", "-c"]
+4368 -2982
View File
File diff suppressed because it is too large Load Diff
+27 -34
View File
@@ -1,6 +1,6 @@
{ {
"name": "mern-template", "name": "mern-template",
"version": "1.4.3", "version": "1.5.5",
"description": "A website template using the MERN stack.", "description": "A website template using the MERN stack.",
"main": "server/server.js", "main": "server/server.js",
"scripts": { "scripts": {
@@ -10,10 +10,7 @@
"build:client": "webpack --env=production --config webpack.config.js", "build:client": "webpack --env=production --config webpack.config.js",
"dev": "concurrently npm:dev:server npm:dev:client", "dev": "concurrently npm:dev:server npm:dev:client",
"dev:server": "nodemon --ext js,jsx,json --ignore 'node_modules/*'", "dev:server": "nodemon --ext js,jsx,json --ignore 'node_modules/*'",
"dev:client": "webpack serve --env=development --config webpack.config.js", "dev:client": "webpack serve --config webpack.config.js",
"local": "concurrently npm:local:server npm:local:client",
"local:server": "nodemon --ext js,jsx,json --ignore 'node_modules/*'",
"local:client": "webpack serve --env=local --config webpack.config.js",
"analyze": "webpack --env=production --env=analyze --config webpack.config.js" "analyze": "webpack --env=production --env=analyze --config webpack.config.js"
}, },
"repository": { "repository": {
@@ -21,43 +18,39 @@
"url": "git+https://github.com/KRGameStudios/MERN-template.git" "url": "git+https://github.com/KRGameStudios/MERN-template.git"
}, },
"author": "Kayne Ruse", "author": "Kayne Ruse",
"license": "ISC", "license": "Zlib",
"bugs": { "bugs": {
"url": "https://github.com/KRGameStudios/MERN-template/issues" "url": "https://github.com/KRGameStudios/MERN-template/issues"
}, },
"homepage": "https://github.com/KRGameStudios/MERN-template#readme", "homepage": "https://github.com/KRGameStudios/MERN-template#readme",
"dependencies": { "dependencies": {
"@babel/core": "^7.22.5", "@babel/core": "^7.29.0",
"@babel/preset-env": "^7.22.5", "@babel/preset-env": "^7.29.2",
"@babel/preset-react": "^7.22.5", "@babel/preset-react": "^7.28.5",
"babel-loader": "^9.1.2", "babel-loader": "^10.1.1",
"clean-webpack-plugin": "^4.0.0", "clean-webpack-plugin": "^4.0.0",
"compression-webpack-plugin": "^10.0.0", "compression-webpack-plugin": "^12.0.0",
"concurrently": "^7.6.0", "concurrently": "^9.2.1",
"css-loader": "^6.8.1", "css-loader": "^7.1.4",
"dateformat": "^5.0.3", "dateformat": "^5.0.3",
"dotenv": "^16.3.1", "dotenv": "^17.4.1",
"express": "^4.18.2", "express": "^5.2.1",
"html-webpack-plugin": "^5.5.3", "html-webpack-plugin": "^5.6.6",
"jwt-decode": "^3.1.2", "jwt-decode": "^4.0.0",
"mariadb": "^3.2.0", "mariadb": "^3.5.2",
"react": "^18.2.0", "react": "^19.2.4",
"react-dom": "^18.2.0", "react-dom": "^19.2.5",
"react-router": "^6.3.0", "react-router": "^7.14.0",
"react-router-dom": "^6.14.0", "react-select": "^5.10.2",
"react-select": "^5.7.3", "sequelize": "^6.37.8",
"sequelize": "^6.32.1", "socket.io-client": "^4.8.3",
"socket.io-client": "^4.7.0", "style-loader": "^4.0.0",
"style-loader": "^3.3.3", "webpack": "^5.106.1",
"webpack": "^5.88.0", "webpack-bundle-analyzer": "^5.3.0",
"webpack-bundle-analyzer": "^4.9.0", "webpack-cli": "^6.0.1"
"webpack-cli": "^5.1.4"
}, },
"devDependencies": { "devDependencies": {
"nodemon": "^2.0.22", "nodemon": "^3.1.14",
"webpack-dev-server": "^4.15.1" "webpack-dev-server": "^5.2.3"
},
"overrides": {
"semver": "^7.5.2"
} }
} }
+1 -2
View File
@@ -2,11 +2,10 @@ const Sequelize = require('sequelize');
const sequelize = new Sequelize(process.env.DB_DATABASE, process.env.DB_USERNAME, process.env.DB_PASSWORD, { const sequelize = new Sequelize(process.env.DB_DATABASE, process.env.DB_USERNAME, process.env.DB_PASSWORD, {
host: process.env.DB_HOSTNAME, host: process.env.DB_HOSTNAME,
port: process.env.DB_PORTNAME,
dialect: 'mariadb', dialect: 'mariadb',
timezone: process.env.DB_TIMEZONE, timezone: process.env.DB_TIMEZONE,
logging: process.env.DB_LOGGING ? console.log : false logging: process.env.DB_LOGGING ? console.log : false
}); });
sequelize.sync();
module.exports = sequelize; module.exports = sequelize;
+4 -3
View File
@@ -13,14 +13,14 @@ const server = require('http').Server(app);
app.use(express.json()); app.use(express.json());
//handle compressed files (middleware) //handle compressed files (middleware)
app.get('*.js', (req, res, next) => { app.get('/{*any}.js', (req, res, next) => {
req.url = req.url + '.gz'; req.url = req.url + '.gz';
res.set('Content-Encoding', 'gzip'); res.set('Content-Encoding', 'gzip');
res.set('Content-Type', 'text/javascript'); res.set('Content-Type', 'text/javascript');
next(); next();
}); });
app.get('*.css', (req, res, next) => { app.get('/{*any}.css', (req, res, next) => {
req.url = req.url + '.gz'; req.url = req.url + '.gz';
res.set('Content-Encoding', 'gzip'); res.set('Content-Encoding', 'gzip');
res.set('Content-Type', 'text/css'); res.set('Content-Type', 'text/css');
@@ -34,7 +34,7 @@ const database = require('./database');
app.use('/', express.static(path.resolve(__dirname, '..', 'public'))); app.use('/', express.static(path.resolve(__dirname, '..', 'public')));
//fallback to the index file //fallback to the index file
app.get('*', (req, res) => { app.get('/{*any}', (req, res) => {
res.sendFile(path.resolve(__dirname, '..', 'public' , 'index.html')); res.sendFile(path.resolve(__dirname, '..', 'public' , 'index.html'));
}); });
@@ -42,4 +42,5 @@ app.get('*', (req, res) => {
server.listen(process.env.WEB_PORT || 3000, async (err) => { server.listen(process.env.WEB_PORT || 3000, async (err) => {
await database.sync(); await database.sync();
console.log(`listening to localhost:${process.env.WEB_PORT || 3000}`); console.log(`listening to localhost:${process.env.WEB_PORT || 3000}`);
console.log(`database located at ${process.env.DB_HOSTNAME || '<default>'}:${process.env.DB_PORTNAME || '<default>'}`);
}); });
+4 -9
View File
@@ -1,10 +1,5 @@
#This file only needs to be run once, during initial development setup #use this while debugging
#This file isnt needed for actual deployment CREATE DATABASE template;
CREATE USER 'template'@'%' IDENTIFIED BY 'pikachu';
#Create the development database
CREATE DATABASE IF NOT EXISTS template;
USE template;
#Create the database user
CREATE USER IF NOT EXISTS 'template'@'%' IDENTIFIED BY 'pikachu';
GRANT ALL PRIVILEGES ON template.* TO 'template'@'%'; GRANT ALL PRIVILEGES ON template.* TO 'template'@'%';
+9 -9
View File
@@ -9,7 +9,7 @@ const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
const path = require('path'); const path = require('path');
//the exported config function //the exported config function
module.exports = ({ production, development, local, analyze }) => { module.exports = ({ production, analyze }) => {
return { return {
mode: production ? "production" : "development", mode: production ? "production" : "development",
entry: path.resolve(__dirname, 'client', 'client.jsx'), entry: path.resolve(__dirname, 'client', 'client.jsx'),
@@ -33,7 +33,6 @@ module.exports = ({ production, development, local, analyze }) => {
loader: 'babel-loader', loader: 'babel-loader',
options: { options: {
presets: ['@babel/preset-env', '@babel/preset-react'], presets: ['@babel/preset-env', '@babel/preset-react'],
plugins: ['@babel/plugin-syntax-dynamic-import']
} }
} }
] ]
@@ -48,9 +47,9 @@ module.exports = ({ production, development, local, analyze }) => {
new DefinePlugin({ new DefinePlugin({
'process.env': { 'process.env': {
'PRODUCTION': production, 'PRODUCTION': production,
'NEWS_URI': production ? `"${process.env.NEWS_URI}"` : development ? '"https://dev-news.krgamestudios.com"' : '"http://localhost:3100"', 'NEWS_URI': production ? `"${process.env.NEWS_URI}"` : '"http://localhost:3100"',
'AUTH_URI': production ? `"${process.env.AUTH_URI}"` : development ? '"https://dev-auth.krgamestudios.com"' : '"http://localhost:3200"', 'AUTH_URI': production ? `"${process.env.AUTH_URI}"` : '"http://localhost:3200"',
'CHAT_URI': production ? `"${process.env.CHAT_URI}"` : development ? '"https://dev-chat.krgamestudios.com"' : '"http://localhost:3300"', 'CHAT_URI': production ? `"${process.env.CHAT_URI}"` : '"http://localhost:3300"',
} }
}), }),
new CleanWebpackPlugin({ new CleanWebpackPlugin({
@@ -91,11 +90,12 @@ module.exports = ({ production, development, local, analyze }) => {
} }
}, },
proxy: { proxy: [
'/api': { {
target: 'http://localhost:3000' context: ['/api'],
target: 'http://localhost:3000',
} }
}, ],
static: '/public', static: '/public',