<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Web | Valentin Caries</title><link>https://vcaries.github.io/en/tag/web/</link><atom:link href="https://vcaries.github.io/en/tag/web/index.xml" rel="self" type="application/rss+xml"/><description>Web</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 25 May 2026 00:00:00 +0000</lastBuildDate><image><url>https://vcaries.github.io/media/icon_hu536d0651d21529ac336731b24f3e073f_144279_512x512_fill_lanczos_center_3.png</url><title>Web</title><link>https://vcaries.github.io/en/tag/web/</link></image><item><title>Pi-Scope — dimensional analysis in the browser</title><link>https://vcaries.github.io/en/project/pi-theorem/</link><pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate><guid>https://vcaries.github.io/en/project/pi-theorem/</guid><description>&lt;p>&lt;strong>Pi-Scope&lt;/strong> turns a set of dimensioned physical variables into the &lt;strong>dimensionless groups&lt;/strong> that govern them, using the &lt;strong>Vaschy–Buckingham (Π) theorem&lt;/strong>. It pairs a rigorous scientific engine with a modern, bilingual, theme-aware interface — and, in its showcase deployment, runs the actual Python engine &lt;em>inside the browser&lt;/em>.&lt;/p>
&lt;p>👉 &lt;strong>&lt;a href="https://vcaries.github.io/pi_theorem/" target="_blank" rel="noopener">Try the live demo&lt;/a>&lt;/strong> · &lt;strong>&lt;a href="https://github.com/vcaries/pi_theorem" target="_blank" rel="noopener">Source on GitHub&lt;/a>&lt;/strong>&lt;/p>
&lt;h2 id="scientific-context">Scientific context&lt;/h2>
&lt;p>Dimensional analysis is a cornerstone of physics and engineering. The &lt;strong>Buckingham Π theorem&lt;/strong> states that any physically meaningful relation between &lt;em>n&lt;/em> variables involving &lt;em>k&lt;/em> independent base dimensions can be rewritten as a relation between just &lt;em>n − k&lt;/em> &lt;strong>dimensionless groups&lt;/strong>. Reducing the number of parameters this way is what makes wind-tunnel scaling, similarity laws and the famous numbers of fluid mechanics (Reynolds, Mach, Nusselt…) possible.&lt;/p>
&lt;p>Concretely, the dimensionless groups form a &lt;strong>basis of the null space of the dimensional matrix&lt;/strong> — the matrix whose columns are each variable&amp;rsquo;s exponents over the SI base dimensions. Pi-Scope assembles that matrix, computes its rank and a null-space basis with &lt;strong>exact rational arithmetic&lt;/strong> (no floating-point drift), and renders each group as clean LaTeX.&lt;/p>
&lt;p>The flagship example reproduces the similarity parameters of &lt;em>Chen, Greitzer, Tan &amp;amp; Marble, “Similarity Analysis of Compressor Tip Clearance Flow Structure” (1990)&lt;/em> — eleven variables reduced to eight independent dimensionless groups.&lt;/p>
&lt;h2 id="technical-implementation">Technical implementation&lt;/h2>
&lt;p>The project is built as a &lt;strong>decoupled, professional full-stack application&lt;/strong>, then deployed in a way that needs no server at all:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Scientific engine — Python + SymPy.&lt;/strong> A web-framework-free core extends the analysis to all &lt;strong>seven SI base dimensions&lt;/strong> (mass, length, time, temperature, current, amount of substance, luminous intensity), computes the null-space basis symbolically, and reduces each group to its smallest integer exponents.&lt;/li>
&lt;li>&lt;strong>Backend — FastAPI.&lt;/strong> A typed REST API (Pydantic schemas, automatic OpenAPI docs) exposes the engine, a curated variable library organised by physics domain, and citeable worked examples.&lt;/li>
&lt;li>&lt;strong>Frontend — React + TypeScript + Tailwind.&lt;/strong> A responsive engineering-grade UI with KaTeX equation rendering, the explicit dimensional matrix, light/dark themes, full French/English internationalisation, and JSON/LaTeX export.&lt;/li>
&lt;li>&lt;strong>In-browser execution — Pyodide (WebAssembly).&lt;/strong> For the public demo, the &lt;em>exact same&lt;/em> Python engine is compiled to WebAssembly and runs client-side via Pyodide. The result is a &lt;strong>100 % static, offline-capable&lt;/strong> site hosted directly on GitHub Pages — instant, free, and with no cold starts.&lt;/li>
&lt;li>&lt;strong>Engineering quality.&lt;/strong> Unit + integration tests, linting and static typing (Ruff, Mypy), Docker images, and GitHub Actions CI/CD for both the API and the static demo.&lt;/li>
&lt;/ul>
&lt;h2 id="skills-demonstrated">Skills demonstrated&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Scientific computing &amp;amp; modelling:&lt;/strong> dimensional analysis, exact linear algebra, symbolic mathematics.&lt;/li>
&lt;li>&lt;strong>Software architecture:&lt;/strong> clean separation of a reusable engine, an API layer, and a UI; typed end-to-end.&lt;/li>
&lt;li>&lt;strong>Web integration:&lt;/strong> React/TypeScript front end and the non-trivial feat of running a real Python scientific stack in the browser via WebAssembly.&lt;/li>
&lt;li>&lt;strong>Delivery &amp;amp; DevOps:&lt;/strong> automated testing, containerisation, and continuous deployment to GitHub Pages.&lt;/li>
&lt;/ul>
&lt;p>This project is a compact demonstration of taking a piece of applied physics from a research script all the way to a polished, deployable product.&lt;/p></description></item></channel></rss>