Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
477 commits
Select commit Hold shift + click to select a range
a241a11
Merge pull request #307 from dreamgeneX/feat/vitest-integration-setup…
Mimah97 May 27, 2026
f20a48a
Merge pull request #308 from dreamgeneX/feat/env-positions-route-242
Mimah97 May 27, 2026
9b3d3b1
Merge pull request #309 from dreamgeneX/feat/vitest-prisma-schema-243
Mimah97 May 27, 2026
3e87ff9
Merge pull request #310 from dreamgeneX/feat/migration-validator-type…
Mimah97 May 27, 2026
cd3010c
Merge branch 'dev' into feature/onboarding-tasks
Mimah97 May 27, 2026
eea22a3
Merge pull request #311 from lonerthefirst3-sudo/feature/onboarding-t…
Mimah97 May 27, 2026
4a024f1
Merge pull request #313 from NUMBER72857/feat/236-redis-env-example
Mimah97 May 27, 2026
fb2a243
Merge pull request #312 from NUMBER72857/feat/233-improve-error-handl…
Mimah97 May 27, 2026
36cfb1f
Merge pull request #314 from NUMBER72857/feat/234-openapi-input-valid…
Mimah97 May 27, 2026
058e018
Merge pull request #315 from NUMBER72857/feat/235-document-rate-limiter
Mimah97 May 27, 2026
957a7c2
Merge pull request #370 from kpassito/codex/indexer-cursor-env-example
Mimah97 May 27, 2026
a4c1f4c
docs: document NODE_ENV error handler behaviour in .env.example
brite-side0 May 28, 2026
2bc8119
feat(api,indexer,oracle,workers): address issues #346-#349
abdegenius May 28, 2026
67abb61
Merge pull request #372 from abdegenius/feature/346-349-api-indexer-o…
Mimah97 May 28, 2026
610c4c7
Merge pull request #371 from brite-side0/docs/add-node-env-error-hand…
Mimah97 May 28, 2026
ba101a9
list
llinsss May 28, 2026
39ff59e
feat: add TypeScript CorsConfig type, eliminate any in CORS configura…
May 28, 2026
23ff270
test: add Vitest tests for request context middleware (#231)
May 28, 2026
027c7a9
chore: add comprehensive env var documentation to .env.example (#230)
May 28, 2026
f77819a
test: cover invalid Prisma order input returns 400 (#228)
May 28, 2026
4882fe3
Merge branch 'dev' into feat/230-env-example
dreamgenies May 28, 2026
a0bc097
bnm
kaynaomi-oss May 28, 2026
2db6271
feat: add Prisma schema type export, env docs, and submission queue docs
May 28, 2026
addd96b
feat: Complete onboarding tasks #297 #298 #299 #344
BethelDev-io May 28, 2026
8e7c031
fix: add input validation to logger
Saravanakumar2602 May 28, 2026
afacda8
fix: sanitize invalid logger user addresses
Saravanakumar2602 May 28, 2026
032f0f5
Merge pull request #373 from llinsss/oracle
Mimah97 May 28, 2026
6f42e4a
Merge branch 'Vatix-Protocol:dev' into srvn26
Saravanakumar2602 May 28, 2026
4f761e3
Merge pull request #374 from dreamgenies/feat/230-env-example
Mimah97 May 28, 2026
fb48119
fix: use valid Stellar base32 addresses in logger tests
Saravanakumar2602 May 28, 2026
87eed35
style: fix prettier line length in logger.test.ts
Saravanakumar2602 May 28, 2026
0464c64
Merge pull request #375 from dreamgenies/feat/228-prisma-input-valida…
Mimah97 May 28, 2026
2ac9081
Merge pull request #376 from dreamgenies/feat/231-request-context-test
Mimah97 May 28, 2026
87d3bb6
Merge pull request #377 from dreamgenies/feat/232-cors-config-type
Mimah97 May 28, 2026
31e9933
Merge pull request #378 from kaynaomi-oss/kwa
Mimah97 May 28, 2026
28709c2
Merge branch 'dev' into issue/341-339-338-345-prisma-env-docs
Mimah97 May 28, 2026
4e1b8f1
Merge pull request #379 from Mathews-25/issue/341-339-338-345-prisma-…
Mimah97 May 28, 2026
900d87d
Merge branch 'dev' into feat/onboarding-tasks-297-298-299-344
Mimah97 May 28, 2026
ad1e30e
Merge pull request #380 from BethelDev-io/feat/onboarding-tasks-297-2…
Mimah97 May 28, 2026
e2bfefb
Merge pull request #381 from Saravanakumar2602/srvn26
Mimah97 May 28, 2026
a0909e3
feat(shared): improve log message in env loader to use structured JSO…
gidadoabdullateef5 May 28, 2026
7f2e4d4
improve(workers): add structured fields to graceful shutdown logs
Saravanakumar2602 May 29, 2026
75fdae7
style: apply prettier formatting to shutdown log changes
Saravanakumar2602 May 29, 2026
27ed8b5
feat: resolve 4 onboarding issues
May 29, 2026
99a2ac2
docs: document env validation in docs/env-validation.md
munyanezaarmel May 30, 2026
d195b2d
feat: onboarding tasks for indexer and oracle (#259 #260 #261 #262)
jasmine874 May 30, 2026
65c1d3d
feat(indexer): resolve issues #255 #256 #257 #258
joel-metal May 30, 2026
781b7ea
Merge pull request #382 from Saravanakumar2602/improve/graceful-shutd…
Mimah97 May 30, 2026
4b1e1f8
Merge pull request #383 from gidadoabdullateef5/feature/issue-245-imp…
Mimah97 May 30, 2026
607a03d
Merge pull request #384 from chindosunday/feat/onboarding-issues
Mimah97 May 30, 2026
071bf7c
feat: add input validation to integration test setup (#252)
Nuwe10 May 31, 2026
cc9185f
feat: add SERVICE_NAME env var to .env.example for health route (#254)
Nuwe10 May 31, 2026
1280eab
feat: improve log messages in Redis client (#251)
Nuwe10 May 31, 2026
b2a81d7
docs: clarify NODE_ENV env var comment for error handler (#248)
Nuwe10 May 31, 2026
a459350
feat: add input validation to timeout handler
May 31, 2026
58f3d7a
docs: add signature helper env var to .env.example
May 31, 2026
84359d5
docs: document price fetcher
May 31, 2026
47a242f
feat: improve log message in submission queue
May 31, 2026
d8caba6
feat(oracle): improve log message in price fetcher
OxDev-max May 31, 2026
0b2d253
test(workers): add vitest test for dead letter log
OxDev-max May 31, 2026
854094c
feat(workers): add TypeScript type for finalization job
OxDev-max May 31, 2026
3dd74dd
feat(workers): improve log message in queue consumer
OxDev-max May 31, 2026
cc78960
Merge pull request #385 from munyanezaarmel/docs/env-validation-350
Mimah97 May 31, 2026
7bbc56b
Merge pull request #386 from jasmine874/feat/indexer-oracle-onboardin…
Mimah97 May 31, 2026
1f0a0ff
Merge branch 'dev' into feat/indexer-issues-255-256-257-258
Mimah97 May 31, 2026
60cdd2b
Merge pull request #387 from joel-metal/feat/indexer-issues-255-256-2…
Mimah97 May 31, 2026
918450c
Merge pull request #388 from Nuwe10/feat/input-validation-integration…
Mimah97 May 31, 2026
6798ed7
Merge pull request #389 from Nuwe10/feat/health-route-env-var-254
Mimah97 May 31, 2026
0dd8e0e
Merge pull request #390 from Nuwe10/feat/improve-redis-log-messages-251
Mimah97 May 31, 2026
2286db0
Merge pull request #391 from Nuwe10/feat/error-handler-env-var-248
Mimah97 May 31, 2026
746bde6
Merge pull request #392 from Mac-5/fix-onboarding-issues
Mimah97 May 31, 2026
1d82e1a
Merge pull request #393 from OxDev-max/onboarding-fixes
Mimah97 May 31, 2026
826ecbf
test(indexer): add vitest tests for metrics log
Saravanakumar2602 May 31, 2026
6db1839
chore: add ORACLE_SECRET_KEY to .env.example
james2177 May 31, 2026
5f0142e
docs: document signature helper
james2177 May 31, 2026
9d90724
test: add Vitest test for submission queue
james2177 May 31, 2026
c76a3e7
feat: add TypeScript type for timeout handler
james2177 May 31, 2026
93d1699
test(oracle): add Vitest test for config loader
dami-005 May 31, 2026
c244d9c
refactor(oracle): add TypeScript type for submission queue
dami-005 May 31, 2026
699a388
refactor(oracle): improve log message in timeout handler
dami-005 May 31, 2026
ecde6a2
feat(oracle): add input validation to price fetcher
dami-005 May 31, 2026
ed1f969
chore: complete onboarding tasks for logger, indexer, oracle, and wor…
orunganiekan May 31, 2026
535caef
feat(workers): add input validation to graceful shutdown
levi0005 May 31, 2026
467b5eb
docs: document dead letter log in docs/
levi0005 May 31, 2026
b35780d
chore: add FINALIZATION_JOB_TIMEOUT_MS env var to .env.example
levi0005 May 31, 2026
b756b8d
test(workers): add Vitest test for queue consumer
levi0005 May 31, 2026
73abeaf
Add SUBMISSION_QUEUE_NAME env var to .env.example
May 31, 2026
79067ef
Merge pull request #394 from Saravanakumar2602/srvn26
Mimah97 May 31, 2026
c0844ed
Merge pull request #395 from james2177/feature/oracle-onboarding-tasks
Mimah97 May 31, 2026
bbd758e
Merge pull request #396 from dami-005/fix/onboarding-tasks-2
Mimah97 May 31, 2026
243928c
Merge branch 'dev' into chore/onboarding-topup-tasks
Mimah97 May 31, 2026
64065ed
Merge pull request #397 from orunganiekan/chore/onboarding-topup-tasks
Mimah97 May 31, 2026
61409aa
Merge pull request #399 from levi0005/fix/workers-onboarding-tasks
Mimah97 May 31, 2026
0218858
Merge pull request #400 from ZuLu0890/add-submission-queue-env-var
Mimah97 May 31, 2026
d1e8026
Improve oracle submission queue logging with structured fields
unixfundz May 31, 2026
066e859
test(api): add Vitest test for docker-compose (#316)
doradenise-jpg May 31, 2026
04f3800
feat(shared): export Env type from shared package index (#295)
doradenise-jpg May 31, 2026
571a26e
fix(shared): improve env validation log message structure (#296)
doradenise-jpg May 31, 2026
3c55728
feat(indexer): use IndexerMetricsLog type for metrics log (#317)
doradenise-jpg Jun 1, 2026
7358163
Fixes #318
unixfundz Jun 1, 2026
a2131a7
Fixes Vatix-Protocol/vatix-backend#318
unixfundz Jun 1, 2026
415fd4a
Improve logging for unknown Soroban network passphrase
fathiaoyinloye Jun 1, 2026
8e262e2
feat: add structured logging and set appropriate log level in config …
fathiaoyinloye Jun 1, 2026
d19d1fc
feat(shared): add ConfigValidationError with statusCode 400 to config…
john2ydep2-gt Jun 1, 2026
4e07b3d
docs: link env-validation.md from README Documentation section (#292)
john2ydep2-gt Jun 1, 2026
a3a796c
chore: add test utility env vars to .env.example (#293)
john2ydep2-gt Jun 1, 2026
7d98852
test(shared): add Vitest test for logger under tests/ (#294)
john2ydep2-gt Jun 1, 2026
435a2ac
feat(shared): add TypeScript types for test utilities (#289)
smiletech092-code Jun 1, 2026
9b0159e
feat(workers): add WORKERS_SHUTDOWN_TIMEOUT_MS env var to .env.exampl…
smiletech092-code Jun 1, 2026
1c5c114
test(shared): add Vitest tests for env validation (#288)
smiletech092-code Jun 1, 2026
f85eb8f
fix(shared): improve log message in logger (#290)
smiletech092-code Jun 1, 2026
2817939
test(workers): add fractional challengeWindowSeconds edge-case
Mayorlay Jun 1, 2026
0e6d42d
feat(workers): add input validation to finalization job
AnnabelJoe Jun 1, 2026
f2673e9
docs(api): add NODE_ENV env var comment to .env.example for error han…
AnnabelJoe Jun 1, 2026
c53e69c
feat(shared): add ILogger interface type (#335)
alexatsejames-alt Jun 1, 2026
eb37336
Merge pull request #401 from unixfundz/issue/318/oracle-submission-qu…
Mimah97 Jun 1, 2026
87184c2
Merge pull request #402 from doradenise-jpg/feat/316-295-296-317-onbo…
Mimah97 Jun 1, 2026
976b0c7
Merge pull request #403 from fathiaoyinloye/feature/improve-config-lo…
Mimah97 Jun 1, 2026
617b992
Merge pull request #404 from john2ydep2-gt/feat/291-294-shared-improv…
Mimah97 Jun 1, 2026
7b13386
Merge branch 'dev' into feat/onboarding-tasks-287-288-289-290
Mimah97 Jun 1, 2026
488714c
Merge pull request #405 from smiletech092-code/feat/onboarding-tasks-…
Mimah97 Jun 1, 2026
9331a54
Merge pull request #406 from Mayorlay/feat/finalization-job-validation
Mimah97 Jun 1, 2026
b8e8b28
Merge pull request #407 from AnnabelJoe/feat/workers-finalization-inp…
Mimah97 Jun 1, 2026
e065d46
Merge pull request #408 from AnnabelJoe/feat/api-node-env-example
Mimah97 Jun 1, 2026
88cedf8
Merge pull request #409 from alexitsejames-cpu/feat/335-logger-type
Mimah97 Jun 1, 2026
2d8fd6c
feat(shared): add ILogger type with meta param, use across apps
alexatsejames-alt Jun 1, 2026
5b2cae4
fix: add packages field to pnpm-workspace.yaml
alexatsejames-alt Jun 1, 2026
1e9feff
Merge pull request #410 from alexitsejames-cpu/feat/335-logger-ilogge…
Mimah97 Jun 1, 2026
e86778f
docs: add environment variable validation details
Jun 2, 2026
2fd71a0
feat: add input validation to docker-compose config (#331)
magaret457 Jun 2, 2026
0662b43
docs: add schema.md callout link to README (#326)
magaret457 Jun 2, 2026
47eb491
docs: document indexer metrics log (#332)
magaret457 Jun 2, 2026
6982602
feat: add ledger cursor env vars to .env.example (#327)
magaret457 Jun 2, 2026
6851002
docs: document env validation for shared config (#320)
devUnixx Jun 2, 2026
0051433
test(api): add Vitest test for integration test setup (#360)
devEunicee Jun 2, 2026
d934fcd
Merge pull request #411 from oscarj007/docs/env-validation-364
Mimah97 Jun 2, 2026
fc63974
Merge pull request #412 from magaret457/feature/issue-331-docker-comp…
Mimah97 Jun 2, 2026
4797f4d
Merge pull request #413 from magaret457/feature/issue-326-document-pr…
Mimah97 Jun 2, 2026
769ed02
Merge pull request #414 from magaret457/feature/issue-332-document-me…
Mimah97 Jun 2, 2026
8c674b5
Merge pull request #415 from magaret457/feature/issue-327-ledger-curs…
Mimah97 Jun 2, 2026
db422d8
Merge pull request #418 from devUnixx/feat/320-env-validation-docs
Mimah97 Jun 2, 2026
8aa67db
Merge pull request #419 from devEunicee/feat/360-integration-test-set…
Mimah97 Jun 2, 2026
dd465d6
docs: document queue consumer in docs/queue-consumer.md
devUnixx Jun 4, 2026
0d1700b
feat(workers): add TypeScript types for graceful shutdown
devUnixx Jun 4, 2026
a11ce45
fix(workers): improve dead-letter log message
devUnixx Jun 4, 2026
f4a52bd
Merge pull request #420 from devUnixx/feat/286-document-queue-consumer
Mimah97 Jun 5, 2026
64d558e
Merge pull request #421 from devUnixx/feat/283-graceful-shutdown-type
Mimah97 Jun 5, 2026
b7d5e27
Merge pull request #422 from devUnixx/feat/284-improve-dead-letter-log
Mimah97 Jun 5, 2026
40f7a3b
style: fix code formatting with Prettier
Mimah97 Jun 9, 2026
7e31636
fix: use MarketNotFoundError for market 404 responses and update inte…
Mimah97 Jun 10, 2026
5173104
fix: correct test addresses and mock setup for positions and markets …
Mimah97 Jun 10, 2026
000bc03
fix: correct test expectations and add test isolation
Mimah97 Jun 10, 2026
c285831
fix: resolve CI test failures from DB lock deadlock and type mismatches
Mimah97 Jun 10, 2026
780e7b2
feat(oracle): add Redis-backed durable submission pipeline
favourawaku Jun 16, 2026
71f6e6e
fix(oracle): handle ioredis stream field formats in dequeue
favourawaku Jun 16, 2026
5e1b9b7
Wire indexer ingestion pipeline from RPC fetch through Prisma batch w…
aji70 Jun 16, 2026
dbf496f
test: include indexer ingestion models in Prisma schema test.
aji70 Jun 16, 2026
e434b31
fix(oracle): correct worker import paths and align tests with CI
favourawaku Jun 16, 2026
f2c5d22
Merge pull request #434 from aji70/dev
Mimah97 Jun 16, 2026
adefe96
Merge pull request #433 from favourawaku/dev
Mimah97 Jun 16, 2026
93ad8cb
feat(orders): wire CLOB matching engine into POST /orders
Tukura11 Jun 16, 2026
f700255
fix(tests): match self-trade error case-insensitively
Tukura11 Jun 17, 2026
d571762
Merge pull request #435 from Tukura11/dev
Mimah97 Jun 17, 2026
9a37681
feat: v1 API Prefix and Eliminate Route Documentation Drift
Dannyswiss1 Jun 17, 2026
18c251d
Merge pull request #436 from Dannyswiss1/feature/v1-API-Prefix
Mimah97 Jun 17, 2026
33786b9
fix: indexer cursor Prisma field drift, tests, and CI typecheck
jhayniffy Jun 18, 2026
2c86031
feat(tests): add integration coverage for orders, admin, and health
jhayniffy Jun 18, 2026
bf3e6ca
feat(positions): make PnL opt-in via ?includePnl on canonical wallet …
victorisiguzoruzoma874 Jun 18, 2026
d16b868
Merge pull request #437 from jhayniffy/fix/indexer-cursor-prisma-field
Mimah97 Jun 19, 2026
f32b781
Merge pull request #438 from devoclan/feature/integration-test-covera…
Mimah97 Jun 19, 2026
53a806b
Merge pull request #455 from victorisiguzoruzoma874/feat/positions-in…
Mimah97 Jun 19, 2026
b91e595
Implement cross-process graceful shutdown
Joeloo1 Jun 19, 2026
959a23d
fix(rate-limiting): audit and align per-route rate limits with endpoi…
Ndifreke000 Jun 19, 2026
3b482c4
feat(orders): add Stellar wallet signature verification for order pla…
priscaenoch Jun 19, 2026
1947178
fix(orders): use self-contained mock factory; update versioning test …
priscaenoch Jun 19, 2026
c1adb38
fix(tests): update integration orders tests to send wallet signatures
priscaenoch Jun 19, 2026
2a3f541
feat(settlement): implement settlement worker consuming Redis queue
priscaenoch Jun 19, 2026
d063012
Merge pull request #460 from priscaenoch/feature/443-settlement-worke…
Mimah97 Jun 19, 2026
7c4c82c
Merge pull request #459 from priscaenoch/feature/448-stellar-wallet-s…
Mimah97 Jun 19, 2026
790f9ed
Merge pull request #458 from Ndifreke000/fix/450-rate-limit-audit
Mimah97 Jun 19, 2026
ac48d6e
fix: resolve graceful shutdown logger type errors and docs formatting
Joeloo1 Jun 19, 2026
cb1bdd9
feat: resolve #449 #452 #454 - orderbook hydration, BullMQ queues, Op…
Debbys-design Jun 20, 2026
b33e62e
feat: oracle main.ts pipeline + pnpm scripts (#441/#439)
Jun 20, 2026
052bc2d
Merge pull request #457 from drips-projects/Cross-process-graceful-sh…
Mimah97 Jun 20, 2026
a8fab33
Merge pull request #462 from BethelDev-io/feature/441-439-oracle-pipe…
Mimah97 Jun 20, 2026
15bcc73
feat: containerize all backend processes with multi-stage Dockerfile …
agnesadoga-creator Jun 20, 2026
94cb579
Merge pull request #463 from agnesadoga-creator/feat/containerize-bac…
Mimah97 Jun 20, 2026
b22a53a
feat: complete OpenAPI spec with contract tests
aliyuHabibu Jun 21, 2026
9389b56
fix(indexer): align parsers with on-chain event shapes
studiomonkeyx Jun 21, 2026
2766e89
feat: implement finalization job with resolution, market update, and …
aliyuHabibu Jun 21, 2026
3466c11
fallback
Emeka000 Jun 21, 2026
d75927c
Merge pull request #466 from Emeka000/fallback
Mimah97 Jun 21, 2026
519da8c
Merge pull request #467 from aliyuHabibu/feat/finalization-job-implem…
Mimah97 Jun 21, 2026
d39fcd5
feat: add durable trades table with idempotent writes and Postgres-ba…
Jun 22, 2026
35f0edf
fix: expand tsconfig coverage to apps/ and packages/, fix surfaced ty…
invalid-email-address Jun 22, 2026
7499019
Merge pull request #469 from Jonniie/fix/tsconfig-apps-packages-coverage
Mimah97 Jun 23, 2026
38c41ac
Merge pull request #468 from chindosunday/feat/durable-trades-table
Mimah97 Jun 23, 2026
327fe4d
Merge pull request #464 from studiomonkeyx/fix/indexer-event-parser-a…
Mimah97 Jun 23, 2026
6388d2e
Merge pull request #461 from Debbys-design/feat/449-452-454-orderbook…
Mimah97 Jun 23, 2026
3b66803
test: add route contract test asserting parity between registered rou…
Saboleee Jun 25, 2026
f013f63
feat: register GET /v1/ready readiness probe and disable test routes …
Saboleee Jun 25, 2026
530b04b
test: add health and readiness probe contract tests (#559, #560)
Saboleee Jun 25, 2026
0406d07
feat: apply per-endpoint risk-tier rate limits and document policy (#…
Saboleee Jun 25, 2026
648043f
feat(matching): update lockedCollateral on fill for correct PnL
Inkman007 Jun 26, 2026
b4ca9d7
feat(infra): add settlement-worker Docker target and compose service
Inkman007 Jun 26, 2026
2bb9c88
feat(settlement): implement on-chain settle_trade via Stellar SDK
Inkman007 Jun 26, 2026
77fd81f
feat(oracle): invoke resolve_market on-chain via Stellar SDK
Inkman007 Jun 26, 2026
2318607
Merge pull request #627 from Saboleee/dev
Mimah97 Jun 26, 2026
e0d7d17
Merge pull request #628 from Inkman007/feat/547-locked-collateral-mat…
Mimah97 Jun 26, 2026
e93c18a
Merge pull request #629 from Inkman007/feat/544-settlement-worker-docker
Mimah97 Jun 26, 2026
851b4ba
Merge pull request #630 from Inkman007/feat/545-on-chain-settlement
Mimah97 Jun 26, 2026
11df7cb
Merge pull request #631 from Inkman007/feat/546-oracle-resolve-market
Mimah97 Jun 26, 2026
6253bf3
feat(indexer): wire market_created parser into ingestion loop (#548)
had3sgames Jun 26, 2026
e876263
feat(indexer): persist collateral_deposited events to Postgres (#549)
had3sgames Jun 26, 2026
129cdc1
feat(indexer): reconcile indexed_trades into user_positions on ingest…
had3sgames Jun 26, 2026
0bae5d2
feat(workers): migrate oracle and settlement consumers to BullMQ (#551)
had3sgames Jun 26, 2026
53a2e10
feat: add GET /v1/wallets/:wallet/positions/:marketId sub-route (#556)
Coredevjay Jun 26, 2026
0c512f0
feat: mount interactive OpenAPI docs at /docs (#557)
Coredevjay Jun 26, 2026
3426417
Merge pull request #632 from had3sgames/feat/548-wire-market-created-…
Mimah97 Jun 27, 2026
f635733
Merge pull request #633 from had3sgames/feat/550-reconcile-indexed-tr…
Mimah97 Jun 27, 2026
70d9945
Merge branch 'dev' into feat/549-persist-collateral-deposited
Mimah97 Jun 27, 2026
5430787
Merge pull request #634 from had3sgames/feat/549-persist-collateral-d…
Mimah97 Jun 27, 2026
987917e
Merge pull request #635 from had3sgames/feat/551-bullmq-queue-migration
Mimah97 Jun 27, 2026
5368faf
Merge pull request #636 from Coredevjay/feat/556-consolidate-position…
Mimah97 Jun 27, 2026
cc44454
Merge pull request #637 from Coredevjay/feat/557-mount-openapi-docs
Mimah97 Jun 27, 2026
af1ecc7
fix(docs): add missing response schemas to /v1/ready OpenAPI spec
jhayniffy Jun 28, 2026
b1a1007
fix(redis): parse REDIS_URL into host/port for BullMQ compatibility
jhayniffy Jun 28, 2026
3083181
fix(middleware): use Outcome enum for Trade.outcome instead of raw St…
jhayniffy Jun 28, 2026
08bd9f6
fix(config): apply REDIS_KEY_PREFIX to audit stream keys
jhayniffy Jun 28, 2026
38e90fb
feat(config): add IngestionLoopConfig interface for ingestion loop pa…
martinzhames Jun 28, 2026
461498d
feat(docs): add EventFetcher documentation
martinzhames Jun 28, 2026
d9ed26d
fix(api): move reconcileTradeIntoPositions back inside PrismaBatchWri…
martinzhames Jun 28, 2026
feacacb
fix(indexer): remove unnecessary transaction wrapper from cursor upsert
martinzhames Jun 28, 2026
4a58db0
feat: add orders route in api scope
josunday002 Jun 28, 2026
add0d7c
feat: add markets route in indexer scope
josunday002 Jun 28, 2026
e2089fe
feat: add health check in oracle scope
josunday002 Jun 28, 2026
9ad4338
feat: add ready endpoint in workers scope
josunday002 Jun 28, 2026
29342cf
feat: add positions route re-export in matching scope
sundayjob996 Jun 28, 2026
57ea874
feat: add rate limiter re-export in prisma scope
sundayjob996 Jun 28, 2026
a57e587
feat: add MatchingService re-export in redis scope
sundayjob996 Jun 28, 2026
a53b9f0
feat: add OrderBook re-export in middleware scope
sundayjob996 Jun 28, 2026
aa30699
fix: pass outcome boolean directly instead of redundant === true comp…
devoclan Jun 28, 2026
0a17df0
fix: pass actual consumer name to nack() instead of hardcoded "nack-w…
devoclan Jun 28, 2026
c222b11
fix: populate empty Prisma data objects in updateAttempt and updateOn…
devoclan Jun 28, 2026
ec696d4
Merge pull request #638 from jhayniffy/fix/four-minimal-issues
Mimah97 Jun 28, 2026
34f0fe7
Merge pull request #639 from josunday002/feat/add-scope-routes
Mimah97 Jun 28, 2026
25d6dd8
Merge pull request #640 from sundayjob996/fix/scope-additions
Mimah97 Jun 28, 2026
b27f2e6
Merge pull request #641 from martinzhames/fix/multi-scope-issues
Mimah97 Jun 28, 2026
08198be
Merge pull request #642 from devoclan/fix/minimal-tasks-resolution-or…
Mimah97 Jun 28, 2026
f852de8
feat: add coverage thresholds, Testcontainers Redis, and expanded int…
Jun 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
node_modules
dist
.git
.github
.vscode
*.md
!README.md
coverage
tests
**/*.test.ts
.env
.env.local
notes
src/generated
278 changes: 278 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,13 +1,291 @@
# =============================================================================
# Vatix Backend - Environment Variables Reference
# Copy this file to .env and fill in values before running the server.
# Required = server will not start or the feature will not work without it.
# Optional = has a safe default or is only needed for an optional component.
# =============================================================================

# -----------------------------------------------------------------------------
# Server
# -----------------------------------------------------------------------------

# Optional: Port the HTTP API server listens on. Default: 3000.
#
PORT=3000

# Optional: Service name returned in the GET /v1/health response body.
# Useful when running multiple services to identify which service responded.
# Default: vatix-backend
SERVICE_NAME=vatix-backend

# Required: Runtime environment. Controls error handler behaviour.
# In production, internal server error messages and stack traces are hidden
# from API responses to prevent leaking implementation details.
# In development or test, they are included to aid debugging.
# Accepted values: development | test | production
NODE_ENV=development

# Optional: Request body size limit in bytes. Default: 65536 (64 KB).
# Requests exceeding this limit are rejected with 413 Request Entity Too Large.
BODY_LIMIT_BYTES=65536

# -----------------------------------------------------------------------------
# CORS
# -----------------------------------------------------------------------------

# Optional: Comma-separated list of allowed browser origins.
# Development/test default: http://localhost:3000,http://localhost:5173.
# Production default: no cross-origin access unless explicitly configured.
CORS_ALLOWED_ORIGINS=

# -----------------------------------------------------------------------------
# Database
# -----------------------------------------------------------------------------

# Required: PostgreSQL connection string used by Prisma.
# Format: postgresql://USER:PASSWORD@HOST:PORT/DATABASE
DATABASE_URL=postgresql://postgres:postgres@localhost:5433/vatix

# -----------------------------------------------------------------------------
# Redis
# -----------------------------------------------------------------------------

# Optional: Redis connection URL used by rate limiting and session cache.
# Required only when Redis-backed features are enabled.
REDIS_URL=redis://localhost:6379

# Optional: Redis connection timeout in milliseconds. Default: 5000.
REDIS_CONNECT_TIMEOUT=5000

# Optional: Redis key prefix to namespace keys per environment.
REDIS_KEY_PREFIX=vatix:

# -----------------------------------------------------------------------------
# Stellar
# -----------------------------------------------------------------------------

# Optional: Stellar network name used by chain integrations. Default: testnet.
STELLAR_NETWORK=testnet

# Optional: Stellar Horizon API URL.
STELLAR_HORIZON_URL=https://horizon-testnet.stellar.org

# Required for readiness checks, indexer reads, and oracle reads.
# Testnet: https://soroban-testnet.stellar.org
# Mainnet: https://soroban.stellar.org
STELLAR_RPC_URL=https://soroban-testnet.stellar.org

# -----------------------------------------------------------------------------
# Indexer
# -----------------------------------------------------------------------------

# Required: Stellar network passphrase used by the event parser to identify the network.
# The passphrase is embedded in every transaction envelope and must match the target network.
# Testnet : "Test SDF Network ; September 2015"
# Mainnet : "Public Global Stellar Network ; September 2015"
SOROBAN_NETWORK_PASSPHRASE=Test SDF Network ; September 2015

# Optional: Network identifier stored as part of the ledger cursor composite key.
# Used together with INDEXER_CURSOR_KEY to uniquely identify the cursor row in the
# indexer_cursors table. Change when running the indexer against multiple networks
# with a shared database. Default: mainnet
INDEXER_NETWORK_ID=mainnet

# Optional: Persisted ledger cursor checkpoint key.
# Used together with INDEXER_NETWORK_ID to identify the cursor row in indexer_cursors.
# Change only when running multiple indexer consumers against the same network.
# Default: ingestion
INDEXER_CURSOR_KEY=ingestion

# Required: Soroban market contract whose events the indexer ingests.
# Alias: MARKET_CONTRACT_ID is also accepted.
INDEXER_CONTRACT_ID=

# Optional: Max ledgers scanned per ingestion tick. Default: 100.
INDEXER_LEDGER_WINDOW_SIZE=100

# Optional: How often (ms) the ingestion loop polls for new ledgers. Default: 5000.
# Minimum: 100.
INDEXER_INGESTION_INTERVAL_MS=5000

# Optional: Number of successful batches between cursor checkpoints. Default: 10.
# Lower values persist the cursor more frequently (safer on crash, more DB writes).
INDEXER_CHECKPOINT_FLUSH_EVERY_BATCHES=10

# Optional: Log level for the indexer service. Default: info.
# Accepted values: debug | info | warn | error
INDEXER_LOG_LEVEL=info

# -----------------------------------------------------------------------------
# Authentication
# -----------------------------------------------------------------------------

# Required: API key for internal/protected endpoints.
API_KEY=your-api-key-here

# Required for admin routes and integration tests.
# Used by requireAdmin middleware (Authorization: Bearer <ADMIN_TOKEN>).
ADMIN_TOKEN=your-admin-token-here

# -----------------------------------------------------------------------------
# Rate Limiting
# -----------------------------------------------------------------------------

# Optional: Global rate limit window in milliseconds. Default: 60000.
RATE_LIMIT_WINDOW_MS=60000

# Optional: Global max requests per window. Default: 100.
RATE_LIMIT_MAX=100

# Optional: Heavy-read endpoint rate limit window in milliseconds. Default: 60000.
RATE_LIMIT_HEAVY_WINDOW_MS=60000

# Optional: Heavy-read endpoint max requests per window. Default: 20.
RATE_LIMIT_HEAVY_MAX=20

# Optional: Write endpoint rate limit window in milliseconds. Default: 60000.
RATE_LIMIT_WRITE_WINDOW_MS=60000

# Optional: Write endpoint max requests per window. Default: 10.
RATE_LIMIT_WRITE_MAX=10

# -----------------------------------------------------------------------------
# Finalization Worker
# -----------------------------------------------------------------------------

# Optional: Maximum time (in milliseconds) the worker waits for in-flight cleanup
# (database disconnect, queue drain) before forcing process.exit(1).
# Prevents the process from hanging indefinitely on shutdown (SIGTERM / SIGINT).
# Must be a positive integer. Default: 30000 (30 seconds).
WORKERS_SHUTDOWN_TIMEOUT_MS=30000

# Optional: Finalization worker polling interval in milliseconds.
FINALIZATION_INTERVAL_MS=60000

# Optional: Resolution challenge window in seconds. Default: 86400.
FINALIZATION_CHALLENGE_WINDOW_SECONDS=3600

# Optional: Finalization worker log level. Values: debug | info | warn | error.
FINALIZATION_LOG_LEVEL=info

# Optional: Maximum time (in milliseconds) a single finalization job run is
# allowed to take before it is aborted. Prevents hung jobs from blocking the
# worker indefinitely. Must be a positive integer.
# Default: 30000 (30 seconds).
FINALIZATION_JOB_TIMEOUT_MS=30000

# -----------------------------------------------------------------------------
# Oracle
# -----------------------------------------------------------------------------

# Optional: Oracle scheduler polling interval in milliseconds. Default: 30000.
# Must be between 5000 and 3600000.
ORACLE_POLL_INTERVAL_MS=30000

# Optional. Duration of the oracle challenge window in seconds.
# Must be a positive integer. Default: 86400 (24 hours).
ORACLE_CHALLENGE_WINDOW_SECONDS=86400

# Optional. Log level for the oracle scheduler.
# Accepted values: debug | info | warn | error
# Controls verbosity of oracle logging. Default: info
ORACLE_LOG_LEVEL=info

# Optional. Redis queue name for oracle submission queue.
# Used to enqueue oracle resolution reports for on-chain submission.
# Default: oracle-submissions
SUBMISSION_QUEUE_NAME=oracle-submissions

# Optional. Redis stream name for settlement jobs.
# Used to enqueue settlement jobs for off-chain execution.
# Default: settlement-trades
SETTLEMENT_QUEUE_NAME=settlement-trades

# Optional. Log level for the finalization worker.
# Accepted values: debug | info | warn | error
# Controls verbosity of finalization worker logging.
FINALIZATION_LOG_LEVEL=info

# Optional. Global log level for all components.
# Accepted values: debug | info | warn | error
# Applies to all loggers unless overridden. Default: info
LOG_LEVEL=info

# Required for signing oracle resolution reports.
# Stellar secret key for the oracle service account.
ORACLE_SECRET_KEY=

# -----------------------------------------------------------------------------
# Signature Helper
# -----------------------------------------------------------------------------

# Optional. URL of the signature helper service for testing off-chain payload signing.
# If provided, enables automated signature generation for local development.
SIGNATURE_HELPER_URL=http://localhost:4000

# -----------------------------------------------------------------------------
# Test Utilities
# -----------------------------------------------------------------------------

# Optional: PostgreSQL connection string used by the test suite.
# Defaults to DATABASE_URL when not set. Override to point tests at a
# dedicated test database so they do not affect development data.
# Format: postgresql://USER:PASSWORD@HOST:PORT/DATABASE
TEST_DATABASE_URL=postgresql://postgres:postgres@localhost:5433/vatix_test

# Optional: Log level used during test runs.
# Accepted values: debug | info | warn | error
# Set to "error" to suppress noise; "debug" to trace failures.
# Default: info
TEST_LOG_LEVEL=error


# =============================================================================
# Configuration Types Reference
# =============================================================================
#
# REQUIRED vs OPTIONAL:
#
# REQUIRED
# Variables that must be set. Missing values will cause startup failure.
# Examples:
# - NODE_ENV (controls error handling and feature availability)
# - DATABASE_URL (connection to persistent storage)
# - STELLAR_RPC_URL (connection to blockchain)
#
# OPTIONAL
# Variables that may be omitted. Use defaults if not provided.
# Examples:
# - LOG_LEVEL (defaults to "info")
# - REDIS_CONNECT_TIMEOUT (defaults to 5000 ms)
# - CORS_ALLOWED_ORIGINS (uses env-specific defaults when unset)
#
# CONFIGURATION TYPE VALIDATION:
#
# Enum Types (string choices)
# Values constrained to a predefined list of strings.
# Examples:
# - NODE_ENV: "development" | "test" | "production"
# - LOG_LEVEL: "debug" | "info" | "warn" | "error"
# Invalid values cause startup failure with clear error message.
#
# Integer Types (whole numbers)
# Values must be positive integers within optional bounds.
# Examples:
# - PORT: positive integer, range 1-65535
# - ORACLE_POLL_INTERVAL_MS: positive integer, range 5000-3600000
# Non-integer or out-of-range values cause startup failure.
#
# URL Types (connection strings)
# Values must be valid URLs with specific schemes.
# Examples:
# - DATABASE_URL: must use postgresql:// or postgres:// scheme
# - REDIS_URL: must use redis:// or rediss:// scheme
# Invalid URLs cause startup failure with clear error message.
#
# String Types (free-form text)
# Values are strings with minimal validation beyond type checking.
# Examples:
# - SERVICE_NAME (any non-empty string)
# - REDIS_KEY_PREFIX (any string, commonly with colon suffix)
# Empty strings are rejected unless explicitly allowed.
Loading