{"schemaVersion":"1.0","canonicalUrl":"https://nirdeshpokhrel.com.np","profile":{"name":"Nirdesh Pokharel","role":"Backend Software Engineer","location":"Nepal","email":"nirdeshpokhrel29@gmail.com","phone":"+9779824930501","url":"https://nirdeshpokhrel.com.np","github":"https://github.com/codernirdesh","linkedin":"https://linkedin.com/in/realnirdesh","blog":"https://blog.nirdeshpokhrel.com.np","focus":"Node.js · TypeScript · PostgreSQL · Distributed Systems · AI Integration","summary":"Backend-focused software engineer with 5+ years of experience building production systems across logistics, sales, billing, education, and SaaS. Works with Node.js, TypeScript, PostgreSQL, GraphQL, REST APIs, asynchronous processing, and third-party integrations. Owns database and API design, Dockerized deployments, CI/CD, and production troubleshooting. Builds LLM integrations, retrieval pipelines, and automation for practical product workflows."},"ownership":["System and database design","API architecture","Code review","Production debugging","Deployment ownership","Performance analysis","Third-party integrations","Requirement breakdown","Technical documentation"],"education":{"degree":"Higher Secondary Level Education","institution":"National Examination Board, Nepal","year":"2021","stream":"Technical Stream (Computer Engineering)"},"experience":[{"role":"Software Engineer","company":"Evolve Pvt. Ltd","duration":"Jul 2024 - Present","location":"Nepal","featured":"Current","products":[{"name":"ROSIA V3","caseStudy":"rosia-v3","description":"Enterprise sales & distribution GraphQL backend","achievements":["Built modular Apollo GraphQL services for inventory, distributors, route planning, targets, and approvals.","Implemented streamed CSV/XLS exports so sales, stock, and financial reports could be generated without loading the full dataset into application memory.","Implemented permission-scoped, timezone-aware resolvers with JWT auth and WebSocket subscriptions.","Integrated Kafka, Firebase, and scheduled jobs in a clustered multi-worker production deployment."]},{"name":"LND Logistics Platform","caseStudy":"lnd-logistics","description":"Logistics & Delivery Management system","achievements":["Designed a TypeScript GraphQL backend for inventory, bin/storage, delivery routes, and stock audit.","Built Pathao webhook handling and a generic proxy endpoint for third-party logistics integrations.","Added JWT + distributor-token auth with production security middleware (helmet, hpp, CORS).","Enabled event-driven integration with external systems using Kafka."]},{"name":"Distributor Billing System","caseStudy":"distributor-billing","description":"Billing backend","achievements":["Developed a TypeScript REST API suite for invoices, payments, ledgers, inventory, and reporting.","Built an automated bank reconciliation engine combining rule-based matching with an AI-assisted workflow to resolve ambiguous transactions alongside manual review.","Implemented Bull-based scheduled jobs and daily financial workflows for reliable async processing.","Added payment gateway integration, webhook delivery, and Excel/CSV import-export pipelines."]}],"skills":["TypeScript","Express.js","GraphQL","Apollo","PostgreSQL","Knex","Objection.js","Kafka","Redis","AWS"]},{"role":"Node.js Developer","company":"ShotCoder Tech","duration":"Jan 2024 - Jun 2024","location":"Nepal","products":[{"name":"Shikshya","caseStudy":"shikshya","description":"End-to-end school management system","achievements":["Developed RESTful APIs using Node.js and Express to power the school management platform.","Integrated an LLM-based chat assistant for teachers, parents, and students surfacing homework, notices, and program-related information through natural-language queries.","Implemented Prisma ORM with PostgreSQL for efficient data management and type-safe queries.","Conducted code reviews and optimized technical architecture for scalability across multi-tenant schools.","Improved the CI/CD pipeline for school-platform deployments."]}],"skills":["Node.js","Express","Prisma","PostgreSQL","API Design","CI/CD","Code Review"]},{"role":"Full Stack Developer","company":"Internsathi","duration":"Nov 2022 - Oct 2023","location":"Remote","achievements":["Developed platform using NestJS, Node.js, and Next.js (React).","Built responsive frontend interfaces using React, Next.js and Tailwind CSS.","Managed database schemas and workflows using Prisma ORM and PostgreSQL.","Developed matching algorithms connecting students with relevant internship opportunities.","Implemented secure OAuth authentication systems and third-party API integrations."],"skills":["NestJS","Node.js","Next.js","React.js","PostgreSQL","OAuth"]},{"role":"Full Stack Developer","company":"Nep Tech Pal","duration":"Mar 2021 - Sep 2022","location":"Remote","products":[{"name":"Loksewa Taiyari","description":"Backend for the exam-prep mobile app","achievements":["Designed and developed RESTful APIs powering the Loksewa Taiyari mobile application.","Modeled and managed PostgreSQL schemas for question banks, mock tests, and user progress.","Containerized services with Docker and contributed to the CI/CD pipeline for reliable releases."]},{"name":"Client Websites","description":"Custom full-stack web apps for agency clients","achievements":["Built full-stack web applications using Node.js, NestJS, React, and Next.js across multiple client engagements.","Integrated REST APIs with responsive frontend interfaces tailored to client branding and requirements.","Collaborated on code reviews and shared deployment workflows to keep delivery consistent across projects."]}],"skills":["Node.js","NestJS","React","Next.js","PostgreSQL","REST APIs","Docker"],"printHide":false}],"projects":[{"name":"CPlanet Ecommerce Platform","description":"Ecommerce platform with Next.js, Go, and PostgreSQL. Implemented staging and production workflows using Docker, GHCR, GitHub Actions, Nginx, and Cloudflare, alongside canonical URLs, product structured data, and API performance testing with k6.","tags":["Next.js","Go","PostgreSQL","Docker","GitHub Actions","k6"],"architecture":"Next.js → Go API → PostgreSQL; GitHub Actions → GHCR → Docker → Nginx / Cloudflare","caseStudy":"cplanet"},{"name":"Nepal Legal RAG","description":"CLI prototype for querying the Constitution of Nepal. Ingests PDF text, creates OpenAI embeddings, retrieves context from Qdrant, and streams answers grounded in the retrieved passages.","tags":["Node.js","TypeScript","OpenAI","Qdrant","LangChain","RAG"],"architecture":"PDF → Text chunks → OpenAI embeddings → Qdrant → Retrieval → CLI answer","links":[{"type":"github","url":"https://github.com/codernirdesh/nepal-legal-RAG","text":"Source code"}],"caseStudy":"nepal-legal-rag"},{"name":"pgdrive-backup","caseStudy":"pgdrive-backup","description":"Go utility that streams PostgreSQL dumps through gzip compression and AES-256 encryption to Google Drive without a full local intermediate backup. Includes retention management and restore tools.","tags":["Go","PostgreSQL","Google Drive API","AES-256","gzip"],"architecture":"pg_dump → gzip → AES-256-CTR → Google Drive","links":[{"type":"github","url":"https://github.com/codernirdesh/pgdrive-backup","text":"Source code"}]},{"name":"Loksewa Bigyapan","description":"Public Service Commission vacancy platform that brings Loksewa announcements together for candidates in Nepal.","tags":["Education","Public Service","Web App"],"links":[{"type":"website","url":"https://loksewa.nirdeshpokhrel.com.np/","text":"Visit website"}]}],"openSource":[{"name":"digit-to-words-nepali","caseStudy":"digit-to-words-nepali","description":"Published npm package for Nepali and English number-to-word conversion, with BigInt, currency formatting, and values up to 10^41 − 1. Includes tests, types, and documentation.","tags":["TypeScript","Node.js","npm"],"links":[{"type":"other","url":"https://www.npmjs.com/package/digit-to-words-nepali","text":"npm"},{"type":"github","url":"https://github.com/codernirdesh/digit-to-words-nepali","text":"GitHub"}]},{"name":"git-blame-np","description":"VS Code extension for inline Git blame information, with recency-aware indicators for understanding file history.","tags":["TypeScript","VS Code Extension API","Git"]}],"skills":[{"name":"Languages","skills":["Go (Golang)","TypeScript","JavaScript","Dart"]},{"name":"Backend","skills":["Node.js","OAuth","NestJS","Express.js","REST APIs","GraphQL","Apollo","WebSockets","Authentication","RBAC","Multi-tenancy","Background jobs"]},{"name":"Data","skills":["PostgreSQL","Prisma","Knex","Objection.js","Redis","Database modeling","Query optimization","Transactions","Reporting"]},{"name":"Distributed & Integration","skills":["Kafka","Webhooks","Third-party APIs","Scheduled jobs","Event-driven systems","Firebase","Bull queues","Google Drive API"]},{"name":"Production Engineering","skills":["Docker","Docker Compose","Nginx","GitHub Actions","GHCR","AWS","Linux","Cloudflare","VPS deployments","CI/CD","k6"]},{"name":"AI Engineering","skills":["OpenAI APIs","LangChain","RAG","Embeddings","Vector search","Qdrant","Context-grounded responses","Workflow automation","AI-assisted reconciliation"]},{"name":"Developer Tools","skills":["Git","npm","VS Code Extension API","pg_dump","gzip","AES-256"]},{"name":"Frontend / Mobile","skills":["React","Next.js","Nuxt","Vue","Flutter","Tailwind CSS"]}],"publications":[{"title":"digit-to-words-nepali: Converting Numbers to Nepali Words, Properly","url":"https://blog.nirdeshpokhrel.com.np/digit-to-words-nepali-converting-numbers-to-nepali-words-properly","date":"September 3, 2026","dateModified":"2026-09-03","description":"Number conversion, BigInt, currency formatting, and the Nepali numbering system."},{"title":"Exploring NestJS Architecture: Understanding Modules, Controllers, and Providers","url":"https://blog.nirdeshpokhrel.com.np/exploring-nestjs-architecture-understanding-modules-controllers-and-providers-by-nirdesh-pokharel","date":"March 20, 2024","dateModified":"2024-03-20","description":"How the core NestJS building blocks fit together."},{"title":"Mastering Guards and Custom Decorators in NestJS","url":"https://blog.nirdeshpokhrel.com.np/mastering-guards-and-custom-decorators-in-nestjs-a-comprehensive-guide","date":"March 19, 2024","dateModified":"2024-03-19","description":"Authentication, authorization, and reusable request behavior."}],"engineeringNotes":[{"slug":"lnd-logistics","title":"LND Logistics Platform","description":"A TypeScript GraphQL backend for inventory, delivery operations, and third-party logistics integrations.","architecture":"GraphQL → Node.js / TypeScript → PostgreSQL; Kafka + Pathao webhooks → external systems","sections":[{"title":"Problem","body":"The platform brings inventory, bin and storage management, delivery routes, and stock audits into a logistics workflow."},{"title":"Backend ownership","body":"Designed the TypeScript GraphQL backend for these workflows. Implemented Pathao webhook handling and a proxy endpoint for third-party logistics integrations."},{"title":"Access and integration boundaries","body":"Added JWT and distributor-token authentication alongside Helmet, HPP, and CORS middleware. Kafka connects the platform to external systems through events."},{"title":"Delivered capabilities","body":"The backend supports stock and delivery operations, authenticated distributor access, and external logistics integrations. These notes describe implementation scope; operational volumes and performance benchmarks are not published."},{"title":"Operational data flow","body":"The GraphQL backend covers inventory, bins and storage, delivery routes, and stock audits. Pathao webhook handling receives external delivery updates, while the proxy endpoint provides an integration boundary for third-party logistics calls. Kafka supplies a separate event channel for communication with external systems."},{"title":"Engineering tradeoffs","body":"GraphQL gives clients access to related logistics resources through one API, while webhooks and Kafka introduce asynchronous state changes. This means request success and eventual external delivery are different concerns. The public implementation summary does not establish event ordering, retry policy, or exactly-once delivery."},{"title":"Validation priorities","body":"A useful validation plan covers JWT and distributor-token isolation, out-of-order or repeated webhook delivery, unavailable third-party services, and consistency between inventory operations and stock audits. These are review priorities, not claims that an unpublished test suite already covers every case."}],"url":"https://nirdeshpokhrel.com.np/work/lnd-logistics","markdownUrl":"https://nirdeshpokhrel.com.np/notes/lnd-logistics.md"},{"slug":"cplanet","title":"CPlanet Ecommerce Platform","description":"Next.js and Go ecommerce with PostgreSQL, automated deployments, and search-friendly product pages.","architecture":"Next.js → Go → PostgreSQL; GitHub Actions → GHCR → Docker → Nginx / Cloudflare","sections":[{"title":"Problem","body":"An ecommerce platform needs a storefront and backend, together with a repeatable way to deploy changes and make product pages discoverable."},{"title":"Implementation","body":"The platform uses Next.js for the frontend, Go for the backend, and PostgreSQL for data. Docker packages services for staging and production environments."},{"title":"Production ownership","body":"Implemented deployment workflows with GitHub Actions and GHCR, using Nginx and Cloudflare in front of the application. Worked on canonical URLs, product structured data, and sitemap improvements."},{"title":"Validation","body":"Used k6 for API performance testing. No throughput or latency figures are claimed here without a reproducible benchmark and its environment."},{"title":"Delivery flow","body":"GitHub Actions and GHCR form the build and image-distribution portion of the deployment workflow. Docker runs the application services in staging and production, with Nginx and Cloudflare handling the public-facing layer. The Next.js storefront talks to a Go backend backed by PostgreSQL."},{"title":"Search architecture","body":"The implementation work includes canonical URLs, product structured data, and sitemap improvements. These serve different purposes: canonicals identify the preferred URL, structured product data describes visible product facts, and the sitemap helps crawlers discover pages. None of these replaces useful, accessible page content."},{"title":"Performance interpretation","body":"k6 was used for API testing. Meaningful comparisons require the scenario, concurrency, data volume, environment, error rate, and latency distribution to be recorded together. This note does not attribute an unsupported latency improvement or throughput target to that work."},{"title":"Operational review priorities","body":"Deployment review should cover configuration differences between staging and production, database compatibility across releases, health checks, and rollback procedures. Those are the next details to document; the available project summary does not establish a specific rollback or migration strategy."}],"url":"https://nirdeshpokhrel.com.np/work/cplanet","markdownUrl":"https://nirdeshpokhrel.com.np/notes/cplanet.md"},{"slug":"nepal-legal-rag","title":"Nepal Legal RAG","description":"A CLI retrieval prototype for asking questions about the Constitution of Nepal.","architecture":"PDF → 800-character chunks / 100-character overlap → OpenAI embeddings → Qdrant → top-5 retrieval → streamed answer","source":"https://github.com/codernirdesh/nepal-legal-RAG","sections":[{"title":"Problem","body":"Explore question answering over a legal PDF by providing the language model with relevant source passages."},{"title":"Ingestion and retrieval","body":"The indexing script extracts and splits PDF text, batches OpenAI embeddings, and stores vectors in Qdrant. The CLI retrieves five chunks for a question and streams an answer using the retrieved context."},{"title":"Response boundaries","body":"The prompt requests article citations when they are available in context. The interface reports when nothing relevant is found, and conversation history lasts only for the current session."},{"title":"Limitations","body":"This is a prototype rather than a production legal-advice service. Retrieval quality depends on the source PDF and extracted text. Re-indexing recreates the collection, and grounding does not guarantee that every generated answer is correct."},{"title":"Index lifecycle","body":"The indexing script recreates the nepali-constitution collection and batches embeddings in groups of 150. Text chunks use 800 characters with 100 characters of overlap. Rebuilding simplifies this prototype, but replacing a collection is an operational limitation if serving queries continuously."},{"title":"Retrieval tradeoffs","body":"The five retrieved chunks bound the context sent to the chat model. Overlap can preserve sentences near chunk boundaries, but it also repeats text in the index. A fixed chunk size and retrieval count do not establish recall or answer accuracy; those need evaluation against representative questions."},{"title":"Evaluation priorities","body":"Useful checks include questions with direct source support, cross-article questions, irrelevant questions, and malformed PDF extraction. Inspect whether cited articles support each answer. Missing retrieval context, ambiguous wording, and model-generated mistakes should be evaluated separately."},{"title":"Source and maturity","body":"The public repository contains shared configuration, indexing, a CLI chat loop, and a PDF inspection script. It is a small LangChain and Qdrant playground. There is no published production benchmark or claim that the tool can replace authoritative legal interpretation."}],"url":"https://nirdeshpokhrel.com.np/work/nepal-legal-rag","markdownUrl":"https://nirdeshpokhrel.com.np/notes/nepal-legal-rag.md"},{"slug":"rosia-v3","title":"ROSIA V3","description":"Enterprise sales and distribution backend with Apollo GraphQL, streamed reporting, and asynchronous integrations.","architecture":"GraphQL / JWT → Permission-scoped resolvers → Sales and inventory data; streamed exports + Kafka / Firebase / scheduled jobs","sections":[{"title":"Product scope","body":"ROSIA V3 brings inventory, distributors, route planning, targets, and approvals into modular Apollo GraphQL services. The backend work covers operational queries and reporting over sales, stock, and financial datasets."},{"title":"Reporting implementation","body":"CSV/XLS exports stream report data instead of loading the entire dataset into application memory. This is a concrete memory-management choice for large reports. The resume does not supply a measured row limit, peak-memory figure, or export duration, so none is claimed here."},{"title":"Authorization and time","body":"Resolvers are permission-scoped and timezone-aware, with JWT authentication and WebSocket subscriptions. Scoping matters because an authenticated identity still needs access rules for the requested resource; timezone handling matters when operational reports cross date boundaries."},{"title":"Background processing","body":"Kafka, Firebase, and scheduled jobs are integrated in a clustered multi-worker production deployment. The available implementation summary establishes those components, but does not specify worker election, job deduplication, retry settings, or event ordering guarantees."},{"title":"Tradeoffs and validation priorities","body":"Streaming makes report generation less dependent on the size of an in-memory result set, while introducing stream cancellation and error-handling concerns. Review priorities include interrupted downloads, permission filters on exports, date-boundary behavior, and overlapping scheduled work across workers."},{"title":"Ownership and evidence","body":"The recorded ownership is the modular GraphQL services, streamed exports, scoped resolvers, subscriptions, and integrations. These are implementation notes from professional experience; private deployment diagrams and operational metrics are not published."}],"url":"https://nirdeshpokhrel.com.np/work/rosia-v3","markdownUrl":"https://nirdeshpokhrel.com.np/notes/rosia-v3.md"},{"slug":"distributor-billing","title":"Distributor Billing System","description":"TypeScript REST APIs for invoices, payments, ledgers, bank reconciliation, and scheduled financial workflows.","architecture":"REST API → Invoices / payments / ledgers; bank transactions → Rule matching → AI-assisted review; Bull → Scheduled workflows","sections":[{"title":"Business workflow","body":"The backend supports invoices, payments, ledgers, inventory, and reporting. Payment gateways and webhook delivery connect the internal financial workflows to external systems, while Excel/CSV pipelines support moving data into and out of the platform."},{"title":"Reconciliation approach","body":"Bank reconciliation combines rule-based matching with an AI-assisted workflow for ambiguous transactions and manual review. The distinction matters: a model suggestion is part of the review workflow, not evidence that a transaction is definitively reconciled or authorized to post to a ledger."},{"title":"Asynchronous processing","body":"Bull-based scheduled jobs support daily financial workflows. Moving work into jobs separates it from an interactive request, but introduces questions about retries, duplicate processing, and partial completion. The public summary does not establish the implemented retry or transaction policy."},{"title":"Integration boundaries","body":"Payment integration and webhook delivery require mapping external events into internal records. A sound review checks payload validation, repeated notifications, delayed events, and failures after a payment provider has accepted a request. These are validation priorities rather than unsupported claims of a specific implementation."},{"title":"Import and export considerations","body":"Spreadsheet and CSV inputs can include malformed values, duplicate rows, and inconsistent date formats. Reporting must retain the appropriate access scope. The known implementation includes import-export pipelines; validation details and production volumes remain unpublished."},{"title":"Delivered scope","body":"The work spans the REST API suite, reconciliation workflow, scheduled processing, payment integration, and data exchange. No reconciliation accuracy, financial volume, or processing-speed claim is made without source measurements."}],"url":"https://nirdeshpokhrel.com.np/work/distributor-billing","markdownUrl":"https://nirdeshpokhrel.com.np/notes/distributor-billing.md"},{"slug":"shikshya","title":"Shikshya","description":"School management REST APIs with Prisma, PostgreSQL, multi-tenant architecture work, and an LLM chat assistant.","architecture":"Node.js / Express REST API → Prisma → PostgreSQL; school information → LLM chat assistant","sections":[{"title":"Platform scope","body":"Shikshya is a school management system. The backend uses Node.js and Express, with Prisma and PostgreSQL for data access. The recorded work also includes code review, multi-tenant architecture improvements, and CI/CD changes."},{"title":"Assistant use case","body":"An LLM-based chat assistant helps teachers, parents, and students find homework, notices, and program-related information through natural-language queries. The public work summary does not specify the model, retrieval architecture, or evaluation metrics."},{"title":"Data and tenant boundaries","body":"Prisma provides typed data access to PostgreSQL. Type safety does not by itself enforce school-level isolation: tenant scope and user permissions remain application concerns. That distinction is central when a system serves multiple schools and user roles."},{"title":"Delivery ownership","body":"The work included REST API development, Prisma-backed data management, architecture review, and improvements to the deployment pipeline. There is no measured deployment-time reduction in the available record."},{"title":"Validation priorities","body":"Review should cover access between schools, teacher/parent/student permissions, assistant responses that lack supporting school data, and changes to schemas used by deployed clients. These are areas to validate, not a claim of a published test or security audit."}],"url":"https://nirdeshpokhrel.com.np/work/shikshya","markdownUrl":"https://nirdeshpokhrel.com.np/notes/shikshya.md"},{"slug":"pgdrive-backup","title":"pgdrive-backup","description":"A Go streaming pipeline for PostgreSQL backups, gzip compression, AES-256 encryption, and Google Drive storage.","architecture":"pg_dump → gzip → AES-256-CTR → Google Drive; encrypted archive → Decrypt / decompress → pg_restore","sections":[{"title":"Pipeline design","body":"The utility connects pg_dump output to compression, encryption, and upload using Go io.Pipe stages. It avoids writing a complete intermediate backup to local disk. That makes streaming and failure propagation central to the design, rather than treating upload as a separate step after a full file is created."},{"title":"Compression and storage","body":"The documented pipeline uses gzip at maximum compression and a resumable Google Drive upload. Retention management purges backups older than the configured retention period. Compression saves transfer and storage space at a CPU cost; that tradeoff should be measured on representative databases."},{"title":"Encryption boundary","body":"AES-256-CTR encrypts the stream with a random IV per backup. CTR encryption does not authenticate the ciphertext, so encryption alone should not be described as tamper detection. Key storage and backup integrity need separate consideration."},{"title":"Restore workflow","body":"The decrypt utility reverses encryption and compression. The README specifies that the resulting archive uses PostgreSQL custom format and should be restored with pg_restore. A backup that uploaded successfully still needs a restore drill to establish recoverability."},{"title":"Operational tools","body":"The repository includes a command-line backup browser, a web restore interface, Docker packaging, and configuration for automated runs. A useful operational check covers interrupted streams, failed uploads, retention behavior, and restoration into a separate test database."},{"title":"Evidence and limitations","body":"This note follows the public README. It describes the streaming architecture without claiming a measured constant-memory result, recovery-time objective, or tested database-size ceiling."}],"source":"https://github.com/codernirdesh/pgdrive-backup","url":"https://nirdeshpokhrel.com.np/work/pgdrive-backup","markdownUrl":"https://nirdeshpokhrel.com.np/notes/pgdrive-backup.md"},{"slug":"digit-to-words-nepali","title":"digit-to-words-nepali","description":"A typed npm library for Nepali and English number words, BigInt values, currencies, decimals, and digit transliteration.","architecture":"number / string / bigint → Input validation → Scale lookup → Language and currency formatting → Words","sections":[{"title":"Problem and interface","body":"Nepali number formatting uses scales such as lakh, crore, arab, and kharab, together with language-specific number words. The library accepts number, numeric string, and bigint inputs and produces Nepali or English output with configurable currency behavior."},{"title":"Precision boundary","body":"The documented upper bound is 10^41 − 1. BigInt and string inputs preserve integers beyond JavaScript’s safe-integer range; converting an already-rounded JavaScript number cannot recover its original digits. Range and input validation are therefore part of the interface, not merely formatting details."},{"title":"Decimal and currency handling","body":"The library distinguishes individual decimal-digit pronunciation from combined decimal quantities. Currency output supports configurable currency names and suffixes. Rounding, zero decimals, and explicitly supplied trailing zeros affect output, so callers need predictable formatting rules."},{"title":"Implementation choices","body":"The README describes LRU caching, reusable converter instances, and binary search over the scale table. These are implementation strategies rather than a published performance benchmark. The package also provides ASCII and Nepali digit-transliteration helpers."},{"title":"Testing and documentation","body":"The repository includes tests, TypeScript types, usage documentation, and examples around large values and formatting boundaries. Useful regression cases include the maximum supported integer, values just outside the range, zero, invalid inputs, and decimal rounding that carries into the integer part."},{"title":"Scope","body":"The package is published on npm and has zero external dependencies according to its documentation. It handles number representation; it does not perform currency conversion or establish financial rounding policy for an application."}],"source":"https://github.com/codernirdesh/digit-to-words-nepali","url":"https://nirdeshpokhrel.com.np/work/digit-to-words-nepali","markdownUrl":"https://nirdeshpokhrel.com.np/notes/digit-to-words-nepali.md"}],"pages":["https://nirdeshpokhrel.com.np/","https://nirdeshpokhrel.com.np/work","https://nirdeshpokhrel.com.np/work/lnd-logistics","https://nirdeshpokhrel.com.np/work/cplanet","https://nirdeshpokhrel.com.np/work/nepal-legal-rag","https://nirdeshpokhrel.com.np/work/rosia-v3","https://nirdeshpokhrel.com.np/work/distributor-billing","https://nirdeshpokhrel.com.np/work/shikshya","https://nirdeshpokhrel.com.np/work/pgdrive-backup","https://nirdeshpokhrel.com.np/work/digit-to-words-nepali"]}