117 Commits

Author SHA1 Message Date
70e376c939 fix(build): removed the * at the end of source so no more errors 2025-07-16 06:56:13 -05:00
62a1ad83ab build(wrapper): added the wrapper to our build script 2025-07-16 06:55:52 -05:00
47c5a47ffa test(scripts): added in a go script to test my other scripts 2025-07-16 06:49:24 -05:00
9bd6e1fc04 feat(scripts): added in iis contorls 2025-07-16 06:48:43 -05:00
73600055fc fix(release script): correction to the script so it now puts the package to correct location 2025-07-15 10:39:20 -05:00
80907a89a9 refactor(backend): changes to how the api incorrect routes are handled 2025-07-14 21:58:01 -05:00
2472374157 refactor(zips): changes on how the compiler dose the zip to keep it cleaner 2025-07-14 21:57:04 -05:00
b72a10db94 refactor(build): changed the wording to understand the error when the .env missing 2025-07-14 21:56:16 -05:00
d097988dfd feat(lstwrapper): added a c# wrapper so we can run on windows server and get ssl
this will also allow us to still use docker
2025-07-14 21:55:25 -05:00
cb9e8e1107 fix(docker compose): corrected the data path wording and added a build option in 2025-07-14 21:54:18 -05:00
7bb7df788e fix(docker): corrections to the docker script
as we run it in the root we dont want to have it go up 2 levels only be at the same level
2025-07-12 21:50:58 -05:00
f26cf6404e ci(docker): changes to remove cache so we are always creating a new build 2025-07-12 21:42:25 -05:00
7f867b02d6 refactor(backend): changes to have a catch all and not return a 404 always 2025-07-12 21:41:47 -05:00
8c04e7ace5 chore(reset): reset everything after the building and commmit and changelog errors 2025-07-12 18:05:36 -05:00
74a05a39e1 chore(release): v0.0.3-alpha.22 2025-07-12 17:45:39 -05:00
f11e402d16 fix(changelog): moved packages 2025-07-12 17:44:53 -05:00
19130e361d chore(release): v0.0.3-alpha.21 2025-07-12 17:44:03 -05:00
af0670b9a0 chore(release): v0.0.3-alpha.20 2025-07-12 17:43:42 -05:00
a236d96971 fix(package.json): corrections to the commit changelog stuff 2025-07-12 17:43:32 -05:00
2fa142708e chore(release): v0.0.3-alpha.19 2025-07-12 17:37:23 -05:00
71b5017c82 fix(changelog): readd the header back in 2025-07-12 17:37:13 -05:00
ac9ce206dd chore(release): v0.0.3-alpha.18 2025-07-12 17:33:08 -05:00
2b9a859e7e fix(build): minor change to the build system to trigger new tags 2025-07-12 17:32:59 -05:00
1e3b755b88 chore(release): v0.0.3-alpha.17 2025-07-12 17:31:14 -05:00
46579ac6d9 fix(changelog): changes here 2025-07-12 17:30:12 -05:00
cded5982d4 chore(release): v0.0.3-alpha.16 2025-07-12 17:28:00 -05:00
e6041b03ee fix(h): sssdasjhksdf 2025-07-12 17:27:43 -05:00
7cbc8c8b84 chore(release): v0.0.3-alpha.15 2025-07-12 17:24:36 -05:00
7b1a0b054b fix(d): d 2025-07-12 17:23:57 -05:00
d6dce0908e chore(release): v0.0.3-alpha.14 2025-07-12 17:23:13 -05:00
3661cf5c25 fix(changelog): more change log stuff 2025-07-12 17:22:39 -05:00
b25debabb2 chore(release): v0.0.3-alpha.13 2025-07-12 17:20:46 -05:00
2646ecbdd2 fix(changes to the changlog): something 2025-07-12 17:18:17 -05:00
d7bfeabed1 chore(release): v0.0.3-alpha.12 2025-07-12 17:16:47 -05:00
83305031fd fix(release): re 2025-07-12 17:13:14 -05:00
12c338581a chore(release): v0.0.3-alpha.11 2025-07-12 17:09:41 -05:00
8044547488 fix(bogus): this is crap 2025-07-12 17:09:25 -05:00
2397fc2004 chore(release): v0.0.3-alpha.10 2025-07-12 17:05:41 -05:00
120ee75bf7 fix(jfhsldkfhja): ghjskdhkflasfdfg 2025-07-12 17:05:25 -05:00
8b814222c8 chore(release): v0.0.3-alpha.9 2025-07-12 17:03:47 -05:00
c81ae4ee1c fix(fucl): fuck 2025-07-12 17:03:32 -05:00
9e6d82b44d chore(release): v0.0.3-alpha.8 2025-07-12 17:02:14 -05:00
10fcdbe89f fix(change): fuck 2025-07-12 17:01:57 -05:00
5342e60811 chore(release): v0.0.3-alpha.7 2025-07-12 17:00:07 -05:00
ab1d8fa556 fix(release): changes 2025-07-12 16:59:48 -05:00
84091ecdba chore(release): v0.0.3-alpha.6 2025-07-12 16:58:04 -05:00
1ed753506d fix(release): more changes 2025-07-12 16:57:49 -05:00
3d5a8ee464 chore(release): v0.0.3-alpha.5 2025-07-12 16:56:24 -05:00
1980a184e4 fix(release): changes to the changelog portion so its no longer a link 2025-07-12 16:56:08 -05:00
3d803dffdb chore(release): v0.0.3-alpha.4 2025-07-12 16:51:06 -05:00
e3cba33ea1 refactor(frontend): just a change to the frontend 2025-07-12 16:50:09 -05:00
b07c33e5a3 refactor(backend): just a change for this commit stuff 2025-07-12 16:49:51 -05:00
8ba663c038 chore(release): v0.0.3-alpha.3 2025-07-12 16:47:28 -05:00
6a7fcadd2f fix(release): more fixes 2025-07-12 16:47:22 -05:00
710bdd878a chore(release): v0.0.3-alpha.2 2025-07-12 16:40:11 -05:00
aeb154ad83 c 2025-07-12 16:40:04 -05:00
d4575b15a4 chore(release): v0.0.3-alpha.1 2025-07-12 16:38:14 -05:00
1172fe8a7c chore(release): v0.0.3-alpha.0 2025-07-12 16:37:53 -05:00
b7809c94d9 fix(release): something 2025-07-12 16:37:45 -05:00
b82438f2f5 c 2025-07-12 16:35:12 -05:00
78527307b2 chore(release): v0.0.2 2025-07-12 16:34:45 -05:00
211bad836e c 2025-07-12 16:34:39 -05:00
96292589b3 chore(release): v0.0.2-alpha.15 2025-07-12 16:33:30 -05:00
799be62f3c fix(release): cahgnes 2025-07-12 16:33:25 -05:00
81bcc648e3 chore(release): v0.0.2-alpha.14 2025-07-12 16:31:19 -05:00
2386a14d7a fix(release): corrections 2025-07-12 16:31:13 -05:00
5df8c092be chore(release): v0.0.2-alpha.13 2025-07-12 16:29:08 -05:00
f06b621b8d fix(release): conflicting tags 2025-07-12 16:28:47 -05:00
cd064539eb chore(release): v0.0.2-alpha.12 2025-07-12 16:24:23 -05:00
cf2484705a fix(release): removed the intial before bump 2025-07-12 16:24:08 -05:00
afab215a9e fix(release): change to get the release to build then release stuff 2025-07-12 16:20:40 -05:00
6c7f17893b chore(release): v0.0.2-alpha.11 2025-07-12 16:09:14 -05:00
a282940d9b fix(release): var not defined 2025-07-12 16:08:37 -05:00
36b1df7ef8 chore(release): v0.0.2-alpha.10 2025-07-12 16:07:44 -05:00
dc4beb2d27 fix(release): error in function 2025-07-12 16:07:23 -05:00
3203f54ccd chore(release): v0.0.2-alpha.9 2025-07-12 16:06:01 -05:00
f429bd43ab fix(release): checking the build file failes but not sure why 2025-07-12 16:05:33 -05:00
f7da816a2c chore(release): v0.0.2-alpha.8 2025-07-12 16:02:21 -05:00
fdf5e257c6 build(build): linked everything together 2025-07-12 16:01:51 -05:00
8cb416ecc8 ci(default): added in default configs so they work across everything 2025-07-12 15:59:33 -05:00
2c265d79cb chore(release): v0.0.2-alpha.7 2025-07-12 15:56:45 -05:00
c0aa64db63 fix(relrease): maybe finally got it 2025-07-12 15:56:15 -05:00
8622408e0b chore(release): v0.0.2-alpha.6 2025-07-12 15:53:49 -05:00
6fc69fc6bc fix(release fixes): more fixes 2025-07-12 15:52:58 -05:00
6779d1c346 chore(release): v0.0.2-alpha.5 2025-07-12 15:50:56 -05:00
65873bd31f fix(release): more fixes 2025-07-12 15:50:40 -05:00
5948c5cfed chore(release): v0.0.2-alpha.4 2025-07-12 15:42:41 -05:00
494ee3f58e fix(package): added changes to the package.json so we see the release stuff 2025-07-12 15:42:20 -05:00
d266dbde68 chore(release): v0.0.2-alpha.3 2025-07-12 15:38:17 -05:00
5b7f9f2c48 fix(release): more bug fixes 2025-07-12 15:38:09 -05:00
0a9ae1002c chore(release): v0.0.2-alpha.2 2025-07-12 15:36:22 -05:00
a087929f58 chore(release): v0.0.2-alpha.1 2025-07-12 15:36:16 -05:00
f83de9baa2 chore(release): v0.0.2-alpha.0 2025-07-12 15:35:47 -05:00
233298daa5 fix(release): more work on the release stuff 2025-07-12 15:35:24 -05:00
4b0028f7d7 chore(release): v0.0.2-alpha.2 2025-07-12 15:30:51 -05:00
f33554ed97 fix(releases): more fun release stuff 2025-07-12 15:30:44 -05:00
4b9a2254df chore(release): v0.0.2-alpha.1 2025-07-12 15:25:20 -05:00
30b39b836a fix(release): removed version from being passed over 2025-07-12 15:25:02 -05:00
8b40d3f69b chore(release): v0.0.2-alpha.0 2025-07-12 15:21:58 -05:00
09e5fdf209 fix(package): made changes to get the correct alpha passed over in the prerelease stuff 2025-07-12 15:21:43 -05:00
772463e579 ci(pakcage.json): missing plugin 2025-07-12 15:16:07 -05:00
86647034c8 fix(release it): type in how i wrote the release-it file 2025-07-12 15:13:15 -05:00
01e2d404fb refactor(backend): change to just get a version bump 2025-07-12 14:59:09 -05:00
e084663f19 fix(releaseit): changes to get the version to update 2025-07-12 14:54:24 -05:00
c680152004 fix(releaseit): changes to get it to actaully run 2025-07-12 14:52:05 -05:00
e08195177d refactor(package.json): added in prerelease so we can keep it as alpha for now 2025-07-12 14:48:35 -05:00
587f1eb3a2 fix(releases): a few more tweaks to the releasing 2025-07-12 14:46:47 -05:00
508aab3417 build(changelog): commited change log 2025-07-12 14:42:26 -05:00
18aa9e7670 fix(releases): corrections to reduce the build number to be true 2025-07-12 14:41:35 -05:00
8141c6ab69 fix(package json): correction to the version 2025-07-12 14:41:10 -05:00
2a9b571b7a refactor(versionrc): alloed project changes to show in the changelog 2025-07-12 14:31:45 -05:00
320968f994 ci(builds): added better logic to building 2025-07-12 14:31:15 -05:00
eed01197c0 fix(releases): spawn fixes to overcome npx and powershell 2025-07-12 13:23:11 -05:00
a20d377834 refactor(releases): refactoring to get the actual release and changelog to show 2025-07-12 13:20:26 -05:00
1b07f5628a ci(releases): added in release it to add to the build process 2025-07-12 13:08:04 -05:00
0b17faf618 ci(package.json): missing scripts for committing 2025-07-12 12:48:38 -05:00
b370cb17c8 feat(starter): intial starter release 2025-07-12 12:47:57 -05:00
33 changed files with 18474 additions and 26 deletions

