The project site for SANKHYA, the optimization solver built for Smart India Hackathon 2026, problem statement SIH26119 (Mangalore Refinery and Petrochemicals Ltd).
Static HTML and CSS, no build step. Deployed on Vercel from main at https://sankhya-solver.vercel.app.
Seven hand-written pages (index.html, evaluate.html, problem.html, solver.html,
evidence.html, run.html, team.html), the generated documents under docs/ (never edit
those by hand, see below), one stylesheet (styles.css) and site.js for
the "On this page" list. Serve the folder with any static server to preview.
One fact, one value. Every figure the site states is defined once in facts.json,
each with the file or command it came from on SANKHYA's main. Pages carry it as
<span data-fact="key">value</span>. Blocks that appear on more than one page (the
scoreboard, the pipeline diagram, the footer) live once in fragments/ and are carried as
<!-- fragment:name --> ... <!-- /fragment:name -->. After editing either:
python tools/facts.py # write the values into every page
python tools/facts.py --check # what CI runs; fails if any page disagrees
A number changes only when the CSV or the command output behind it changes, and the footer names the SANKHYA commit the site was last checked against.
Everything under docs/ is generated by tools/build_docs.py from a SANKHYA checkout at one
commit: each solver document converted from Markdown, and the technical report assembled from
content/report.md, whose {{include PATH section "HEADING"}}, {{include PATH lead}} and
{{include PATH}} lines copy passages of the solver documents verbatim. Links to solver files
are pinned to that commit. The script refuses a dirty checkout and fails on a broken link, on a
table whose row count differs from its source, and on any number in a page that is not in its
source. Running it twice on the same commit changes nothing.
git clone https://github.com/thegoodengineers/SANKHYA ../SANKHYA # or: git -C ../SANKHYA pull
pip install -r tools/requirements-docs.txt # markdown==3.7, pinned
python tools/build_docs.py --solver ../SANKHYA
python tools/build_docs.py --solver ../SANKHYA --check-external # also fetch external links
python tools/facts.py --check
git status docs/ # review, then commit on a branch
The "regenerate docs" workflow in GitHub Actions does the same by hand-started run against SANKHYA
main and opens a pull request if anything changed; it never commits to main and never deploys.
It needs "Allow GitHub Actions to create and approve pull requests" enabled in the repository settings.
Vercel serves the folder as-is. vercel.json turns on clean URLs and nothing else.