Nxtgauge Backend Services
Find a file
Ashwin Kumar Sivakumar efd2ec6222
All checks were successful
build-and-release / build (cron) (push) Successful in 55s
build-and-release / build (catering-services) (push) Successful in 2m7s
build-and-release / build (companies) (push) Successful in 2m14s
build-and-release / build (fitness-trainers) (push) Successful in 1m41s
build-and-release / build (customers) (push) Successful in 2m58s
build-and-release / build (developers) (push) Successful in 2m28s
build-and-release / build (employees) (push) Successful in 2m34s
build-and-release / build (gateway) (push) Successful in 1m52s
build-and-release / build (graphic-designers) (push) Successful in 2m8s
build-and-release / build (jobs) (push) Successful in 1m49s
build-and-release / build (job-seekers) (push) Successful in 2m31s
build-and-release / build (makeup-artists) (push) Successful in 1m52s
build-and-release / build (social-media-managers) (push) Successful in 1m46s
build-and-release / build (photographers) (push) Successful in 2m32s
build-and-release / build (payments) (push) Successful in 3m24s
build-and-release / build (tutors) (push) Successful in 2m38s
backend-integration-tests / ai-credits (push) Successful in 46s
build-and-release / build (ugc-content-creators) (push) Successful in 3m6s
build-and-release / build (video-editors) (push) Successful in 2m37s
build-and-release / build-db-migrate (push) Successful in 2m19s
build-and-release / build (users) (push) Successful in 5m8s
fix: wire up dead admin router, IDOR on submit_requirement, dead code cleanup
apps/payments/src/admin.rs (tax rules, ledger, orders, credits, invoice
admin endpoints) was written but never actually shipped: no `mod
admin;` in main.rs, no `wallet` crate dependency in Cargo.toml, and its
routes used axum 0.6-style `:id` path syntax (this workspace is on
0.8, which requires `{id}` and panics on `:id` at router-build time).
Meanwhile apps/gateway explicitly forwards /api/admin/invoices*,
/api/admin/tax, /api/admin/orders, /api/admin/ledger, and
/api/admin/credits/* to this service, so every one of those admin
endpoints has been 404ing in production. Fixed all three issues and
merged the router in. Also fixed three inline SQL queries
(list_ledger x2, get_credit_ledger) still selecting the nonexistent
`type`/`reason` columns this session's earlier wallet-crate fix
already corrected everywhere else -- these went unnoticed until now
because dynamic SQL isn't checked at compile time, and the file had
literally never been compiled before.

apps/customers/src/handlers.rs submit_requirement had no ownership
check -- every sibling handler on the same resource (get_requirement,
update_requirement, mark_requirement_urgent) checks
req.created_by_user_id against auth.user_id; this one didn't, so any
authenticated customer could submit another customer's DRAFT
requirement into the approval queue by id, with the verification case
and email misattributed to the caller instead of the actual owner.

Removed ProfessionalRepository::try_reserve_tracecoins/
try_debit_reserved_tracecoins/try_release_reserved_tracecoins
(crates/db/src/models/professional.rs) -- a dead, unreferenced
duplicate of TracecoinWalletRepository's already-correct
reserve/debit/release, whose ledger INSERTs used the same nonexistent
`type`/`reason` columns and would have errored at runtime if anything
had ever called it. A second implementation of the same money-moving
logic is itself the risk, so removed rather than fixed in place.

Added the missing FK constraints on lead_requests.lead_id and
.user_role_profile_id (only professional_user_id/customer_user_id had
one) -- app code always populates them correctly today, but nothing
DB-side stopped a future bug from writing a dangling reference.

Centralized the 18% GST rate (invoice::STANDARD_GST_RATE_PERCENT)
instead of the literal 18.0 duplicated at both invoice-generation call
sites.

Not fixed, flagged instead: the admin reconcile_credits report
compares each wallet's all-time balance against a ledger sum restricted
to a 30-day-by-default window -- objectively wrong, but the deeper
problem is that tracecoin_ledger.amount's sign convention differs
between writers (TracecoinWalletRepository stores unsigned magnitudes
keyed by transaction_type; crates/wallet stores signed balance deltas
directly), so a correct "balance == sum(ledger)" reconciliation needs
that inconsistency resolved first -- not a quick fix, a design
decision on the write side.
2026-08-18 01:44:10 +05:30
.cargo chore(deps): document rkyv CVE exemption, restore + expand audit.toml comments 2026-08-12 23:30:30 +05:30
.forgejo ci: build and push nxtgauge-db-migrate image on every push 2026-08-15 20:20:26 +05:30
.gitea/workflows chore: remove the dead apps/leads microservice 2026-07-21 04:19:56 +05:30
.github/workflows ci: remove GitHub Actions workflow - using Forgejo CI exclusively 2026-07-06 04:19:40 +05:30
.mavis/plans feat: add LiteLLM support and auto-apply cron job 2026-06-14 18:00:38 +02:00
.sqlx chore: checkpoint workspace updates 2026-04-26 23:58:43 +02:00
apps fix: wire up dead admin router, IDOR on submit_requirement, dead code cleanup 2026-08-18 01:44:10 +05:30
crates fix: wire up dead admin router, IDOR on submit_requirement, dead code cleanup 2026-08-18 01:44:10 +05:30
docs fix(db): 4 fresh-bootstrap migration chain bugs found + verified today 2026-08-14 18:30:42 +05:30
load-tests feat(emails): complete email system with 35 branded templates and full wiring 2026-04-10 04:49:39 +02:00
scripts Add runtime-config foundation for verification wizard + field locking 2026-07-28 20:10:15 +05:30
tests fix: resolve all compilation warnings and errors across services 2026-04-07 12:52:55 +02:00
.env.example feat(emails): complete email system with 35 branded templates and full wiring 2026-04-10 04:49:39 +02:00
.gitignore feat(db,ci): fix missing ai_credits tables, wire integration tests to CI 2026-08-13 17:31:22 +05:30
cargo-deny.toml feat: extend admin/user flows with settings, verification, and approval updates 2026-04-08 22:40:54 +02:00
Cargo.lock fix: wire up dead admin router, IDOR on submit_requirement, dead code cleanup 2026-08-18 01:44:10 +05:30
Cargo.toml chore: remove the dead apps/leads microservice 2026-07-21 04:19:56 +05:30
companies.pid feat: update DB schema - split users.first_name, users.last_name, roles split 2026-04-15 06:23:27 +02:00
customers.pid feat: update DB schema - split users.first_name, users.last_name, roles split 2026-04-15 06:23:27 +02:00
deny.toml chore(deps): document rkyv CVE exemption, restore + expand audit.toml comments 2026-08-12 23:30:30 +05:30
DEPLOYMENT_OPTIMIZATION.md feat(deployment): add optimized build system for faster deployments 2026-04-10 05:14:27 +02:00
docker-compose.yml chore(compose): pin service images to build SHA, add MOCK_STORAGE, drop exposed db/redis ports 2026-08-15 22:32:06 +05:30
Dockerfile.base fix: Update Dockerfiles to use ci.nxtgauge.com registry 2026-07-08 03:37:18 +05:30
Dockerfile.fast fix: Update Dockerfiles to use ci.nxtgauge.com registry 2026-07-08 03:37:18 +05:30
Dockerfile.from-binary feat(woodpecker): use internal registry docker-registry.registry.svc.cluster.local:5000 2026-04-10 17:39:26 +02:00
Dockerfile.migrate fix(migrate): fix db-migrate build and job manifest, both broken 2026-07-19 03:07:26 +05:30
Dockerfile.optimized fix: Update Dockerfiles to use ci.nxtgauge.com registry 2026-07-08 03:37:18 +05:30
Dockerfile.simple perf(ci): cache cargo registry and target dir across image builds 2026-07-16 21:07:33 +05:30
Dockerfile.superfast fix: Update Dockerfiles to use ci.nxtgauge.com registry 2026-07-08 03:37:18 +05:30
Dockerfile.template fix: Update Dockerfiles to use ci.nxtgauge.com registry 2026-07-08 03:37:18 +05:30
Dockerfile.test fix(db): convert ai_credits timestamp columns to TIMESTAMPTZ 2026-08-13 21:44:30 +05:30
Dockerfile.ultrafast fix: Update Dockerfiles to use ci.nxtgauge.com registry 2026-07-08 03:37:18 +05:30
Dockerfile.working fix: Update Dockerfiles to use ci.nxtgauge.com registry 2026-07-08 03:37:18 +05:30
gateway.pid feat: update DB schema - split users.first_name, users.last_name, roles split 2026-04-15 06:23:27 +02:00
job_seekers.pid feat(ai-guard): add semantic moderation layer + guard violations DB logging 2026-08-15 14:20:44 +02:00
k8s-migration-job.yaml fix(migrate): fix db-migrate build and job manifest, both broken 2026-07-19 03:07:26 +05:30
README.md trigger: force build all services with high-performance-latest tag 2026-06-12 03:45:06 +05:30
start-services.pid chore: checkpoint workspace updates 2026-04-26 23:58:43 +02:00
start-services.sh Update backend services: catering_services, companies, developers, gateway, job_seekers, photographers, social_media_managers, tutors, ugc_content_creators, users; update cache (otp, token), contracts (profession_shared, profession_state), db (job_seeker, verification), email; add revision-requested email template; update init-db.sql and start-services.sh 2026-05-08 15:34:29 +02:00
TESTING_STRATEGY.md fix: resolve all compilation warnings and errors across services 2026-04-07 12:52:55 +02:00
users.pid feat: update DB schema - split users.first_name, users.last_name, roles split 2026-04-15 06:23:27 +02:00
wir.md docs: add work implementation roadmap (wir.md) 2026-04-06 22:26:45 +02:00

NXTGAUGE Backend Rust

Rust migration target for nxtgauge-nov-2025-backend, preserving the same microservices and request flow.

Target Service Topology

  • gateway (HTTP API)
  • users (identity, runtime roles, onboarding, approvals)
  • companies
  • customers
  • professionals
  • jobseekers

Migration Policy

  • Keep contracts stable (REST + proto semantics).
  • Keep runtime-config and onboarding schema behavior unchanged during parity phases.
  • Replace service implementations one by one.

See docs/MIGRATION_MASTER_PLAN.md for full staged plan.

CI (Woodpecker)

Required secrets:

  • REGISTRY_USERNAME
  • REGISTRY_PASSWORD

See .forgejo/workflows/README.md for details.

Trigger build Fri Jun 12 03:45:06 AM IST 2026