@rezaeiarshad/backend-core
v0.1.4
Published
Reusable backend infrastructure for RezaeiArshad projects.
Readme
@rezaeiarshad/backend-core
Reusable backend infrastructure for RezaeiArshad projects.
This package is intentionally small for its first version. It contains low-risk helpers that can be shared by Valance and future projects without importing ecommerce or booking domain code.
Contents
- OTP hash helpers.
- Environment helpers.
- Cron scheduler factory.
- HTTP error handlers.
- Client IP helpers.
- Logger.
- CORS, request logging, and global rate-limit middleware factories.
- SMS service factory.
- ZarinPal client factory.
- Rate limiter.
- Upload validation and S3-compatible storage helpers.
- Slug validation helper.
ZarinPal
The ZarinPal client defaults to sandbox mode and Toman currency:
createZarinpalClient({
merchantId: process.env.ZARINPAL_MERCHANT_ID!,
currency: 'IRT',
sandbox: true,
});Use currency: 'IRT' when the consuming app stores prices in Toman. The client sends the amount as-is. Use currency: 'IRR' only when the consuming app already stores prices in Rial.
Verification treats ZarinPal codes 100 and 101 as successful. Code 101 is returned as alreadyVerified: true.
Not Included
- App Prisma schemas or migrations.
- Prisma-backed routes.
- Valance ecommerce domain code.
- Mobehmo booking domain code.
- App-specific deployment config.
Commands
npm run build
npm run test
npm audit
npm packCompatibility CI
The repository has a Valance compatibility workflow:
.github/workflows/valance-compatibility.ymlIt runs on pull requests, pushes to main, manual dispatch, and before the publish workflow. The workflow:
- Installs, builds, and tests backend-core.
- Packs the current backend-core commit into a local
.tgz. - Checks out
RezaeiArshad/valance. - Installs that local
.tgzintovalance/backendwithout saving changes. - Runs Valance backend build, Prisma validation, and backend tests.
If Valance is private, add a backend-core repository secret named VALANCE_REPO_TOKEN with read access to RezaeiArshad/valance. If Valance is public, the default GitHub token is enough.
npmjs
The package is configured for npmjs:
{
"publishConfig": {
"registry": "https://registry.npmjs.org"
}
}The GitHub repository is:
https://github.com/RezaeiArshad/backend-corePublish from GitHub Actions by running the Publish package workflow manually. The workflow publishes to npmjs with an NPM_TOKEN repository secret.
The publish workflow waits for the Valance compatibility workflow before publishing.
Local publishing requires npm login:
npm login
npm publishWhen running the GitHub Actions workflow, choose:
publicfor a public scoped npm package.restrictedfor a private scoped npm package.
Valance installs the public npmjs package in Liara and keeps a repo-local .tgz copy only as a sync-checked artifact.