39
.gitignore vendored
View File

@@ -1,3 +1,13 @@
# lst ignores
docker-compose.yml
frontend/.tanstack/
frontend/.output/
frontend/.nitro/
releases/
LstWrapper/bin
LstWrapper/publish
LstWrapper/obj
# ---> Go
# If you prefer the allow list template instead of the deny list, see community template:
# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
@@ -25,30 +35,6 @@ go.work.sum
# env file
.env
# ---> Go.AllowList
# Allowlisting gitignore template for GO projects prevents us
# from adding various unwanted local files, such as generated
# files, developer configurations or IDE-specific files etc.
#
# Recommended: Go.AllowList.gitignore
# Ignore everything
*
# But not these files...
!/.gitignore
!*.go
!go.sum
!go.mod
!README.md
!LICENSE
# !Makefile
# ...even if they are in subdirectories
!*/
# ---> Node
# Logs
@@ -198,3 +184,8 @@ dist
*.resources
test-results/
backend/go.sum
BUILD_NUMBER
scripts/resetDanger.js
LstWrapper/Program_vite_as_Static.txt
scripts/stopPool.go

28
.release-it.json Normal file
View File

@@ -0,0 +1,28 @@
{
"git": {
"commitMessage": "chore(release): v${version}",
"tagName": "v${version}",
"requireCleanWorkingDir": true,
"addUntrackedFiles": true
},
"npm": {
"publish": false
},
"hooks": {
"after:release": "node ./scripts/create-gitea-release.js ${version}"
},
"github": false,
"plugins": {
"@release-it/conventional-changelog": {
"preset": "conventionalcommits",
"infile": "CHANGELOG.md",
"config": ".versionrc.json"
}
},
"gitea": {
"host": "https://${GITEA_URL}",
"tokenRef": "GITEA_TOKEN"
},
"files": ["package.json", "CHANGELOG.md"]
}

17
.versionrc.json Normal file
View File

@@ -0,0 +1,17 @@
{
"types": [
{ "type": "feat", "section": "🌟 Enhancements" },
{ "type": "fix", "section": "🐛 Bug fixes" },
{ "type": "chore", "hidden": false, "section": "📝 Chore" },
{ "type": "docs", "section": "📚 Documentation" },
{ "type": "style", "hidden": true },
{ "type": "refactor", "section": "🛠️ Code Refactor" },
{ "type": "perf", "hidden": false, "section": "🚀 Performance" },
{ "type": "test", "section": "📝 Testing Code" },
{ "type": "ci", "hidden": false, "section": "📈 Project changes" },
{ "type": "build", "hidden": true, "section": "📈 Project Builds" }
],
"commitUrlFormat": "https://git.tuffraid.net/cowch/logistics_support_tool/commits/{{hash}}",
"compareUrlFormat": "https://git.tuffraid.net/cowch/logistics_support_tool/compare/{{previousTag}}...{{currentTag}}",
"header": "# All changes to lst are shown below.\nReleases are combined zip of backend and frontend."
}

