<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Himani</title>
    <description>The latest articles on DEV Community by Himani (@himanigaur).</description>
    <link>https://dev.to/himanigaur</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4205617%2F6d9634af-5ce2-4710-8c6f-abd0b09fa3d8.png</url>
      <title>DEV Community: Himani</title>
      <link>https://dev.to/himanigaur</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/himanigaur"/>
    <language>en</language>
    <item>
      <title>Building Waylit: The Route Is Only Half the Decision</title>
      <dc:creator>Himani</dc:creator>
      <pubDate>Sun, 25 Oct 2026 00:23:20 +0000</pubDate>
      <link>https://dev.to/himanigaur/building-waylit-the-route-is-only-half-the-decision-5932</link>
      <guid>https://dev.to/himanigaur/building-waylit-the-route-is-only-half-the-decision-5932</guid>
      <description>&lt;p&gt;&lt;em&gt;A hack-day experiment in making route evaluation reusable with an open-source TypeScript SDK.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A routing engine can find a path. But an application still has to decide whether that path fits the person, the product, and the situation.&lt;/p&gt;

&lt;p&gt;That gap is what we're exploring with &lt;strong&gt;Waylit&lt;/strong&gt; — an open-source, provider-agnostic TypeScript SDK for evaluating and ranking existing candidate routes using contextual observations and configurable policies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better routes. Brighter journeys.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Waylit isn't another navigation engine. It's an evaluation layer designed to work alongside the routing infrastructure developers already use.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: "fastest" isn't always "best"
&lt;/h2&gt;

&lt;p&gt;Different route-based applications have different priorities.&lt;/p&gt;

&lt;p&gt;A walking experience might want to consider route duration alongside available lighting observations or nearby open businesses. A cycling application might prioritize protected lanes. A fleet application might need to respect vehicle restrictions or road closures.&lt;/p&gt;

&lt;p&gt;A routing provider can return candidate paths, but product teams still need to define their own trade-offs. That often means writing and maintaining custom logic for eligibility, ranking, missing data, and explanations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if that evaluation logic could be reusable, without replacing the router?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the idea behind Waylit.&lt;/p&gt;

&lt;p&gt;These are potential use cases we're exploring, not claims of validated customer demand.&lt;/p&gt;

&lt;h2&gt;
  
  
  The approach: keep your router, add a decision layer
&lt;/h2&gt;

&lt;p&gt;The intended workflow is straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Candidate routes&lt;/strong&gt; come from an existing routing provider or internal router.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextual observations&lt;/strong&gt; provide relevant evidence where available.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A configurable policy&lt;/strong&gt; defines hard constraints and softer preferences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Waylit evaluates the candidates&lt;/strong&gt; and returns a ranking with reasoning.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The separation is important:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The routing engine generates candidate paths.&lt;/li&gt;
&lt;li&gt;The application defines what matters.&lt;/li&gt;
&lt;li&gt;Waylit evaluates the candidates against that policy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two principles guide the design.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Missing data stays unknown
&lt;/h3&gt;

&lt;p&gt;If an observation is missing, we shouldn't silently treat it as zero or assume that the absence of a warning means a route is safe.&lt;/p&gt;

&lt;p&gt;Unknown data should remain unknown.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Hard constraints come first
&lt;/h3&gt;

&lt;p&gt;A route shouldn't win because it scores well on a soft preference if it violates a non-negotiable restriction.&lt;/p&gt;

&lt;p&gt;For example, an explicit vehicle restriction shouldn't be outweighed by a shorter travel time.&lt;/p&gt;

&lt;p&gt;The goal is to make these decisions explicit and testable rather than burying them inside application-specific ranking code.&lt;/p&gt;

&lt;h2&gt;
  
  
  A small example: same routes, different policy
&lt;/h2&gt;

&lt;p&gt;The current demo uses &lt;strong&gt;synthetic observations&lt;/strong&gt; to demonstrate how policy changes affect rankings. It isn't connected to a verified live contextual data feed.&lt;/p&gt;

&lt;p&gt;Imagine three candidate routes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Route&lt;/th&gt;
&lt;th&gt;Duration&lt;/th&gt;
&lt;th&gt;Lighting observation&lt;/th&gt;
&lt;th&gt;Open businesses&lt;/th&gt;
&lt;th&gt;Listed disruptions&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;12 min&lt;/td&gt;
&lt;td&gt;0.60&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;16 min&lt;/td&gt;
&lt;td&gt;0.95&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;19 min&lt;/td&gt;
&lt;td&gt;0.85&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Now compare two policies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shortest Walk&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With a zero-minute detour budget, Route A is the expected winner because it's the shortest candidate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better Lighting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With a five-minute detour budget and a higher weight on the lighting observation, Route B is the expected winner.&lt;/p&gt;

