From 06b8c68fa6e9dd34a9c8bd18502c61c767218b61 Mon Sep 17 00:00:00 2001
From: marcus-sa <8391194+marcus-sa@users.noreply.github.com>
Date: Fri, 9 Aug 2024 21:31:52 +0200
Subject: [PATCH] save
---
.editorconfig | 13 +++
.env | 11 ++
.eslintignore | 1 +
.eslintrc.json | 42 +++++++
.github/workflows/ci.yml | 39 +++++++
.gitignore | 42 +++++++
.prettierignore | 5 +
.prettierrc | 7 ++
.tool-versions | 2 +
.vscode/extensions.json | 7 ++
README.md | 76 +++++++++++++
accounting-service-api/.eslintrc.json | 30 +++++
accounting-service-api/README.md | 11 ++
accounting-service-api/package.json | 10 ++
accounting-service-api/project.json | 26 +++++
accounting-service-api/src/index.ts | 1 +
.../src/lib/order-service-api.spec.ts | 7 ++
.../src/lib/order-service-api.ts | 3 +
accounting-service-api/tsconfig.json | 13 +++
accounting-service-api/tsconfig.lib.json | 10 ++
accounting-service-api/tsconfig.spec.json | 26 +++++
accounting-service-api/vite.config.ts | 27 +++++
accounting-service/.eslintrc.json | 18 +++
accounting-service/project.json | 104 ++++++++++++++++++
accounting-service/src/assets/.gitkeep | 0
accounting-service/src/main.ts | 1 +
accounting-service/tsconfig.app.json | 9 ++
accounting-service/tsconfig.json | 17 +++
accounting-service/tsconfig.spec.json | 8 ++
accounting-service/vite.config.ts | 6 +
api-gateway/.eslintrc.json | 18 +++
api-gateway/project.json | 104 ++++++++++++++++++
api-gateway/src/assets/.gitkeep | 0
api-gateway/src/main.ts | 1 +
api-gateway/tsconfig.app.json | 9 ++
api-gateway/tsconfig.json | 17 +++
api-gateway/tsconfig.spec.json | 8 ++
api-gateway/vite.config.ts | 6 +
bun.lockb | Bin 0 -> 375008 bytes
consumer-service-api/.eslintrc.json | 30 +++++
consumer-service-api/README.md | 11 ++
consumer-service-api/package.json | 10 ++
consumer-service-api/project.json | 26 +++++
consumer-service-api/src/index.ts | 2 +
.../src/lib/entities/consumer.ts | 14 +++
.../src/lib/entities/index.ts | 1 +
consumer-service-api/src/lib/service.ts | 10 ++
consumer-service-api/tsconfig.json | 13 +++
consumer-service-api/tsconfig.lib.json | 10 ++
consumer-service-api/tsconfig.spec.json | 26 +++++
consumer-service-api/vite.config.ts | 27 +++++
consumer-service/.env | 2 +
consumer-service/.eslintrc.json | 18 +++
consumer-service/project.json | 104 ++++++++++++++++++
consumer-service/src/assets/.gitkeep | 0
consumer-service/src/config.ts | 9 ++
consumer-service/src/consumer.controller.ts | 0
consumer-service/src/consumer.repository.ts | 4 +
consumer-service/src/consumer.service.ts | 18 +++
consumer-service/src/main.ts | 19 ++++
consumer-service/tsconfig.app.json | 9 ++
consumer-service/tsconfig.json | 17 +++
consumer-service/tsconfig.spec.json | 8 ++
consumer-service/vite.config.ts | 6 +
delivery-service-api/.eslintrc.json | 30 +++++
delivery-service-api/README.md | 11 ++
delivery-service-api/package.json | 10 ++
delivery-service-api/project.json | 26 +++++
delivery-service-api/src/index.ts | 1 +
.../src/lib/order-service-api.spec.ts | 7 ++
.../src/lib/order-service-api.ts | 3 +
delivery-service-api/tsconfig.json | 13 +++
delivery-service-api/tsconfig.lib.json | 10 ++
delivery-service-api/tsconfig.spec.json | 26 +++++
delivery-service-api/vite.config.ts | 27 +++++
delivery-service/.eslintrc.json | 18 +++
delivery-service/project.json | 104 ++++++++++++++++++
delivery-service/src/assets/.gitkeep | 0
delivery-service/src/main.ts | 1 +
delivery-service/tsconfig.app.json | 9 ++
delivery-service/tsconfig.json | 17 +++
delivery-service/tsconfig.spec.json | 8 ++
delivery-service/vite.config.ts | 6 +
docker-compose.yml | 24 ++++
infra/postgres/deploy.sh | 0
infra/restate/Kraftfile | 0
infra/restate/deploy.sh | 0
infra/restate/project.json | 0
infra/restate/restate.toml | 3 +
kitchen-service-api/.eslintrc.json | 30 +++++
kitchen-service-api/README.md | 11 ++
kitchen-service-api/package.json | 10 ++
kitchen-service-api/project.json | 26 +++++
kitchen-service-api/src/index.ts | 1 +
.../src/lib/order-service-api.spec.ts | 7 ++
.../src/lib/order-service-api.ts | 3 +
kitchen-service-api/tsconfig.json | 13 +++
kitchen-service-api/tsconfig.lib.json | 10 ++
kitchen-service-api/tsconfig.spec.json | 26 +++++
kitchen-service-api/vite.config.ts | 27 +++++
kitchen-service/.eslintrc.json | 18 +++
kitchen-service/project.json | 104 ++++++++++++++++++
kitchen-service/src/assets/.gitkeep | 0
kitchen-service/src/main.ts | 1 +
kitchen-service/tsconfig.app.json | 9 ++
kitchen-service/tsconfig.json | 17 +++
kitchen-service/tsconfig.spec.json | 8 ++
kitchen-service/vite.config.ts | 6 +
node-vite-config.ts | 75 +++++++++++++
nx.json | 49 +++++++++
order-history-service/.eslintrc.json | 18 +++
order-history-service/project.json | 104 ++++++++++++++++++
order-history-service/src/assets/.gitkeep | 0
order-history-service/src/main.ts | 1 +
order-history-service/tsconfig.app.json | 9 ++
order-history-service/tsconfig.json | 17 +++
order-history-service/tsconfig.spec.json | 8 ++
order-history-service/vite.config.ts | 6 +
order-service-api/.eslintrc.json | 30 +++++
order-service-api/README.md | 11 ++
order-service-api/package.json | 10 ++
order-service-api/project.json | 26 +++++
order-service-api/src/index.ts | 1 +
.../src/lib/order-service-api.spec.ts | 7 ++
.../src/lib/order-service-api.ts | 3 +
order-service-api/tsconfig.json | 13 +++
order-service-api/tsconfig.lib.json | 10 ++
order-service-api/tsconfig.spec.json | 26 +++++
order-service-api/vite.config.ts | 27 +++++
order-service/.eslintrc.json | 18 +++
order-service/project.json | 104 ++++++++++++++++++
order-service/src/assets/.gitkeep | 0
order-service/src/main.ts | 1 +
order-service/tsconfig.app.json | 9 ++
order-service/tsconfig.json | 17 +++
order-service/tsconfig.spec.json | 8 ++
order-service/vite.config.ts | 6 +
package.json | 57 ++++++++++
patches/typescript@5.5.4.patch | 13 +++
restaurant-service-api/.eslintrc.json | 30 +++++
restaurant-service-api/README.md | 11 ++
restaurant-service-api/package.json | 10 ++
restaurant-service-api/project.json | 26 +++++
restaurant-service-api/src/index.ts | 1 +
.../src/lib/order-service-api.spec.ts | 7 ++
.../src/lib/order-service-api.ts | 3 +
restaurant-service-api/tsconfig.json | 13 +++
restaurant-service-api/tsconfig.lib.json | 10 ++
restaurant-service-api/tsconfig.spec.json | 26 +++++
restaurant-service-api/vite.config.ts | 27 +++++
restaurant-service/.eslintrc.json | 18 +++
restaurant-service/project.json | 104 ++++++++++++++++++
restaurant-service/src/assets/.gitkeep | 0
restaurant-service/src/main.ts | 1 +
restaurant-service/tsconfig.app.json | 9 ++
restaurant-service/tsconfig.json | 17 +++
restaurant-service/tsconfig.spec.json | 8 ++
restaurant-service/vite.config.ts | 6 +
shared/.eslintrc.json | 30 +++++
shared/README.md | 11 ++
shared/package.json | 10 ++
shared/project.json | 26 +++++
shared/src/index.ts | 3 +
shared/src/lib/config.ts | 16 +++
shared/src/lib/repository.ts | 36 ++++++
shared/src/lib/types.ts | 4 +
shared/tsconfig.json | 13 +++
shared/tsconfig.lib.json | 10 ++
shared/tsconfig.spec.json | 26 +++++
shared/vite.config.ts | 27 +++++
tsconfig.base.json | 55 +++++++++
vitest.workspace.ts | 1 +
172 files changed, 3089 insertions(+)
create mode 100644 .editorconfig
create mode 100644 .env
create mode 100644 .eslintignore
create mode 100644 .eslintrc.json
create mode 100644 .github/workflows/ci.yml
create mode 100644 .gitignore
create mode 100644 .prettierignore
create mode 100644 .prettierrc
create mode 100644 .tool-versions
create mode 100644 .vscode/extensions.json
create mode 100644 README.md
create mode 100644 accounting-service-api/.eslintrc.json
create mode 100644 accounting-service-api/README.md
create mode 100644 accounting-service-api/package.json
create mode 100644 accounting-service-api/project.json
create mode 100644 accounting-service-api/src/index.ts
create mode 100644 accounting-service-api/src/lib/order-service-api.spec.ts
create mode 100644 accounting-service-api/src/lib/order-service-api.ts
create mode 100644 accounting-service-api/tsconfig.json
create mode 100644 accounting-service-api/tsconfig.lib.json
create mode 100644 accounting-service-api/tsconfig.spec.json
create mode 100644 accounting-service-api/vite.config.ts
create mode 100644 accounting-service/.eslintrc.json
create mode 100644 accounting-service/project.json
create mode 100644 accounting-service/src/assets/.gitkeep
create mode 100644 accounting-service/src/main.ts
create mode 100644 accounting-service/tsconfig.app.json
create mode 100644 accounting-service/tsconfig.json
create mode 100644 accounting-service/tsconfig.spec.json
create mode 100644 accounting-service/vite.config.ts
create mode 100644 api-gateway/.eslintrc.json
create mode 100644 api-gateway/project.json
create mode 100644 api-gateway/src/assets/.gitkeep
create mode 100644 api-gateway/src/main.ts
create mode 100644 api-gateway/tsconfig.app.json
create mode 100644 api-gateway/tsconfig.json
create mode 100644 api-gateway/tsconfig.spec.json
create mode 100644 api-gateway/vite.config.ts
create mode 100755 bun.lockb
create mode 100644 consumer-service-api/.eslintrc.json
create mode 100644 consumer-service-api/README.md
create mode 100644 consumer-service-api/package.json
create mode 100644 consumer-service-api/project.json
create mode 100644 consumer-service-api/src/index.ts
create mode 100644 consumer-service-api/src/lib/entities/consumer.ts
create mode 100644 consumer-service-api/src/lib/entities/index.ts
create mode 100644 consumer-service-api/src/lib/service.ts
create mode 100644 consumer-service-api/tsconfig.json
create mode 100644 consumer-service-api/tsconfig.lib.json
create mode 100644 consumer-service-api/tsconfig.spec.json
create mode 100644 consumer-service-api/vite.config.ts
create mode 100644 consumer-service/.env
create mode 100644 consumer-service/.eslintrc.json
create mode 100644 consumer-service/project.json
create mode 100644 consumer-service/src/assets/.gitkeep
create mode 100644 consumer-service/src/config.ts
create mode 100644 consumer-service/src/consumer.controller.ts
create mode 100644 consumer-service/src/consumer.repository.ts
create mode 100644 consumer-service/src/consumer.service.ts
create mode 100644 consumer-service/src/main.ts
create mode 100644 consumer-service/tsconfig.app.json
create mode 100644 consumer-service/tsconfig.json
create mode 100644 consumer-service/tsconfig.spec.json
create mode 100644 consumer-service/vite.config.ts
create mode 100644 delivery-service-api/.eslintrc.json
create mode 100644 delivery-service-api/README.md
create mode 100644 delivery-service-api/package.json
create mode 100644 delivery-service-api/project.json
create mode 100644 delivery-service-api/src/index.ts
create mode 100644 delivery-service-api/src/lib/order-service-api.spec.ts
create mode 100644 delivery-service-api/src/lib/order-service-api.ts
create mode 100644 delivery-service-api/tsconfig.json
create mode 100644 delivery-service-api/tsconfig.lib.json
create mode 100644 delivery-service-api/tsconfig.spec.json
create mode 100644 delivery-service-api/vite.config.ts
create mode 100644 delivery-service/.eslintrc.json
create mode 100644 delivery-service/project.json
create mode 100644 delivery-service/src/assets/.gitkeep
create mode 100644 delivery-service/src/main.ts
create mode 100644 delivery-service/tsconfig.app.json
create mode 100644 delivery-service/tsconfig.json
create mode 100644 delivery-service/tsconfig.spec.json
create mode 100644 delivery-service/vite.config.ts
create mode 100644 docker-compose.yml
create mode 100644 infra/postgres/deploy.sh
create mode 100644 infra/restate/Kraftfile
create mode 100644 infra/restate/deploy.sh
create mode 100644 infra/restate/project.json
create mode 100644 infra/restate/restate.toml
create mode 100644 kitchen-service-api/.eslintrc.json
create mode 100644 kitchen-service-api/README.md
create mode 100644 kitchen-service-api/package.json
create mode 100644 kitchen-service-api/project.json
create mode 100644 kitchen-service-api/src/index.ts
create mode 100644 kitchen-service-api/src/lib/order-service-api.spec.ts
create mode 100644 kitchen-service-api/src/lib/order-service-api.ts
create mode 100644 kitchen-service-api/tsconfig.json
create mode 100644 kitchen-service-api/tsconfig.lib.json
create mode 100644 kitchen-service-api/tsconfig.spec.json
create mode 100644 kitchen-service-api/vite.config.ts
create mode 100644 kitchen-service/.eslintrc.json
create mode 100644 kitchen-service/project.json
create mode 100644 kitchen-service/src/assets/.gitkeep
create mode 100644 kitchen-service/src/main.ts
create mode 100644 kitchen-service/tsconfig.app.json
create mode 100644 kitchen-service/tsconfig.json
create mode 100644 kitchen-service/tsconfig.spec.json
create mode 100644 kitchen-service/vite.config.ts
create mode 100644 node-vite-config.ts
create mode 100644 nx.json
create mode 100644 order-history-service/.eslintrc.json
create mode 100644 order-history-service/project.json
create mode 100644 order-history-service/src/assets/.gitkeep
create mode 100644 order-history-service/src/main.ts
create mode 100644 order-history-service/tsconfig.app.json
create mode 100644 order-history-service/tsconfig.json
create mode 100644 order-history-service/tsconfig.spec.json
create mode 100644 order-history-service/vite.config.ts
create mode 100644 order-service-api/.eslintrc.json
create mode 100644 order-service-api/README.md
create mode 100644 order-service-api/package.json
create mode 100644 order-service-api/project.json
create mode 100644 order-service-api/src/index.ts
create mode 100644 order-service-api/src/lib/order-service-api.spec.ts
create mode 100644 order-service-api/src/lib/order-service-api.ts
create mode 100644 order-service-api/tsconfig.json
create mode 100644 order-service-api/tsconfig.lib.json
create mode 100644 order-service-api/tsconfig.spec.json
create mode 100644 order-service-api/vite.config.ts
create mode 100644 order-service/.eslintrc.json
create mode 100644 order-service/project.json
create mode 100644 order-service/src/assets/.gitkeep
create mode 100644 order-service/src/main.ts
create mode 100644 order-service/tsconfig.app.json
create mode 100644 order-service/tsconfig.json
create mode 100644 order-service/tsconfig.spec.json
create mode 100644 order-service/vite.config.ts
create mode 100644 package.json
create mode 100644 patches/typescript@5.5.4.patch
create mode 100644 restaurant-service-api/.eslintrc.json
create mode 100644 restaurant-service-api/README.md
create mode 100644 restaurant-service-api/package.json
create mode 100644 restaurant-service-api/project.json
create mode 100644 restaurant-service-api/src/index.ts
create mode 100644 restaurant-service-api/src/lib/order-service-api.spec.ts
create mode 100644 restaurant-service-api/src/lib/order-service-api.ts
create mode 100644 restaurant-service-api/tsconfig.json
create mode 100644 restaurant-service-api/tsconfig.lib.json
create mode 100644 restaurant-service-api/tsconfig.spec.json
create mode 100644 restaurant-service-api/vite.config.ts
create mode 100644 restaurant-service/.eslintrc.json
create mode 100644 restaurant-service/project.json
create mode 100644 restaurant-service/src/assets/.gitkeep
create mode 100644 restaurant-service/src/main.ts
create mode 100644 restaurant-service/tsconfig.app.json
create mode 100644 restaurant-service/tsconfig.json
create mode 100644 restaurant-service/tsconfig.spec.json
create mode 100644 restaurant-service/vite.config.ts
create mode 100644 shared/.eslintrc.json
create mode 100644 shared/README.md
create mode 100644 shared/package.json
create mode 100644 shared/project.json
create mode 100644 shared/src/index.ts
create mode 100644 shared/src/lib/config.ts
create mode 100644 shared/src/lib/repository.ts
create mode 100644 shared/src/lib/types.ts
create mode 100644 shared/tsconfig.json
create mode 100644 shared/tsconfig.lib.json
create mode 100644 shared/tsconfig.spec.json
create mode 100644 shared/vite.config.ts
create mode 100644 tsconfig.base.json
create mode 100644 vitest.workspace.ts
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..6e87a00
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,13 @@
+# Editor configuration, see http://editorconfig.org
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+max_line_length = off
+trim_trailing_whitespace = false
diff --git a/.env b/.env
new file mode 100644
index 0000000..a00d6d5
--- /dev/null
+++ b/.env
@@ -0,0 +1,11 @@
+# Postgres
+DATABASE_HOST=localhost
+DATABASE_NAME=ftgo
+DATABASE_USER=ftgo
+DATABASE_PASSWORD=ftgo
+DATABASE_PORT=5432
+
+# Restate
+RESTATE_HOST=localhost
+RESTATE_ADMIN_PORT=9070
+RESTATE_INGRESS_PORT=8080
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..3c3629e
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1 @@
+node_modules
diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000..0be733b
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,42 @@
+{
+ "root": true,
+ "ignorePatterns": ["**/*"],
+ "plugins": ["@nx"],
+ "overrides": [
+ {
+ "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
+ "rules": {
+ "@nx/enforce-module-boundaries": [
+ "error",
+ {
+ "enforceBuildableLibDependency": true,
+ "allow": [],
+ "depConstraints": [
+ {
+ "sourceTag": "*",
+ "onlyDependOnLibsWithTags": ["*"]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "files": ["*.ts", "*.tsx"],
+ "extends": ["plugin:@nx/typescript"],
+ "rules": {}
+ },
+ {
+ "files": ["*.js", "*.jsx"],
+ "extends": ["plugin:@nx/javascript"],
+ "rules": {}
+ },
+ {
+ "files": ["*.spec.ts", "*.spec.tsx", "*.spec.js", "*.spec.jsx"],
+ "env": {
+ "jest": true
+ },
+ "rules": {}
+ }
+ ]
+}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..12d2dd5
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,39 @@
+name: CI
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+
+permissions:
+ actions: read
+ contents: read
+
+jobs:
+ main:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+
+ - uses: oven-sh/setup-bun@v1
+ with:
+ bun-version: latest
+
+
+ # This enables task distribution via Nx Cloud
+ # Run this command as early as possible, before dependencies are installed
+ # Learn more at https://nx.dev/ci/reference/nx-cloud-cli#npx-nxcloud-startcirun
+ - run: bunx nx-cloud start-ci-run --distribute-on="3 linux-medium-js" --stop-agents-after="build"
+
+
+ - run: bun install --no-cache
+ - uses: nrwl/nx-set-shas@v4
+
+ # Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
+ # - run: bun nx-cloud record -- echo Hello World
+ # Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
+ - run: bun nx affected -t lint test build
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4f4d87b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,42 @@
+# See http://help.github.com/ignore-files/ for more about ignoring files.
+
+# compiled output
+dist
+tmp
+/out-tsc
+
+# dependencies
+node_modules
+
+# IDEs and editors
+/.idea
+.project
+.classpath
+.c9/
+*.launch
+.settings/
+*.sublime-workspace
+
+# IDE - VSCode
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+
+# misc
+/.sass-cache
+/connect.lock
+/coverage
+/libpeerconnection.log
+npm-debug.log
+yarn-error.log
+testem.log
+/typings
+
+# System Files
+.DS_Store
+Thumbs.db
+
+.nx/cache
+.nx/workspace-data
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..e26f0b3
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,5 @@
+# Add files here to ignore them from prettier formatting
+/dist
+/coverage
+/.nx/cache
+/.nx/workspace-data
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..1968d4f
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,7 @@
+{
+ "trailingComma": "all",
+ "bracketSpacing": true,
+ "tabWidth": 2,
+ "singleQuote": true,
+ "arrowParens": "avoid"
+}
diff --git a/.tool-versions b/.tool-versions
new file mode 100644
index 0000000..ba4598a
--- /dev/null
+++ b/.tool-versions
@@ -0,0 +1,2 @@
+bun 1.1.22
+nodejs 22.6.0
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..97e81d4
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,7 @@
+{
+ "recommendations": [
+ "nrwl.angular-console",
+ "esbenp.prettier-vscode",
+ "firsttris.vscode-jest-runner"
+ ]
+}
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..187776f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,76 @@
+# DeepkitFtgoExample
+
+
+
+✨ **This workspace has been generated by [Nx, Smart Monorepos · Fast CI.](https://nx.dev)** ✨
+
+## Integrate with editors
+
+Enhance your Nx experience by installing [Nx Console](https://nx.dev/nx-console) for your favorite editor. Nx Console
+provides an interactive UI to view your projects, run tasks, generate code, and more! Available for VSCode, IntelliJ and
+comes with a LSP for Vim users.
+
+## Nx plugins and code generators
+
+Add Nx plugins to leverage their code generators and automated, inferred tasks.
+
+```
+# Add plugin
+npx nx add @nx/react
+
+# Use code generator
+npx nx generate @nx/react:app demo
+
+# Run development server
+npx nx serve demo
+
+# View project details
+npx nx show project demo --web
+```
+
+Run `npx nx list` to get a list of available plugins and whether they have generators. Then run `npx nx list ` to see what generators are available.
+
+Learn more about [code generators](https://nx.dev/features/generate-code) and [inferred tasks](https://nx.dev/concepts/inferred-tasks) in the docs.
+
+## Running tasks
+
+To execute tasks with Nx use the following syntax:
+
+```
+npx nx <...options>
+```
+
+You can also run multiple targets:
+
+```
+npx nx run-many -t
+```
+
+..or add `-p` to filter specific projects
+
+```
+npx nx run-many -t -p
+```
+
+Targets can be defined in the `package.json` or `projects.json`. Learn more [in the docs](https://nx.dev/features/run-tasks).
+
+## Set up CI!
+
+Nx comes with local caching already built-in (check your `nx.json`). On CI you might want to go a step further.
+
+- [Set up remote caching](https://nx.dev/features/share-your-cache)
+- [Set up task distribution across multiple machines](https://nx.dev/nx-cloud/features/distribute-task-execution)
+- [Learn more how to setup CI](https://nx.dev/recipes/ci)
+
+## Explore the project graph
+
+Run `npx nx graph` to show the graph of the workspace.
+It will show tasks that you can run with Nx.
+
+- [Learn more about Exploring the Project Graph](https://nx.dev/core-features/explore-graph)
+
+## Connect with us!
+
+- [Join the community](https://nx.dev/community)
+- [Subscribe to the Nx Youtube Channel](https://www.youtube.com/@nxdevtools)
+- [Follow us on Twitter](https://twitter.com/nxdevtools)
diff --git a/accounting-service-api/.eslintrc.json b/accounting-service-api/.eslintrc.json
new file mode 100644
index 0000000..4069f0d
--- /dev/null
+++ b/accounting-service-api/.eslintrc.json
@@ -0,0 +1,30 @@
+{
+ "extends": ["../.eslintrc.json"],
+ "ignorePatterns": ["!**/*"],
+ "overrides": [
+ {
+ "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
+ "rules": {}
+ },
+ {
+ "files": ["*.ts", "*.tsx"],
+ "rules": {}
+ },
+ {
+ "files": ["*.js", "*.jsx"],
+ "rules": {}
+ },
+ {
+ "files": ["*.json"],
+ "parser": "jsonc-eslint-parser",
+ "rules": {
+ "@nx/dependency-checks": [
+ "error",
+ {
+ "ignoredFiles": ["{projectRoot}/vite.config.{js,ts,mjs,mts}"]
+ }
+ ]
+ }
+ }
+ ]
+}
diff --git a/accounting-service-api/README.md b/accounting-service-api/README.md
new file mode 100644
index 0000000..1f26b18
--- /dev/null
+++ b/accounting-service-api/README.md
@@ -0,0 +1,11 @@
+# accounting-service-api
+
+This library was generated with [Nx](https://nx.dev).
+
+## Building
+
+Run `nx build accounting-service-api` to build the library.
+
+## Running unit tests
+
+Run `nx test accounting-service-api` to execute the unit tests via [Vitest](https://vitest.dev/).
diff --git a/accounting-service-api/package.json b/accounting-service-api/package.json
new file mode 100644
index 0000000..1683b9f
--- /dev/null
+++ b/accounting-service-api/package.json
@@ -0,0 +1,10 @@
+{
+ "name": "@ftgo/accounting-service-api",
+ "version": "0.0.1",
+ "dependencies": {
+ "tslib": "^2.3.0"
+ },
+ "main": "./src/index.js",
+ "typings": "./src/index.d.ts",
+ "private": true
+}
diff --git a/accounting-service-api/project.json b/accounting-service-api/project.json
new file mode 100644
index 0000000..7ba573f
--- /dev/null
+++ b/accounting-service-api/project.json
@@ -0,0 +1,26 @@
+{
+ "name": "accounting-service-api",
+ "$schema": "../node_modules/nx/schemas/project-schema.json",
+ "sourceRoot": "accounting-service-api/src",
+ "projectType": "library",
+ "tags": [],
+ "targets": {
+ "build": {
+ "executor": "@nx/js:tsc",
+ "outputs": ["{options.outputPath}"],
+ "options": {
+ "outputPath": "dist/accounting-service-api",
+ "main": "accounting-service-api/src/index.ts",
+ "tsConfig": "accounting-service-api/tsconfig.lib.json",
+ "assets": ["accounting-service-api/*.md"]
+ }
+ },
+ "test": {
+ "executor": "@nx/vite:test",
+ "outputs": ["{options.reportsDirectory}"],
+ "options": {
+ "reportsDirectory": "../coverage/accounting-service-api"
+ }
+ }
+ }
+}
diff --git a/accounting-service-api/src/index.ts b/accounting-service-api/src/index.ts
new file mode 100644
index 0000000..29fd230
--- /dev/null
+++ b/accounting-service-api/src/index.ts
@@ -0,0 +1 @@
+export * from './lib/accounting-service-api';
diff --git a/accounting-service-api/src/lib/order-service-api.spec.ts b/accounting-service-api/src/lib/order-service-api.spec.ts
new file mode 100644
index 0000000..c09df56
--- /dev/null
+++ b/accounting-service-api/src/lib/order-service-api.spec.ts
@@ -0,0 +1,7 @@
+import { orderServiceApi } from './accounting-service-api';
+
+describe('orderServiceApi', () => {
+ it('should work', () => {
+ expect(orderServiceApi()).toEqual('accounting-service-api');
+ });
+});
diff --git a/accounting-service-api/src/lib/order-service-api.ts b/accounting-service-api/src/lib/order-service-api.ts
new file mode 100644
index 0000000..e07c024
--- /dev/null
+++ b/accounting-service-api/src/lib/order-service-api.ts
@@ -0,0 +1,3 @@
+export function orderServiceApi(): string {
+ return 'accounting-service-api';
+}
diff --git a/accounting-service-api/tsconfig.json b/accounting-service-api/tsconfig.json
new file mode 100644
index 0000000..e236e0f
--- /dev/null
+++ b/accounting-service-api/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "../tsconfig.base.json",
+ "files": [],
+ "include": [],
+ "references": [
+ {
+ "path": "./tsconfig.lib.json"
+ },
+ {
+ "path": "./tsconfig.spec.json"
+ }
+ ]
+}
diff --git a/accounting-service-api/tsconfig.lib.json b/accounting-service-api/tsconfig.lib.json
new file mode 100644
index 0000000..2fd1e3f
--- /dev/null
+++ b/accounting-service-api/tsconfig.lib.json
@@ -0,0 +1,10 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../dist/out-tsc",
+ "declaration": true,
+ "types": ["node"]
+ },
+ "include": ["src/**/*.ts"],
+ "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"]
+}
diff --git a/accounting-service-api/tsconfig.spec.json b/accounting-service-api/tsconfig.spec.json
new file mode 100644
index 0000000..4f7fed6
--- /dev/null
+++ b/accounting-service-api/tsconfig.spec.json
@@ -0,0 +1,26 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../dist/out-tsc",
+ "types": [
+ "vitest/globals",
+ "vitest/importMeta",
+ "vite/client",
+ "node",
+ "vitest"
+ ]
+ },
+ "include": [
+ "vite.config.ts",
+ "vitest.config.ts",
+ "src/**/*.test.ts",
+ "src/**/*.spec.ts",
+ "src/**/*.test.tsx",
+ "src/**/*.spec.tsx",
+ "src/**/*.test.js",
+ "src/**/*.spec.js",
+ "src/**/*.test.jsx",
+ "src/**/*.spec.jsx",
+ "src/**/*.d.ts"
+ ]
+}
diff --git a/accounting-service-api/vite.config.ts b/accounting-service-api/vite.config.ts
new file mode 100644
index 0000000..ff00450
--- /dev/null
+++ b/accounting-service-api/vite.config.ts
@@ -0,0 +1,27 @@
+import { defineConfig } from 'vite';
+
+import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
+
+export default defineConfig({
+ root: __dirname,
+ cacheDir: '../node_modules/.vite/accounting-service-api',
+
+ plugins: [nxViteTsPaths()],
+
+ // Uncomment this if you are using workers.
+ // worker: {
+ // plugins: [ nxViteTsPaths() ],
+ // },
+
+ test: {
+ watch: false,
+ globals: true,
+ environment: 'node',
+ include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
+ reporters: ['default'],
+ coverage: {
+ reportsDirectory: '../coverage/accounting-service-api',
+ provider: 'v8',
+ },
+ },
+});
diff --git a/accounting-service/.eslintrc.json b/accounting-service/.eslintrc.json
new file mode 100644
index 0000000..1ad7cf0
--- /dev/null
+++ b/accounting-service/.eslintrc.json
@@ -0,0 +1,18 @@
+{
+ "extends": ["../.eslintrc.json"],
+ "ignorePatterns": ["!**/*"],
+ "overrides": [
+ {
+ "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
+ "rules": {}
+ },
+ {
+ "files": ["*.ts", "*.tsx"],
+ "rules": {}
+ },
+ {
+ "files": ["*.js", "*.jsx"],
+ "rules": {}
+ }
+ ]
+}
diff --git a/accounting-service/project.json b/accounting-service/project.json
new file mode 100644
index 0000000..cdd5eec
--- /dev/null
+++ b/accounting-service/project.json
@@ -0,0 +1,104 @@
+{
+ "name": "accounting-service",
+ "$schema": "../node_modules/nx/schemas/project-schema.json",
+ "projectType": "application",
+ "prefix": "ftgo",
+ "sourceRoot": "accounting-service/src",
+ "tags": [],
+ "targets": {
+ "build": {
+ "executor": "@nx/vite:build",
+ "outputs": ["{options.outputPath}"],
+ "defaultConfiguration": "development",
+ "inputs": ["accounting-service"],
+ "options": {
+ "buildLibsFromSource": false,
+ "generatePackageJson": true,
+ "outputPath": "dist/accounting-service",
+ "ssr": "src/main.ts",
+ "emptyOutDir": true,
+ "outputFileName": "main.mjs"
+ },
+ "configurations": {
+ "development": {
+ "mode": "development"
+ },
+ "production": {
+ "mode": "production"
+ }
+ }
+ },
+ "serve": {
+ "executor": "@nx/js:node",
+ "defaultConfiguration": "development",
+ "options": {
+ "buildTarget": "accounting-service:build",
+ "watch": false
+ },
+ "configurations": {
+ "development": {
+ "buildTarget": "accounting-service:build:development",
+ "args": ["accounting-service:start"],
+ "watch": true
+ },
+ "production": {
+ "buildTarget": "accounting-service:build:production"
+ },
+ "staging": {
+ "buildTarget": "accounting-service:build:staging"
+ }
+ }
+ },
+ "container": {
+ "executor": "@nx-tools/nx-container:build",
+ "dependsOn": ["build"],
+ "options": {
+ "engine": "docker",
+ "push": true,
+ "cache-from": ["type=gha"],
+ "cache-to": ["type=gha,mode=max"],
+ "metadata": {
+ "images": ["ghcr.io/zapxme/accounting-service"],
+ "tags": [
+ "type=schedule",
+ "type=ref,event=branch",
+ "type=ref,event=tag",
+ "type=ref,event=pr",
+ "type=sha,prefix=sha-"
+ ]
+ }
+ }
+ },
+ "create-migration": {
+ "executor": "@nx/js:node",
+ "defaultConfiguration": "development",
+ "options": {
+ "buildTarget": "accounting-service:build",
+ "args": [
+ "migration:create",
+ "--migrationDir",
+ "accounting-service/src/migrations"
+ ],
+ "watch": false
+ },
+ "configurations": {
+ "development": {
+ "buildTarget": "accounting-service:build:development"
+ },
+ "production": {
+ "buildTarget": "accounting-service:build:production"
+ },
+ "staging": {
+ "buildTarget": "accounting-service:build:staging"
+ }
+ }
+ },
+ "lint": {
+ "executor": "@nx/eslint:lint"
+ },
+ "test": {
+ "executor": "@nx/vite:test",
+ "outputs": ["{projectRoot}/coverage"]
+ }
+ }
+}
diff --git a/accounting-service/src/assets/.gitkeep b/accounting-service/src/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/accounting-service/src/main.ts b/accounting-service/src/main.ts
new file mode 100644
index 0000000..3451e9b
--- /dev/null
+++ b/accounting-service/src/main.ts
@@ -0,0 +1 @@
+console.log('Hello World');
diff --git a/accounting-service/tsconfig.app.json b/accounting-service/tsconfig.app.json
new file mode 100644
index 0000000..aa1b0e5
--- /dev/null
+++ b/accounting-service/tsconfig.app.json
@@ -0,0 +1,9 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../dist/out-tsc",
+ "types": []
+ },
+ "include": ["src/**/*.ts"],
+ "exclude": ["src/**/*.test.ts", "src/**/*.spec.ts"]
+}
diff --git a/accounting-service/tsconfig.json b/accounting-service/tsconfig.json
new file mode 100644
index 0000000..60bce4b
--- /dev/null
+++ b/accounting-service/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../tsconfig.base.json",
+ "compilerOptions": {
+ "strictPropertyInitialization": false,
+ "types": ["vite/client"]
+ },
+ "files": [],
+ "include": [],
+ "references": [
+ {
+ "path": "./tsconfig.app.json"
+ },
+ {
+ "path": "./tsconfig.spec.json"
+ }
+ ]
+}
diff --git a/accounting-service/tsconfig.spec.json b/accounting-service/tsconfig.spec.json
new file mode 100644
index 0000000..bd57cb3
--- /dev/null
+++ b/accounting-service/tsconfig.spec.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../dist/out-tsc",
+ "types": ["vitest/globals"]
+ },
+ "include": ["src/**/*.ts"]
+}
diff --git a/accounting-service/vite.config.ts b/accounting-service/vite.config.ts
new file mode 100644
index 0000000..876a12c
--- /dev/null
+++ b/accounting-service/vite.config.ts
@@ -0,0 +1,6 @@
+// eslint-disable-next-line @nx/enforce-module-boundaries
+import { defineNodeConfig } from '../node-vite-config';
+
+export default defineNodeConfig({
+ root: __dirname,
+});
diff --git a/api-gateway/.eslintrc.json b/api-gateway/.eslintrc.json
new file mode 100644
index 0000000..1ad7cf0
--- /dev/null
+++ b/api-gateway/.eslintrc.json
@@ -0,0 +1,18 @@
+{
+ "extends": ["../.eslintrc.json"],
+ "ignorePatterns": ["!**/*"],
+ "overrides": [
+ {
+ "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
+ "rules": {}
+ },
+ {
+ "files": ["*.ts", "*.tsx"],
+ "rules": {}
+ },
+ {
+ "files": ["*.js", "*.jsx"],
+ "rules": {}
+ }
+ ]
+}
diff --git a/api-gateway/project.json b/api-gateway/project.json
new file mode 100644
index 0000000..c484484
--- /dev/null
+++ b/api-gateway/project.json
@@ -0,0 +1,104 @@
+{
+ "name": "api-gateway",
+ "$schema": "../node_modules/nx/schemas/project-schema.json",
+ "projectType": "application",
+ "prefix": "ftgo",
+ "sourceRoot": "api-gateway/src",
+ "tags": [],
+ "targets": {
+ "build": {
+ "executor": "@nx/vite:build",
+ "outputs": ["{options.outputPath}"],
+ "defaultConfiguration": "development",
+ "inputs": ["api-gateway"],
+ "options": {
+ "buildLibsFromSource": false,
+ "generatePackageJson": true,
+ "outputPath": "dist/api-gateway",
+ "ssr": "src/main.ts",
+ "emptyOutDir": true,
+ "outputFileName": "main.mjs"
+ },
+ "configurations": {
+ "development": {
+ "mode": "development"
+ },
+ "production": {
+ "mode": "production"
+ }
+ }
+ },
+ "serve": {
+ "executor": "@nx/js:node",
+ "defaultConfiguration": "development",
+ "options": {
+ "buildTarget": "api-gateway:build",
+ "watch": false
+ },
+ "configurations": {
+ "development": {
+ "buildTarget": "api-gateway:build:development",
+ "args": ["api-gateway:start"],
+ "watch": true
+ },
+ "production": {
+ "buildTarget": "api-gateway:build:production"
+ },
+ "staging": {
+ "buildTarget": "api-gateway:build:staging"
+ }
+ }
+ },
+ "container": {
+ "executor": "@nx-tools/nx-container:build",
+ "dependsOn": ["build"],
+ "options": {
+ "engine": "docker",
+ "push": true,
+ "cache-from": ["type=gha"],
+ "cache-to": ["type=gha,mode=max"],
+ "metadata": {
+ "images": ["ghcr.io/zapxme/api-gateway"],
+ "tags": [
+ "type=schedule",
+ "type=ref,event=branch",
+ "type=ref,event=tag",
+ "type=ref,event=pr",
+ "type=sha,prefix=sha-"
+ ]
+ }
+ }
+ },
+ "create-migration": {
+ "executor": "@nx/js:node",
+ "defaultConfiguration": "development",
+ "options": {
+ "buildTarget": "api-gateway:build",
+ "args": [
+ "migration:create",
+ "--migrationDir",
+ "api-gateway/src/migrations"
+ ],
+ "watch": false
+ },
+ "configurations": {
+ "development": {
+ "buildTarget": "api-gateway:build:development"
+ },
+ "production": {
+ "buildTarget": "api-gateway:build:production"
+ },
+ "staging": {
+ "buildTarget": "api-gateway:build:staging"
+ }
+ }
+ },
+ "lint": {
+ "executor": "@nx/eslint:lint"
+ },
+ "test": {
+ "executor": "@nx/vite:test",
+ "outputs": ["{projectRoot}/coverage"]
+ }
+ }
+}
diff --git a/api-gateway/src/assets/.gitkeep b/api-gateway/src/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/api-gateway/src/main.ts b/api-gateway/src/main.ts
new file mode 100644
index 0000000..3451e9b
--- /dev/null
+++ b/api-gateway/src/main.ts
@@ -0,0 +1 @@
+console.log('Hello World');
diff --git a/api-gateway/tsconfig.app.json b/api-gateway/tsconfig.app.json
new file mode 100644
index 0000000..aa1b0e5
--- /dev/null
+++ b/api-gateway/tsconfig.app.json
@@ -0,0 +1,9 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../dist/out-tsc",
+ "types": []
+ },
+ "include": ["src/**/*.ts"],
+ "exclude": ["src/**/*.test.ts", "src/**/*.spec.ts"]
+}
diff --git a/api-gateway/tsconfig.json b/api-gateway/tsconfig.json
new file mode 100644
index 0000000..60bce4b
--- /dev/null
+++ b/api-gateway/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../tsconfig.base.json",
+ "compilerOptions": {
+ "strictPropertyInitialization": false,
+ "types": ["vite/client"]
+ },
+ "files": [],
+ "include": [],
+ "references": [
+ {
+ "path": "./tsconfig.app.json"
+ },
+ {
+ "path": "./tsconfig.spec.json"
+ }
+ ]
+}
diff --git a/api-gateway/tsconfig.spec.json b/api-gateway/tsconfig.spec.json
new file mode 100644
index 0000000..bd57cb3
--- /dev/null
+++ b/api-gateway/tsconfig.spec.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../dist/out-tsc",
+ "types": ["vitest/globals"]
+ },
+ "include": ["src/**/*.ts"]
+}
diff --git a/api-gateway/vite.config.ts b/api-gateway/vite.config.ts
new file mode 100644
index 0000000..876a12c
--- /dev/null
+++ b/api-gateway/vite.config.ts
@@ -0,0 +1,6 @@
+// eslint-disable-next-line @nx/enforce-module-boundaries
+import { defineNodeConfig } from '../node-vite-config';
+
+export default defineNodeConfig({
+ root: __dirname,
+});
diff --git a/bun.lockb b/bun.lockb
new file mode 100755
index 0000000000000000000000000000000000000000..0653049dac1cd13c16f0fdaaa35c639fabc92bc2
GIT binary patch
literal 375008
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
z