28
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,28 @@
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"workbench.colorTheme": "Default Dark+",
"prettier.tabWidth": 4,
"terminal.integrated.env.windows": {},
"editor.formatOnSave": true,
"[javascript]": {
"editor.formatOnSave": true
},
"[javascriptreact]": {
"editor.formatOnSave": true
},
"[typescript]": {
"editor.formatOnSave": true
},
"[typescriptreact]": {
"editor.formatOnSave": true
},
"[json]": {
"editor.formatOnSave": true
},
"[graphql]": {
"editor.formatOnSave": true
},
"[handlebars]": {
"editor.formatOnSave": true
}
}

211
CHANGELOG.md Normal file
View File

@@ -0,0 +1,211 @@
# Changelog
## [0.0.3-alpha.22](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.21...v0.0.3-alpha.22) (2025-07-12)
### Bug Fixes
* **changelog:** moved packages ([f11e402](https://git.tuffraid.net/cowch/logistics_support_tool/commit/f11e402d16c750c3001ceebbdfd2f073de1e2703))
## [0.0.3-alpha.21](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.19...v0.0.3-alpha.21) (2025-07-12)
### Bug Fixes
* **package.json:** corrections to the commit changelog stuff ([a236d96](https://git.tuffraid.net/cowch/logistics_support_tool/commit/a236d9697198e5474a8c311984c22ae6f0d1901e))
## [0.0.3-alpha.20](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.19...v0.0.3-alpha.20) (2025-07-12)
### Bug Fixes
* **package.json:** corrections to the commit changelog stuff ([a236d96](https://git.tuffraid.net/cowch/logistics_support_tool/commit/a236d9697198e5474a8c311984c22ae6f0d1901e))
## [0.0.3-alpha.19](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.18...v0.0.3-alpha.19) (2025-07-12)
### Bug Fixes
* **changelog:** readd the header back in ([71b5017](https://git.tuffraid.net/cowch/logistics_support_tool/commit/71b5017c82e718f1c63f3862c0953d1554e7cf5b))
## [0.0.3-alpha.18](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.17...v0.0.3-alpha.18) (2025-07-12)
### Bug Fixes
* **build:** minor change to the build system to trigger new tags ([2b9a859](https://git.tuffraid.net/cowch/logistics_support_tool/commit/2b9a859e7e944eee590d0d51b95fa13405d21790))
## [0.0.3-alpha.17](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.16...v0.0.3-alpha.17) (2025-07-12)
### Bug Fixes
* **changelog:** changes here ([46579ac](https://git.tuffraid.net/cowch/logistics_support_tool/commit/46579ac6d9819085d183eba1dafb6b8873f2dd0e))
## [0.0.3-alpha.16](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.15...v0.0.3-alpha.16) (2025-07-12)
### Bug Fixes
* **h:** sssdasjhksdf ([e6041b0](https://git.tuffraid.net/cowch/logistics_support_tool/commit/e6041b03ee38888fa4e53a498b0414941ff701de))
## [0.0.3-alpha.15](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.14...v0.0.3-alpha.15) (2025-07-12)
### Bug Fixes
* **d:** d ([7b1a0b0](https://git.tuffraid.net/cowch/logistics_support_tool/commit/7b1a0b054b05e33ecd754b91a080fc83ff214630))
## [0.0.3-alpha.14](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.13...v0.0.3-alpha.14) (2025-07-12)
### Bug Fixes
* **changelog:** more change log stuff ([3661cf5](https://git.tuffraid.net/cowch/logistics_support_tool/commit/3661cf5c25b919035853a135bc89d1fc3d5df428))
## [0.0.3-alpha.12](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.11...v0.0.3-alpha.12) (2025-07-12)
### Bug Fixes
* **release:** re ([8330503](https://git.tuffraid.net/cowch/logistics_support_tool/commit/83305031fd8bbf7465269bd517a318d12f1e8414))
## [0.0.3-alpha.11](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.10...v0.0.3-alpha.11) (2025-07-12)
### Bug Fixes
* **bogus:** this is crap ([8044547](https://git.tuffraid.net/cowch/logistics_support_tool/commit/80445474881da87ee431d0c3212dcd458a3ec69d))
## [0.0.3-alpha.10](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.9...v0.0.3-alpha.10) (2025-07-12)
### Bug Fixes
* **jfhsldkfhja:** ghjskdhkflasfdfg ([120ee75](https://git.tuffraid.net/cowch/logistics_support_tool/commit/120ee75bf763a8a98aae1fd8f00925eee203af2a))
## [0.0.3-alpha.9](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.8...v0.0.3-alpha.9) (2025-07-12)
### Bug Fixes
* **fucl:** fuck ([c81ae4e](https://git.tuffraid.net/cowch/logistics_support_tool/commit/c81ae4ee1c28854313705786d1d03d9886abaca0))
## [0.0.3-alpha.8](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.7...v0.0.3-alpha.8) (2025-07-12)
### Bug Fixes
* **change:** fuck ([10fcdbe](https://git.tuffraid.net/cowch/logistics_support_tool/commit/10fcdbe89f54548800fbbca86a011ecb8a9c9234))
## [0.0.3-alpha.7](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.6...v0.0.3-alpha.7) (2025-07-12)
### Bug Fixes
* **release:** changes ([ab1d8fa](https://git.tuffraid.net/cowch/logistics_support_tool/commit/ab1d8fa5562f82f566d9777e61634e90bb6eb1e3))
## [0.0.3-alpha.6](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.5...v0.0.3-alpha.6) (2025-07-12)
### Bug Fixes
* **release:** more changes ([1ed7535](https://git.tuffraid.net/cowch/logistics_support_tool/commit/1ed753506d040e94fd8eb9c2978d96e8f38f1fc5))
## [0.0.3-alpha.5](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.4...v0.0.3-alpha.5) (2025-07-12)
### Bug Fixes
* **release:** changes to the changelog portion so its no longer a link ([1980a18](https://git.tuffraid.net/cowch/logistics_support_tool/commit/1980a184e4a6c4ddbd43f24771453e88d0e03198))
## [0.0.3-alpha.4](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.3...v0.0.3-alpha.4) (2025-07-12)
## [0.0.3-alpha.3](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.2...v0.0.3-alpha.3) (2025-07-12)
### Bug Fixes
* **release:** more fixes ([6a7fcad](https://git.tuffraid.net/cowch/logistics_support_tool/commit/6a7fcadd2f8c52faec33bab7b2e73b0ef9943895))
## [0.0.3-alpha.2](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.3-alpha.1...v0.0.3-alpha.2) (2025-07-12)
## [0.0.3-alpha.1](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2...v0.0.3-alpha.1) (2025-07-12)
### Bug Fixes
* **release:** something ([b7809c9](https://git.tuffraid.net/cowch/logistics_support_tool/commit/b7809c94d96a2168804e0b82413537af1c064b31))
## [0.0.2](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.15...v0.0.2) (2025-07-12)
## [0.0.2-alpha.15](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.14...v0.0.2-alpha.15) (2025-07-12)
### Bug Fixes
* **release:** cahgnes ([799be62](https://git.tuffraid.net/cowch/logistics_support_tool/commit/799be62f3c77631a4108ee9e92f19157ab597dff))
## [0.0.2-alpha.14](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.13...v0.0.2-alpha.14) (2025-07-12)
### Bug Fixes
* **release:** corrections ([2386a14](https://git.tuffraid.net/cowch/logistics_support_tool/commit/2386a14d7a76f89653a13de3a0d86e1bf55934d5))
## [0.0.2-alpha.13](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.12...v0.0.2-alpha.13) (2025-07-12)
### Bug Fixes
* **release:** conflicting tags ([f06b621](https://git.tuffraid.net/cowch/logistics_support_tool/commit/f06b621b8dc0cc8fc7084fa259408f0faafb6b74))
## [0.0.2-alpha.12](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.11...v0.0.2-alpha.12) (2025-07-12)
### Bug Fixes
* **release:** change to get the release to build then release stuff ([afab215](https://git.tuffraid.net/cowch/logistics_support_tool/commit/afab215a9e29732d8236c45c4a8417c9b1e02b1e))
* **release:** removed the intial before bump ([cf24847](https://git.tuffraid.net/cowch/logistics_support_tool/commit/cf2484705a65d065ec75690e21bf6e8f2e32a0f5))
## [0.0.2-alpha.11](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.10...v0.0.2-alpha.11) (2025-07-12)
### Bug Fixes
* **release:** var not defined ([a282940](https://git.tuffraid.net/cowch/logistics_support_tool/commit/a282940d9b1334743af31b96fbb3fd8228ee290a))
## [0.0.2-alpha.10](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.9...v0.0.2-alpha.10) (2025-07-12)
### Bug Fixes
* **release:** error in function ([dc4beb2](https://git.tuffraid.net/cowch/logistics_support_tool/commit/dc4beb2d2768c8e5f5f3f629b13bb38373c2a0a2))
## [0.0.2-alpha.9](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.8...v0.0.2-alpha.9) (2025-07-12)
### Bug Fixes
* **release:** checking the build file failes but not sure why ([f429bd4](https://git.tuffraid.net/cowch/logistics_support_tool/commit/f429bd43ab85df0419c1f06fb551d9af5fd418ae))
## [0.0.2-alpha.8](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.7...v0.0.2-alpha.8) (2025-07-12)
## [0.0.2-alpha.7](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.6...v0.0.2-alpha.7) (2025-07-12)
### Bug Fixes
* **relrease:** maybe finally got it ([c0aa64d](https://git.tuffraid.net/cowch/logistics_support_tool/commit/c0aa64db634cff5a6597215035929f16b0edfca0))
## [0.0.2-alpha.6](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.5...v0.0.2-alpha.6) (2025-07-12)
### Bug Fixes
* **release fixes:** more fixes ([6fc69fc](https://git.tuffraid.net/cowch/logistics_support_tool/commit/6fc69fc6bcbda7f978dbd332ef23ef0501653c50))
## [0.0.2-alpha.5](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.4...v0.0.2-alpha.5) (2025-07-12)
### Bug Fixes
* **release:** more fixes ([65873bd](https://git.tuffraid.net/cowch/logistics_support_tool/commit/65873bd31f4c4e5cc0a77aa171822cd842353e45))
## [0.0.2-alpha.4](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.3...v0.0.2-alpha.4) (2025-07-12)
### Bug Fixes
* **package:** added changes to the package.json so we see the release stuff ([494ee3f](https://git.tuffraid.net/cowch/logistics_support_tool/commit/494ee3f58ea5af3d18a640ffff99918f460fb4aa))
## [0.0.2-alpha.3](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.2...v0.0.2-alpha.3) (2025-07-12)
### Bug Fixes
* **release:** more bug fixes ([5b7f9f2](https://git.tuffraid.net/cowch/logistics_support_tool/commit/5b7f9f2c482531ea52100bff191b943e218e72df))
* **release:** more work on the release stuff ([233298d](https://git.tuffraid.net/cowch/logistics_support_tool/commit/233298daa5850178974be675bb8566fa8c0a8b0a))
## [0.0.2-alpha.2](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.1...v0.0.2-alpha.2) (2025-07-12)
### Bug Fixes
* **releases:** more fun release stuff ([f33554e](https://git.tuffraid.net/cowch/logistics_support_tool/commit/f33554ed973e65e2488512bfd8359577967698b7))
## [0.0.2-alpha.1](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.2-alpha.0...v0.0.2-alpha.1) (2025-07-12)
### Bug Fixes
* **package:** made changes to get the correct alpha passed over in the prerelease stuff ([09e5fdf](https://git.tuffraid.net/cowch/logistics_support_tool/commit/09e5fdf209f1a11f975d77e445f777623a5d3509))
* **release it:** type in how i wrote the release-it file ([8664703](https://git.tuffraid.net/cowch/logistics_support_tool/commit/86647034c8f5c9b04c6f51fb95b929de4f65fc63))
* **release:** removed version from being passed over ([30b39b8](https://git.tuffraid.net/cowch/logistics_support_tool/commit/30b39b836a8ac01aea3f7a4ddf3b6ec25d6a36cd))
## [0.0.1-alpha.4.14-cowch](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.1-alpha.3.14-cowch...v0.0.1-alpha.4.14-cowch) (2025-07-12)
### Bug Fixes
* **releaseit:** changes to get the version to update ([e084663](https://git.tuffraid.net/cowch/logistics_support_tool/commit/e084663f19ada722007bd00c73a4ca7015a4f71e))
## [0.0.1-alpha.3.14-cowch](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.1-alpha.2.14-cowch...v0.0.1-alpha.3.14-cowch) (2025-07-12)
### Bug Fixes
* **releaseit:** changes to get it to actaully run ([c680152](https://git.tuffraid.net/cowch/logistics_support_tool/commit/c680152004b85442cad5bf6eeac407de67fead32))
## [0.0.1-alpha.2.14-cowch](https://git.tuffraid.net/cowch/logistics_support_tool/compare/v0.0.1-alpha.1.14-cowch...v0.0.1-alpha.2.14-cowch) (2025-07-12)
### Bug Fixes
* **package json:** correction to the version ([8141c6a](https://git.tuffraid.net/cowch/logistics_support_tool/commit/8141c6ab698ce246f999ed304d306f72c50a2708))
* **releases:** a few more tweaks to the releasing ([587f1eb](https://git.tuffraid.net/cowch/logistics_support_tool/commit/587f1eb3a2841780903db6c9b6f4fa760baa29e9))
* **releases:** corrections to reduce the build number to be true ([18aa9e7](https://git.tuffraid.net/cowch/logistics_support_tool/commit/18aa9e7670ffd531c0c03b946dad599600bd5c5b))
## [0.0.1-alpha.1.14-cowch](https://git.tuffraid.net/cowch/logistics_support_tool/compare/0.0.2...v0.0.1-alpha.1.14-cowch) (2025-07-12)
## v0.0.1-alpha-1 (2025-07-12)
### Features
* **starter:** intial starter release ([b370cb1](https://git.tuffraid.net/cowch/logistics_support_tool/commit/b370cb17c86bb3f8727cebfa607bb6423fc89644))
### Bug Fixes
* **releases:** spawn fixes to overcome npx and powershell ([eed0119](https://git.tuffraid.net/cowch/logistics_support_tool/commit/eed01197c0825e9039c3a2f0d8845c3b21380faf))

View File

@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>

85
LstWrapper/Program.cs Normal file
View File

@@ -0,0 +1,85 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using System.Net.Http;
var builder = WebApplication.CreateBuilder(args);
// to build the binary dotnet publish -c Release -o ./publish
// Go backend
builder.Services.AddHttpClient("GoBackend", client =>
{
client.BaseAddress = new Uri("http://localhost:8080");
client.Timeout = TimeSpan.FromSeconds(30);
});
// Node frontend
builder.Services.AddHttpClient("NodeFrontend", client =>
{
client.BaseAddress = new Uri("http://localhost:3000");
client.Timeout = TimeSpan.FromSeconds(30);
});
var app = builder.Build();
app.UseStaticFiles();
app.Use((Func<HttpContext, Func<Task>, Task>)(async (context, next) =>
{
var clientFactory = context.RequestServices.GetRequiredService<IHttpClientFactory>();
var isApiRequest =
context.Request.Path.StartsWithSegments("/api") ||
context.Request.Path.StartsWithSegments("/graphql") ||
context.Request.Path.StartsWithSegments("/auth") ||
!context.Request.Method.Equals("GET", StringComparison.OrdinalIgnoreCase);
var client = clientFactory.CreateClient(isApiRequest ? "GoBackend" : "NodeFrontend");
try
{
var requestUri = context.Request.Path + context.Request.QueryString;
var request = new HttpRequestMessage(
new HttpMethod(context.Request.Method),
requestUri);
foreach (var header in context.Request.Headers)
{
if (!request.Headers.TryAddWithoutValidation(header.Key, header.Value.ToArray()))
{
request.Content ??= new StreamContent(context.Request.Body);
request.Content.Headers.TryAddWithoutValidation(header.Key, header.Value.ToArray());
}
}
if (context.Request.ContentLength > 0 || context.Request.Headers.ContainsKey("Transfer-Encoding"))
{
request.Content = new StreamContent(context.Request.Body);
}
var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, context.RequestAborted);
context.Response.StatusCode = (int)response.StatusCode;
foreach (var header in response.Headers)
{
context.Response.Headers[header.Key] = header.Value.ToArray();
}
foreach (var header in response.Content.Headers)
{
context.Response.Headers[header.Key] = header.Value.ToArray();
}
context.Response.Headers.Remove("transfer-encoding");
await response.Content.CopyToAsync(context.Response.Body);
}
catch (HttpRequestException ex)
{
context.Response.StatusCode = isApiRequest ? 503 : 502;
await context.Response.WriteAsync($"{(isApiRequest ? "Go API" : "Frontend")} unavailable: {ex.Message}");
}
}));
app.Run();

View File

@@ -0,0 +1,23 @@
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "http://localhost:5015",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:7208;http://localhost:5015",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

View File

@@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}

15
LstWrapper/web.config Normal file
View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet"
arguments=".\LstWrapper.dll"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>

View File

@@ -0,0 +1,6 @@
<!DOCTYPE html>
<html>
<body>
<p>The new begining to lst</p>
</body>
</html>

View File

@@ -1,6 +1,6 @@
# logistics_support_tool
This is the new logisitcs support tool
This is the new logisitcs support tool
backend written in go
front end written in vite/react
@@ -9,4 +9,4 @@ db postgress.
this will also include a primary server to house all the common configs across all servers to keep it more easy to admin. the servers will cache this data and check for changes every hour
The new lst will run in docker by building your own image and deploying or pulling the image down.
you will also be able to run it in windows or linux.
you will also be able to run it in windows or linux.

35
backend/Dockerfile Normal file
View File

@@ -0,0 +1,35 @@
FROM golang:1.24.4-alpine3.22 AS builder
WORKDIR /app
COPY go.mod go.sum ./
# COPY VERSION ./VERSION
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o lst_go ./main.go
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/lst_go .
# COPY --from=builder /app/VERSION ./
# create the volume paths
RUN mkdir -p /data
VOLUME /data
# this port is hardcoded in the app right now.
EXPOSE 8080
ENV RUNNING_IN_DOCKER=true
# VOLUME /data
# ENV DB_TYPE=sqlite
# ENV DB_PATH=/data/lst_go.db
# ENV POSTGRES_HOST=host
# ENV POSTGRES_USER=user
# ENV POSTGRES_PASSWORD=pass
CMD ["./lst_go"]

34
backend/go.mod Normal file
View File

@@ -0,0 +1,34 @@
module lst.net
go 1.24.3
require github.com/gin-gonic/gin v1.10.1
require (
github.com/bytedance/sonic v1.11.6 // indirect
github.com/bytedance/sonic/loader v0.1.1 // indirect
github.com/cloudwego/base64x v0.1.4 // indirect
github.com/cloudwego/iasm v0.2.0 // indirect
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.20.0 // indirect
github.com/goccy/go-json v0.10.2 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/cpuid/v2 v2.2.7 // indirect
github.com/leodido/go-urn v1.4.0 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.12 // indirect
golang.org/x/arch v0.8.0 // indirect
golang.org/x/crypto v0.23.0 // indirect
golang.org/x/net v0.25.0 // indirect
golang.org/x/sys v0.20.0 // indirect
golang.org/x/text v0.15.0 // indirect
google.golang.org/protobuf v1.34.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

29
backend/main.go Normal file
View File

@@ -0,0 +1,29 @@
package main
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
fmt.Println("Welcome to lst backend where all the fun happens.")
r := gin.Default()
r.GET("/api/ping", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "pong"})
})
r.Any("/api", errorApiLoc)
r.Any("/", errorLoc)
r.Run(":8080")
}
func errorLoc(c *gin.Context) {
c.JSON(http.StatusBadRequest, gin.H{"message": "welcome to lst system you might have just encountered an incorrect area of the app"})
}
func errorApiLoc(c *gin.Context) {
c.JSON(http.StatusBadRequest, gin.H{"message": "looks like you have encountered an api route that dose not exist"})
}

View File

@@ -0,0 +1,27 @@
---
services:
lst_backend:
# build: . # Tell Docker Compose to build the image using the Dockerfile in the current directory
build:
context: .
dockerfile: ./backend/Dockerfile
image: git.tuffraid.net/cowch/logistics_support_tool:backend-latest
container_name: lst_backend # A friendly name for your running container
volumes:
- /path/to/backend/data:/data
ports:
- "8080:8080"
restart: unless-stopped
lst_frontend:
# build: . # Tell Docker Compose to build the image using the Dockerfile in the current directory
build:
context: .
dockerfile: ./frontend/Dockerfile
image: git.tuffraid.net/cowch/logistics_support_tool:frontend-latest
container_name: lst_frontend # A friendly name for your running container
volumes:
- /path/to/frontend/data:/data
ports:
- "3120:3000"
restart: unless-stopped

29
frontend/Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
# Build Stage
FROM node:24-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN npm install
# Build the Next.js app
FROM node:24-alpine AS builder
WORKDIR /app
COPY . ./
COPY --from=deps /app/node_modules ./node_modules
# Run other commands like prisma or drizzle
RUN npm run build
# if more commands are needed after here do the same
# Final stage
FROM node:24-alpine
WORKDIR /app
COPY --from=builder /app/.nitro /app/.nitro
COPY --from=builder /app/.output /app/.output
COPY --from=builder /app/.tanstack /app/.tanstack
EXPOSE 3000
CMD ["node", ".output/server/index.mjs"]

10170
frontend/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

27
frontend/package.json Normal file
View File

@@ -0,0 +1,27 @@
{
"name": "frontend",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"dev": "vite dev",
"build": "vite build"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@tanstack/react-router": "^1.127.3",
"@tanstack/react-start": "^1.127.4",
"react": "^19.1.0",
"react-dom": "^19.1.0",
"vite": "^7.0.4"
},
"devDependencies": {
"@types/react": "^19.1.8",
"@types/react-dom": "^19.1.6",
"typescript": "^5.8.3",
"vite-tsconfig-paths": "^5.1.4"
}
}

View File

@@ -0,0 +1,59 @@
/* eslint-disable */
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// This file was automatically generated by TanStack Router.
// You should NOT make any changes in this file as it will be overwritten.
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
import { Route as rootRouteImport } from './routes/__root'
import { Route as IndexRouteImport } from './routes/index'
const IndexRoute = IndexRouteImport.update({
id: '/',
path: '/',
getParentRoute: () => rootRouteImport,
} as any)
export interface FileRoutesByFullPath {
'/': typeof IndexRoute
}
export interface FileRoutesByTo {
'/': typeof IndexRoute
}
export interface FileRoutesById {
__root__: typeof rootRouteImport
'/': typeof IndexRoute
}
export interface FileRouteTypes {
fileRoutesByFullPath: FileRoutesByFullPath
fullPaths: '/'
fileRoutesByTo: FileRoutesByTo
to: '/'
id: '__root__' | '/'
fileRoutesById: FileRoutesById
}
export interface RootRouteChildren {
IndexRoute: typeof IndexRoute
}
declare module '@tanstack/react-router' {
interface FileRoutesByPath {
'/': {
id: '/'
path: '/'
fullPath: '/'
preLoaderRoute: typeof IndexRouteImport
parentRoute: typeof rootRouteImport
}
}
}
const rootRouteChildren: RootRouteChildren = {
IndexRoute: IndexRoute,
}
export const routeTree = rootRouteImport
._addFileChildren(rootRouteChildren)
._addFileTypes<FileRouteTypes>()

19
frontend/src/router.tsx Normal file
View File

@@ -0,0 +1,19 @@
// src/router.tsx
import { createRouter as createTanStackRouter } from '@tanstack/react-router'
import { routeTree } from './routeTree.gen'
export function createRouter() {
const router = createTanStackRouter({
basepath: '/lst',
routeTree,
scrollRestoration: true,
})
return router
}
declare module '@tanstack/react-router' {
interface Register {
router: ReturnType<typeof createRouter>
}
}

View File

@@ -0,0 +1,48 @@
/// <reference types="vite/client" />
import type { ReactNode } from 'react'
import {
Outlet,
createRootRoute,
HeadContent,
Scripts,
} from '@tanstack/react-router'
export const Route = createRootRoute({
head: () => ({
meta: [
{
charSet: 'utf-8',
},
{
name: 'viewport',
content: 'width=device-width, initial-scale=1',
},
{
title: 'TanStack Start Starter',
},
],
}),
component: RootComponent,
})
function RootComponent() {
return (
<RootDocument>
<Outlet />
</RootDocument>
)
}
function RootDocument({ children }: Readonly<{ children: ReactNode }>) {
return (
<html>
<head>
<HeadContent />
</head>
<body>
{children}
<Scripts />
</body>
</html>
)
}

View File

@@ -0,0 +1,51 @@
// src/routes/index.tsx
import * as fs from "node:fs";
import { createFileRoute, useRouter } from "@tanstack/react-router";
import { createServerFn } from "@tanstack/react-start";
const filePath = "count.txt";
async function readCount() {
return parseInt(
await fs.promises.readFile(filePath, "utf-8").catch(() => "0")
);
}
const getCount = createServerFn({
method: "GET",
}).handler(() => {
return readCount();
});
const updateCount = createServerFn({ method: "POST" })
.validator((d: number) => d)
.handler(async ({ data }) => {
const count = await readCount();
await fs.promises.writeFile(filePath, `${count + data}`);
});
export const Route = createFileRoute("/")({
component: Home,
loader: async () => await getCount(),
});
function Home() {
const router = useRouter();
const state = Route.useLoaderData();
return (
<div>
<p>This is just something to put in here</p>
<button
type="button"
onClick={() => {
updateCount({ data: 1 }).then(() => {
router.invalidate();
});
}}
>
Add 1 to {state}?
</button>
</div>
);
}

10
frontend/tsconfig.json Normal file
View File

@@ -0,0 +1,10 @@
{
"compilerOptions": {
"jsx": "react-jsx",
"moduleResolution": "Bundler",
"module": "ESNext",
"target": "ES2022",
"skipLibCheck": true,
"strictNullChecks": true
}
}

11
frontend/vite.config.ts Normal file
View File

@@ -0,0 +1,11 @@
import { defineConfig } from 'vite'
import tsConfigPaths from 'vite-tsconfig-paths'
import { tanstackStart } from '@tanstack/react-start/plugin/vite'
export default defineConfig({
base: '/lst/',
server: {
port: 3000,
},
plugins: [tsConfigPaths(), tanstackStart({ target: 'node-server' })],
})

6881
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

43
package.json Normal file
View File

@@ -0,0 +1,43 @@
{
"name": "logistics_support_tool",
"version": "0.0.1-alpha.1",
"description": "This is the new logisitcs support tool",
"private": true,
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"backend": "cd backend && go run .",
"build": "powershell -File ./scripts/build.ps1",
"docker:front": "docker build -t logistics_support_tool:frontend-latest -f frontend/Dockerfile ./frontend",
"docker:back": "docker build -t logistics_support_tool:backend-latest -f backend/Dockerfile ./backend",
"docker": "powershell -File ./scripts/dockerBuild.ps1",
"release:createZip": "powershell -File ./scripts/release.ps1",
"release:gitea": "node ./scripts/create-gitea-release.js",
"release": "release-it --verbose --non-interactive --preRelease=alpha",
"commit": "cz"
},
"repository": {
"type": "git",
"url": "https://git.tuffraid.net/cowch/logistics_support_tool.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "module",
"devDependencies": {
"@release-it/conventional-changelog": "^10.0.1",
"cz-conventional-changelog": "^3.3.0",
"release-it": "^19.0.3",
"standard-version": "^9.5.0"
},
"config": {
"commitizen": {
"path": "./node_modules/cz-conventional-changelog"
}
},
"dependencies": {
"dotenv": "^17.2.0",
"fs-extra": "^11.3.0",
"node-fetch": "^3.3.2"
}
}

129
scripts/build.ps1 Normal file
View File

@@ -0,0 +1,129 @@
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition
$rootDir = Join-Path $scriptDir ".."
$releaseScript = Join-Path $scriptDir "release.ps1"
$packageJsonPath = Join-Path $rootDir "package.json"
# Path to BUILD_NUMBER file, assuming root is one level up from scripts
$buildNumberFile = Join-Path $scriptDir "..\BUILD_NUMBER"
$envFile = Join-Path $rootDir ".env"
if (Test-Path $envFile) {
Write-Host "Loading environment variables from $envFile"
Get-Content $envFile | ForEach-Object {
if ($_ -match "^\s*([^#][^=]*)=(.*)$") {
$name = $matches[1].Trim()
$value = $matches[2].Trim()
[System.Environment]::SetEnvironmentVariable($name, $value)
}
}
} else {
Write-Host ".env file not found at $envFile"
}
if (-not $env:BUILD_NAME) {
Write-Warning "BUILD_NAME environment variable is not set. Please make sure you have entered the correct info the env"
exit 1
}
function Get-PackageVersion {
param (
[string]$packageJsonPath
)
if (-not (Test-Path $packageJsonPath)) {
Write-Warning "package.json not found at $packageJsonPath"
return $null
}
$jsonContent = Get-Content $packageJsonPath -Raw
try {
$json = $jsonContent | ConvertFrom-Json
return $json.version
}
catch {
Write-Warning "Failed to parse package.json: $_"
return $null
}
}
$version = Get-PackageVersion -packageJsonPath $packageJsonPath
Write-Host "Project version from package.json is: $version"
$buildNumberFile = Join-Path $rootDir "BUILD_NUMBER"
if (-not (Test-Path $buildNumberFile)) {
$initialBuildValue = "1-$($env:BUILD_NAME)"
Write-Host "BUILD_NUMBER file not found. Creating with value: $initialBuildValue"
Set-Content -Path $buildNumberFile -Value $initialBuildValue
} else {
Write-Host "BUILD_NUMBER file exists at $buildNumberFile, and will not be created"
}
function Update-BuildNumber {
if (-not (Test-Path $buildNumberFile)) {
Write-Warning "BUILD_NUMBER file not found at $buildNumberFile"
return $null
}
$current = Get-Content $buildNumberFile -Raw
$current = $current.Trim()
if ($current -match '^(\d+)-(.*)$') {
$number = [int]$matches[1]
$name = $matches[2]
$newNumber = $number + 1
$newBuildNumber = "$newNumber-$name"
Set-Content -Path $buildNumberFile -Value $newBuildNumber
Write-Host "Build number updated from $current to $newBuildNumber"
return $newBuildNumber
} else {
Write-Warning "BUILD_NUMBER file content '$current' is not in the expected 'number-name' format."
return $null
}
}
Push-Location $rootDir/backend
Write-Host "Building the app"
go build -ldflags "-X main.version=$($version)-$($initialBuildValue)" -o lst_backend.exe ./main.go
if ($LASTEXITCODE -ne 0) {
Write-Warning "Backend build failed!"
Pop-Location
break
}
Write-Host "Backend build finished successfully."
Pop-Location
Push-Location $rootDir/frontend
Write-Host "Building the frontend."
npm run build
if ($LASTEXITCODE -ne 0) {
Write-Warning "Fronend build failed!"
Pop-Location
break
}
Write-Host "Fronend build finished successfully."
Pop-Location
Write-Host "Building wrapper"
Push-Location $rootDir/LstWrapper
dotnet publish -c Release -o ./publish
Pop-Location
Update-BuildNumber
Write-Host "Zipping up the release"
npm run release:createZip
break

View File

@@ -0,0 +1,252 @@
const version = process.argv[2];
if (!version) {
console.error("Version not passed to create-gitea-release.js");
process.exit(1);
}
import fs from "fs-extra";
import path from "path";
import { fileURLToPath } from "url";
import fetch from "node-fetch";
import dotenv from "dotenv";
dotenv.config({ path: "./.env" });
// Resolve the directory of the current script
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Absolute path to BUILD_NUMBER
const buildNumberPath = path.resolve(__dirname, "../BUILD_NUMBER");
// Load build number from BUILD_NUMBER file
let buildNumber = "0";
try {
const rawBuild = fs.readFileSync(buildNumberPath, "utf8");
console.log("Raw build", rawBuild);
buildNumber = rawBuild.trim();
} catch (e) {
console.log(e);
console.warn("BUILD_NUMBER file not found, defaulting to 0");
}
const fullVersion = `${version}.${buildNumber}`;
const { GITEA_URL, GITEA_USERNAME, GITEA_REPO, GITEA_TOKEN } = process.env;
if (!GITEA_URL || !GITEA_USERNAME || !GITEA_REPO || !GITEA_TOKEN) {
console.error("Missing required environment variables");
process.exit(1);
}
// Step 1: Generate or update CHANGELOG.md
// console.log("Generating CHANGELOG.md...");
// const result = spawnSync(
// "npx",
// [
// "conventional-changelog",
// "-p",
// "conventionalcommits",
// "-i",
// "CHANGELOG.md",
// "-s",
// "-r",
// "0",
// ],
// { stdio: "inherit", shell: true }
// );
// if (result.status !== 0) {
// console.error("Failed to generate changelog");
// process.exit(1);
// }
// Corrected function to get the latest changelog entry from CHANGELOG.md
const getLatestChangelog = async () => {
try {
const changelogPath = path.resolve(__dirname, "../CHANGELOG.md");
console.log(`Attempting to read changelog from: ${changelogPath}`); // Debugging line
const changelogContent = await fs.readFile(changelogPath, "utf8");
console.log(
"Changelog content read successfully (first 200 chars):",
changelogContent.substring(0, 200)
); // Debugging line
const lines = changelogContent.trim().split(/\r?\n/);
let latestReleaseNotes = [];
let inLatestRelease = false;
let foundFirstHeading = false;
// Regex to match a conventional changelog heading format: "## [version](url) (date)"
// The key is to correctly parse the URL part in parentheses.
const releaseHeadingRegex = /^## \[.*?\]\(.*?\)\s\(.*\)$/;
for (const line of lines) {
// Trim each line to handle potential leading/trailing spaces when matching
const trimmedLine = line.trim();
if (trimmedLine.match(releaseHeadingRegex)) {
if (!foundFirstHeading) {
// This is the first (latest) release heading we encounter
inLatestRelease = true;
foundFirstHeading = true;
// We skip the heading line itself from the notes body
continue;
} else {
// This is a subsequent release heading, meaning we've passed the latest release's content
break;
}
}
// If we are currently inside the latest release block, add the line
if (inLatestRelease) {
latestReleaseNotes.push(trimmedLine); // Use trimmedLine here
}
}
// Clean up the collected notes by filtering out empty lines if they are not meaningful content
// and joining them back, then trimming.
const cleanedNotes = latestReleaseNotes
.filter((line) => line !== "") // Remove truly empty lines
.join("\n")
.trim();
if (cleanedNotes) {
console.log(
"Successfully extracted latest changelog notes:\n",
cleanedNotes
);
return cleanedNotes;
} else {
console.warn(
"Could not find any content for the latest changelog entry in CHANGELOG.md. This might mean the file is empty, or the regex for headings is incorrect, or there's no content after the heading."
);
return "No changelog notes available.";
}
} catch (err) {
console.error("Error reading or parsing CHANGELOG.md:", err);
throw err;
}
};
const releaseNotes = await getLatestChangelog();
// Step 3: Create or update Gitea release
const createOrUpdateRelease = async () => {
const tagName = `v${version}`;
const apiBase = `https://${GITEA_URL}/api/v1/repos/${GITEA_USERNAME}/${GITEA_REPO}`;
const existing = await fetch(`${apiBase}/releases/tags/${tagName}`, {
headers: { Authorization: `token ${GITEA_TOKEN}` },
});
let release;
if (existing.ok) {
const existingRelease = await existing.json();
console.log(`Release ${tagName} already exists. Updating it.`);
const updateResponse = await fetch(
`${apiBase}/releases/${existingRelease.id}`,
{
method: "PATCH",
headers: {
Authorization: `token ${GITEA_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
name: tagName,
body: releaseNotes,
draft: false,
prerelease: true,
}),
}
);
if (!updateResponse.ok) {
const errorText = await updateResponse.text();
throw new Error(
`Failed to update release: ${updateResponse.status} - ${errorText}`
);
}
release = await updateResponse.json();
console.log("Release updated:", release.html_url || release.url);
} else if (existing.status === 404) {
const createResponse = await fetch(`${apiBase}/releases`, {
method: "POST",
headers: {
Authorization: `token ${GITEA_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
tag_name: tagName,
name: `Release ${fullVersion}`,
body: releaseNotes,
draft: false,
prerelease: true,
}),
});
if (!createResponse.ok) {
const errorText = await createResponse.text();
throw new Error(
`Failed to create release: ${createResponse.status} - ${errorText}`
);
}
release = await createResponse.json();
console.log("Release created:", release.html_url || release.url);
} else {
const errorText = await existing.text();
throw new Error(
`Failed to check release: ${existing.status} - ${errorText}`
);
}
return release;
};
const uploadAsset = async (release) => {
const apiUrl = `https://${GITEA_URL}/api/v1/repos/${GITEA_USERNAME}/${GITEA_REPO}/releases/assets?tag=${release.tag_name}`;
const filePath = `releases/release-${fullVersion}.zip`;
if (!(await fs.pathExists(filePath))) {
console.warn(`Zip file not found: ${filePath}. Skipping asset upload.`);
return;
}
const FormData = (await import("form-data")).default;
const form = new FormData();
form.append("name", `release-${fullVersion}.zip`);
form.append("attachment", fs.createReadStream(filePath));
const response = await fetch(apiUrl, {
method: "POST",
headers: {
Authorization: `token ${GITEA_TOKEN}`,
...form.getHeaders(),
},
body: form,
});
if (!response.ok) {
const errorText = await response.text();
throw new Error(
`Failed to upload asset: ${response.status} - ${errorText}`
);
}
const asset = await response.json();
console.log("Asset uploaded:", asset.browser_download_url || asset.url);
};
// Run everything
(async () => {
try {
const release = await createOrUpdateRelease();
// await uploadAsset(release); // fix this later and just update the readme.
} catch (err) {
console.error(err);
process.exit(1);
}
})();

15
scripts/dockerBuild.ps1 Normal file
View File

@@ -0,0 +1,15 @@
Write-Host "Building the docker images for front and backend"
docker build -t logistics_support_tool:frontend-latest -f ./frontend/Dockerfile --no-cache ./frontend
docker build -t logistics_support_tool:backend-latest -f ./backend/Dockerfile --no-cache ./backend
Write-Host "Tagging the builds with latest this is for testing test basically."
docker tag logistics_support_tool:frontend-latest git.tuffraid.net/cowch/logistics_support_tool:frontend-latest
docker tag logistics_support_tool:backend-latest git.tuffraid.net/cowch/logistics_support_tool:backend-latest
# docker build -t logistics_support_tool:frontend-latest --no-cache .
Write-Host "Push both builds to our gitea server."
docker push git.tuffraid.net/cowch/logistics_support_tool:frontend-latest
docker push git.tuffraid.net/cowch/logistics_support_tool:backend-latest
Write-Host "Pull the new images to our docker system"
docker compose -f ./docker-compose.yml up -d --force-recreate

46
scripts/iisControls.ps1 Normal file
View File

@@ -0,0 +1,46 @@
param (
[string]$ServerName,
[string]$AppPoolName,
[string]$StopOrStart
)
write-host $StopOrStart
if ($StopOrStart -eq "stop") {
Invoke-Command -ComputerName $ServerName -Credential $cred -ScriptBlock {
param($AppPoolName)
Import-Module WebAdministration
Write-Host "Stopping AppPool '$AppPoolName' on $($env:COMPUTERNAME)"
try {
Stop-WebAppPool -Name $AppPoolName -ErrorAction Stop
Start-Sleep -Seconds 2
$state = (Get-WebAppPoolState -Name $AppPoolName).Value
Write-Host "Result: $state"
} catch {
Write-Error $_.Exception.Message
exit 1
}
} -ArgumentList $AppPoolName
}
if ($StopOrStart -eq "start"){
Invoke-Command -ComputerName $ServerName -Credential $cred -ScriptBlock {
param($AppPoolName)
Import-Module WebAdministration
Write-Host "Starting AppPool '$AppPoolName' on $($env:COMPUTERNAME)"
try {
Start-WebAppPool -Name $AppPoolName
Start-Sleep -Seconds 2
$state = (Get-WebAppPoolState -Name $AppPoolName).Value
Write-Host "Result: $state"
} catch {
Write-Error $_.Exception.Message
exit 1
}
} -ArgumentList $AppPoolName
}

103
scripts/release.ps1 Normal file
View File

@@ -0,0 +1,103 @@
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$rootDir = Join-Path $scriptDir ".."
$packageJsonPath = Join-Path $rootDir "package.json"
$env:GOOS = "windows"
$env:GOARCH = "amd64"
$keepReleases = 10
function Get-PackageVersion {
param (
[string]$packageJsonPath
)
if (-not (Test-Path $packageJsonPath)) {
Write-Warning "package.json not found at $packageJsonPath"
return $null
}
$jsonContent = Get-Content $packageJsonPath -Raw
try {
$json = $jsonContent | ConvertFrom-Json
return $json.version
}
catch {
Write-Warning "Failed to parse package.json: $_"
return $null
}
}
$version = Get-PackageVersion -packageJsonPath $packageJsonPath
Write-Host "Project version from package.json is: $version"
$buildNumberFile = Join-Path $rootDir "BUILD_NUMBER"
if (Test-Path $buildNumberFile) {
$buildNumber = Get-Content $buildNumberFile -Raw
$buildNumber = $buildNumber.Trim()
Write-Host "Current build number: $buildNumber"
} else {
Write-Warning "BUILD_NUMBER file not found at $buildNumberFile"
}
$releaseFolder = Join-Path $rootDir "releases"
$zipName = "release-v$version-$buildNumber.zip"
$zipPath = Join-Path $releaseFolder $zipName
if (-not (Test-Path $releaseFolder)) {
New-Item -ItemType Directory -Path $releaseFolder | Out-Null
}
# Remove zip if it already exists
if (Test-Path $zipPath) {
Write-Host "Removing existing zip: $zipPath"
Remove-Item $zipPath -Force
}
# Clean up older release files (keep only newest X)
$existingZips = Get-ChildItem -Path $releaseFolder -Filter "release-*.zip" | Sort-Object LastWriteTime -Descending
if ($existingZips.Count -gt $keepReleases) {
$toRemove = $existingZips | Select-Object -Skip $keepReleases
foreach ($file in $toRemove) {
Write-Host "Deleting old release: $($file.Name)"
Remove-Item $file.FullName -Force
}
}
Write-Host "`nPackaging release: $($zipName)"
# Create a temporary staging directory
$tempStageDir = New-Item -ItemType Directory -Path (Join-Path $env:TEMP "lst_staging") -Force
# Copy files to organized structure
$filesToCopy = @(
@{ Source = "backend\lst_backend.exe"; Destination = "backend\lst_backend.exe" },
@{ Source = "LstWrapper\publish"; Destination = "lstwrapper\" },
@{ Source = "frontend\.nitro"; Destination = "frontend\.nitro" },
@{ Source = "frontend\.tanstack"; Destination = "frontend\.tanstack" },
@{ Source = "frontend\.output"; Destination = "frontend\.output" },
@{ Source = "frontend\public"; Destination = "frontend\public" },
@{ Source = "package.json"; Destination = "package.json" },
@{ Source = "CHANGELOG.md"; Destination = "CHANGELOG.md" },
@{ Source = "README.md"; Destination = "README.md" }
)
foreach ($file in $filesToCopy) {
$destPath = Join-Path $tempStageDir $file.Destination
New-Item -ItemType Directory -Path (Split-Path $destPath -Parent) -Force | Out-Null
Copy-Item -Path $file.Source -Destination $destPath -Recurse -Force
}
# Create the zip from the staged directory
Compress-Archive -Path "$tempStageDir\*" -DestinationPath $zipPath
# Clean up temporary directory
Remove-Item $tempStageDir -Recurse -Force
Write-Host "`nRelease package created at: $($zipPath)"
Write-Host "Organized structure:"
Write-Host "- backend/"
Write-Host "- frontend/"
Write-Host "- lstwrapper/"
Write-Host "- CHANGELOG.md"
Write-Host "- README.md"