&lt;p&gt;The important behavior is that &lt;strong&gt;the ranking changes when the policy changes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The example is intended to demonstrate configurable evaluation. It does not establish that the observations are live, complete, or accurate, and it does not guarantee that any route is safe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why build an SDK instead of another app?
&lt;/h2&gt;

&lt;p&gt;The React interface is a demo and reference experience. The central product idea is the SDK underneath it.&lt;/p&gt;

&lt;p&gt;Waylit aims to give developers a reusable TypeScript layer that fits into an existing application without requiring them to replace their routing provider or framework.&lt;/p&gt;

&lt;p&gt;The questions we're interested in are practical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can a developer integrate it without excessive setup?&lt;/li&gt;
&lt;li&gt;Are the types and policy model understandable?&lt;/li&gt;
&lt;li&gt;Is the behavior deterministic and testable?&lt;/li&gt;
&lt;li&gt;Can developers understand why a candidate ranked where it did?&lt;/li&gt;
&lt;li&gt;Is this abstraction genuinely more useful than maintaining custom ranking logic?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We don't have all those answers yet.&lt;/p&gt;

&lt;p&gt;The next step is to test the SDK with developers who already work with candidate routes and understand the trade-offs their applications need to make.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building and verifying with Kane CLI
&lt;/h2&gt;

&lt;p&gt;The Kane CLI Hack Day is an opportunity to go beyond building a demo and verify a real user workflow.&lt;/p&gt;

&lt;p&gt;For Waylit, the key workflow to test is whether changing the policy produces the expected ranking:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the demo.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Shortest Walk&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Verify that Route A ranks first.&lt;/li&gt;
&lt;li&gt;Switch to &lt;strong&gt;Better Lighting&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Verify that Route B ranks first.&lt;/li&gt;
&lt;li&gt;Capture the actual verification result.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What Kane actually verified
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Before publishing, replace this section with the outcome of your actual Kane CLI run. Do not leave this placeholder in the published article.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Command or workflow:&lt;/strong&gt; &lt;code&gt;[Insert the actual Kane CLI command or workflow]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Result:&lt;/strong&gt; &lt;code&gt;[Insert the actual pass/fail result]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What was verified or caught:&lt;/strong&gt; &lt;code&gt;[Describe what the run actually demonstrated]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feedback loop:&lt;/strong&gt; &lt;code&gt;[If applicable, explain whether the result was fed back to the coding agent and what changed]&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the workflow passed, describe what passed. If Kane caught a bug, explain the bug and the verified fix. If the run was blocked, be honest about the blocker.&lt;/p&gt;

&lt;p&gt;The point is to show evidence of the actual development and verification process, not to claim a result that hasn't happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's working — and what's still unknown
&lt;/h2&gt;

&lt;p&gt;The current project demonstrates a TypeScript route-evaluation flow and a React demo using synthetic candidate routes and observations.&lt;/p&gt;

&lt;p&gt;There are still important open questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which real contextual data sources would be useful and reliable?&lt;/li&gt;
&lt;li&gt;How easy is it to integrate Waylit into an existing application?&lt;/li&gt;
&lt;li&gt;Does the policy model handle real product requirements cleanly?&lt;/li&gt;
&lt;li&gt;Do developers have a recurring problem that makes this SDK worth adopting?&lt;/li&gt;
&lt;li&gt;What would it take to maintain the project and its integrations over time?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The next milestone should be narrow: integrate one route source and one contextual source, then test the workflow with a small group of developers.&lt;/p&gt;

&lt;p&gt;A meaningful signal would be a developer integrating their own data and returning to use Waylit — not just trying the demo once.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned from the experiment
&lt;/h2&gt;

&lt;p&gt;Waylit starts with a distinction that's easy to overlook:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Finding a path and choosing a path are different jobs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A reusable evaluation layer could help teams express their own trade-offs without rebuilding ranking logic for every application.&lt;/p&gt;

&lt;p&gt;But the value depends on the quality of the evidence, the clarity of the policy model, and whether developers actually want this abstraction.&lt;/p&gt;

&lt;p&gt;The demo makes the idea tangible. The next step is to put it in front of real workflows and learn where it holds up.&lt;/p&gt;

&lt;p&gt;If you build a route-based application and already receive candidate routes from a routing provider, I'd love to hear how you handle product-specific constraints, contextual evidence, and route ranking today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Waylit — Better routes. Brighter journeys.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Project links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/agargya123/waylit" rel="noopener noreferrer"&gt;https://github.com/agargya123/waylit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live demo or run instructions:&lt;/strong&gt; &lt;code&gt;[Add the verified live demo URL or exact command to run the project]&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  navigation #opensource #kanecli #webdev
&lt;/h1&gt;

</description>
      <category>architecture</category>
      <category>opensource</category>
      <category>softwaredevelopment</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
