Skip to content
View nripankadas07's full-sized avatar

Block or report nripankadas07

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
nripankadas07/README.md

Hi, I'm Nripanka πŸ‘‹

I build small, sharp, dependency-free libraries β€” the kind of thing you reach for when you don't want to pull in a 200-package transitive tree to do one obvious job.

This profile is the home of a 60-night portfolio sprint: two new open-source projects every night, each shipped with rigorous tests, full type coverage, and a real README. So far: 60 / 112 projects, all built to the same bar.


The bar

Every repository on this profile satisfies the same checklist:

  • TDD-built β€” failing tests first, then minimum code to pass, then refactor.
  • 100% line coverage as a default, 100% branch coverage for everything since Night 27. (No "this branch is unreachable" excuses β€” if it's truly unreachable, it gets deleted.)
  • mypy --strict clean β€” every public symbol typed, no Any leaks, py.typed marker shipped.
  • Functions ≀ 30 lines, nesting ≀ 3 levels β€” verified by an AST walk before each push.
  • Zero runtime dependencies unless absolutely required. Pure Python (or pure TypeScript) wherever possible.
  • MIT licensed. README with install / quick start / API reference / running tests for every repo.

The portfolio

Parsers, codecs, and wire formats

bencode β€” Strict, dependency-free BitTorrent-style bencode encoder/decoder. Round-trips are exact: rejects every non-canonical encoding (leading zeros, i-0e, dict keys out of order or duplicated, trailing data).

morse β€” International Morse Code encoder/decoder with prosigns and Farnsworth timing. Includes the classical PARIS-derived formula for inter-letter / inter-word gap durations.

tomlmini β€” Zero-dependency TOML v1.0 common-subset parser. Handles values, tables, AoTs, inline tables, datetimes; rejects ambiguous dotted-key edge cases.

iniparse β€” Zero-dep INI / config parser with section inheritance and ${...} interpolation.

querystring β€” Stable encoder-configurable form-encoding with parse / serialize / merge / pick / omit.

urltemplate β€” RFC 6570 URI Template expansion (levels 1-3), zero deps.

csvquote β€” RFC-4180 CSV field quoting/unquoting + single-line split_row, strict/lenient.

csvtable β€” Pretty-print CSV/TSV (or any rows) as aligned ASCII / Unicode / Markdown / plain tables β€” column-width inference, per-column align, 3-mode truncation, wide-char width.

mdtable β€” Render GFM Markdown tables from headers + rows with strict pipe escaping and per-column alignment.

dotenv-mini β€” Strict, predictable .env reader/writer; no $VAR interpolation, full quoting/escape round-trip.

hexdump β€” Format bytes as canonical hexdump output; round-trip parse back to bytes.

hexstr β€” Pack/unpack ints & bytes into hex strings with prefixes, widths, sign modes, byte order.

Numbers, ranges, and time

humanint β€” Parse and format human-readable integers (1.5k, 2M, 3.2B).

numparse β€” Forgiving parser for loose numeric strings ($1,234.56, 1.5k, 2 MiB, 1h30m, 12.5%).

numfmt β€” Locale-free number formatter (currency, percent, scientific).

durfmt β€” Format timedeltas and numeric seconds as human durations (1h 30m 12s, 01:30:12), zero deps.

timeago β€” Human-readable relative time formatting (3 hours ago, in 2 days).

chronoparse β€” Natural-language date/time parser, zero deps.

crontab-lite β€” Parse and evaluate standard cron expressions, zero deps.

unitcalc β€” Simple unit conversion library (length, mass, temperature, time).

semverlite β€” Strict semver parsing and comparison.

rangeset β€” Manage non-overlapping integer ranges with set operations.

Strings, search, and text

stringcase β€” Convert strings between snake / camel / pascal / kebab / constant / dot / title / path cases.

slugify-x β€” Unicode-aware URL slug generator.

levendist β€” String distance metrics: Levenshtein, Damerau-Levenshtein, Hamming, Jaro, Jaro-Winkler, LCS.

wordwrap β€” ANSI-aware paragraph wrap / fill / shorten with hanging indents and wide-character support.

expand β€” GNU-style tab-to-space expansion + unexpand, custom tab stops, leading-only / all modes.

globmatch β€” fnmatch-compatible matcher with extglob, POSIX classes, ** globstar, AST + backtracking interpreter.

pathmask β€” Glob-style path matcher with negation and brace expansion.

shell-quote β€” Zero-dependency POSIX shell quoting, splitting, and safety checks.

markdownlint β€” Validate Markdown against common style rules.

pigeon β€” POSIX gettext-style Plural-Forms parser/evaluator with built-in locale tables.

Networks, IDs, and crypto-ish

cidrcalc β€” IPv4 CIDR arithmetic β€” parse, network/broadcast, membership, subnets, aggregate. No ipaddress dep.

uuidgen β€” UUID v4/v5 batch generator with base62 short form, strict parse, named namespace tables.

base62-ts β€” Base62 encoder/decoder for non-negative integers and byte arrays, custom alphabets. (TypeScript)

Data structures and iteration

bitvec β€” Compact bit vector with set operations, slicing, and efficient storage.

trie β€” Trie (prefix tree) with fast prefix search and autocomplete.

ringbuf β€” Fixed-capacity ring buffer with O(1) append, overwrite-oldest, indexable, reversible.

flatdict β€” Flatten / unflatten nested dicts with dotted keys.

strtable β€” Format tabular data as aligned ASCII/Unicode tables.

Decorators, retries, and caches

tinycache β€” Thread-safe LRU + TTL cache decorator.

retryback β€” Tiny retry decorator with exponential backoff and jitter.

Diff, patch, and config drift

diffstat β€” Compute unified diff statistics (additions, deletions, changes).

envdiff β€” Compare two .env files and report drift.

jsonpatch-lite β€” Minimal RFC-6902 JSON patch implementation.

colortool β€” Convert and manipulate colors across HEX / RGB / HSL.

TypeScript

tsparser β€” Tiny TypeScript tokenizer/parser for a subset of expressions.

parseopts-ts β€” Zero-dep argv parser: typed options, aliases, negatable booleans, arrays, choices, -- terminator, stop-at-positional.


How to read these repos

Pick any project. The README starts with one sentence telling you what it does. The next paragraph tells you what it doesn't do β€” the non-goals matter as much as the surface area. Then quick start, then API reference, then running tests.

Tests are not an afterthought. Every public function has a happy-path test, an edge-case test, and an error test. Coverage is reported in the README. mypy --strict is part of the test gate.

If you're a recruiter or a maintainer evaluating my work: open tomlmini, globmatch, or csvtable for a sense of how I handle real-format edge cases. Open bencode for an example of strict canonical-format validation. Open levendist for tight numeric work.


What's next

Nights 31–60 of the sprint will fill out the remaining 60 projects: argv-strict (a stricter parseopts), emitter-ts (typed event emitter), bencode's TS sibling, phone-number normalization, color-difference metrics (CIE76/94/2000), a few more parsers, and a flagship β€” microbpe, a from-scratch tokenizer trainer with byte-pair-encoding semantics.

Build log lives in forge-builds/ (private). State files (SOUL.md, MEMORY.md, BUILD-LOG.md, CHRONICLE.md) track every commit night-by-night.


Built nightly. Tested ruthlessly. MIT licensed.

Pinned Loading

  1. agent-framework agent-framework Public

    Lightweight agent orchestration with tool registration, memory, and ReAct planning loops

    Python

  2. ai-toolkit ai-toolkit Public

    CLI toolkit for everyday AI/ML tasks β€” embeddings comparison, token counting, model output diffing, and prompt benchmarking

    Python

  3. feature-flags feature-flags Public

    Lightweight, type-safe feature flag SDK for TypeScript β€” local rules, percentage rollouts, user targeting, and real-time updates

    TypeScript

  4. prompt-eval prompt-eval Public

    Lightweight LLM prompt evaluation framework β€” pluggable judges, structured reports, zero heavy dependencies

    Python

  5. rag-pipeline rag-pipeline Public

    Production RAG pipeline with pluggable chunking, vector stores, and retrieval evaluation

    Python

  6. startup-dashboard startup-dashboard Public

    SaaS metrics dashboard tracking MRR, churn, LTV, CAC with interactive charts

    TypeScript