<?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: Arun</title>
    <description>The latest articles on DEV Community by Arun (@arun_ceptorlabs).</description>
    <link>https://dev.to/arun_ceptorlabs</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%2F4167838%2F1539de13-b38b-4859-8e96-55a4e8657617.png</url>
      <title>DEV Community: Arun</title>
      <link>https://dev.to/arun_ceptorlabs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arun_ceptorlabs"/>
    <language>en</language>
    <item>
      <title>I'm building Mocxam: a white-label mock test platform for coaching institutes</title>
      <dc:creator>Arun</dc:creator>
      <pubDate>Fri, 23 Oct 2026 04:05:18 +0000</pubDate>
      <link>https://dev.to/ceptorlabs/im-building-mocxam-a-white-label-mock-test-platform-for-coaching-institutes-h35</link>
      <guid>https://dev.to/ceptorlabs/im-building-mocxam-a-white-label-mock-test-platform-for-coaching-institutes-h35</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnjb52cg0l07d75f2o13i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnjb52cg0l07d75f2o13i.png" alt="Mockxam" width="800" height="450"&gt;&lt;/a&gt;At Ceptor Labs, we build software for problems we see up close. Today we're introducing &lt;strong&gt;Mocxam&lt;/strong&gt;, a platform that lets coaching institutes launch their own branded online test series, without building software themselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem we set out to solve
&lt;/h2&gt;

&lt;p&gt;Preparing for SSC, Banking, Railways or UPSC means taking a lot of mock tests. Behind most of those tests, a coaching institute is doing manual work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Questions live in documents and spreadsheets.&lt;/li&gt;
&lt;li&gt;Tests run on generic form tools with no real exam feel.&lt;/li&gt;
&lt;li&gt;There's often no negative marking, no section timers and no proper question palette.&lt;/li&gt;
&lt;li&gt;Students get a score, but no idea why they lost marks.&lt;/li&gt;
&lt;li&gt;The institute's own brand barely shows up.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Large test-prep platforms cover parts of this, but the institute ends up promoting someone else's brand. Small and mid-sized institutes want their own name, their own students and their own data. Mocxam is built for them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Mocxam gives an institute
&lt;/h2&gt;

&lt;p&gt;Each institute gets a &lt;strong&gt;coaching dashboard&lt;/strong&gt; for staff and a &lt;strong&gt;branded student portal&lt;/strong&gt; for candidates.&lt;/p&gt;

&lt;h3&gt;
  
  
  The coaching dashboard
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Control Room:&lt;/strong&gt; plan usage, student seats and quick actions on one screen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mock Test Studio:&lt;/strong&gt; create tests, set duration and marking, and publish or disable them with one click.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Question bank and editor:&lt;/strong&gt; tag each question by exam, subject and difficulty, with a live preview of what students will see.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Paper Setter:&lt;/strong&gt; draft question papers with AI. Institutes can bring their own Gemini key. [Add: how this works in practice.]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bulk imports:&lt;/strong&gt; enrol students with one CSV (name, email, password) and import questions by CSV, with a row-by-row validation report.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exam syllabi and marking:&lt;/strong&gt; set the marking scheme once per exam and it applies to every mock.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faculty and role-based access:&lt;/strong&gt; staff accounts with different permissions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit trail and academy settings:&lt;/strong&gt; a record of changes, plus logo, colours and font.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The student portal
&lt;/h3&gt;

&lt;p&gt;Candidates sign in to a portal that carries the institute's name and colours. They can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Take full-length, sectional or topic-wise tests with real timing and negative marking.&lt;/li&gt;
&lt;li&gt;Use a distraction-free test player with a question palette, flags and a live timer.&lt;/li&gt;
&lt;li&gt;See instant results with accuracy per section and topic.&lt;/li&gt;
&lt;li&gt;Review step-by-step solutions for every question.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Mistake analysis: the feature we care about most
&lt;/h2&gt;

&lt;p&gt;A score alone doesn't help a student improve. After each test, Mocxam labels wrong answers so students know what to change:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Silly mistakes:&lt;/strong&gt; they knew it, but slipped.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Concept gaps:&lt;/strong&gt; the topic needs another look.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time sinks:&lt;/strong&gt; questions that used too much of the clock.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This turns a mock test from a scoreboard into practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design decisions behind it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;One institute, one portal.&lt;/strong&gt; Every institute gets its own student portal on its own subdomain, with separate admin and student entry points. Candidate data is kept isolated per institute, which matters when institutes compete with each other. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;White-label by default.&lt;/strong&gt; Logo, colours, favicon and font are settings, not custom work. Higher plans can remove "Powered by Mocxam" entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Imports come first.&lt;/strong&gt; Institutes already hold thousands of questions and hundreds of students. If onboarding means retyping them, nobody switches. So we made CSV import with clear validation errors a core feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exam-faithful practice.&lt;/strong&gt; A mock test only helps if it feels like the real exam, so marking schemes and timers are configured per exam.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plans
&lt;/h2&gt;

&lt;p&gt;Plans start with a free pilot (up to 25 students and 2 mock tests) and scale through Starter, Academy Pro and Institution Scale. &lt;/p&gt;

&lt;h2&gt;
  
  
  What we learned building it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Onboarding is the product.&lt;/strong&gt; Bulk import was the first thing institutes asked about.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;White-label is mostly small details.&lt;/strong&gt; Favicons, footers, emails and login pages all need to carry the institute's brand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Students want the "why".&lt;/strong&gt; Per-topic accuracy and mistake labels get more attention than the raw score.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try Mocxam
&lt;/h2&gt;

&lt;p&gt;Mocxam is free to start. If you run or work with a coaching institute, we'd love your feedback.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://coaching.mockbazaar.com/" rel="noopener noreferrer"&gt;https://coaching.mockbazaar.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Demo video: &lt;a href="https://youtu.be/NGCjtl30bWI?si=Un5-oa9Yi-Odlx9m" rel="noopener noreferrer"&gt;https://youtu.be/NGCjtl30bWI?si=Un5-oa9Yi-Odlx9m&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Contact: &lt;a href="mailto:proxyceptor@gmail.com"&gt;proxyceptor@gmail.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Have you built something similar, or taken these mock tests as a student? Tell us in the comments what you'd want most.&lt;/p&gt;

&lt;p&gt;Mocxam is built by &lt;a href="//ceptorlabs.vercel.app"&gt;Ceptor Labs&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>edtech</category>
      <category>saas</category>
      <category>webdev</category>
      <category>ai</category>
    </item>
    <item>
      <title>Your API Works. But Have You Tested What Happens When It Fails?</title>
      <dc:creator>Arun</dc:creator>
      <pubDate>Wed, 21 Oct 2026 02:48:10 +0000</pubDate>
      <link>https://dev.to/ceptorlabs/your-api-works-but-have-you-tested-what-happens-when-it-fails-18b6</link>
      <guid>https://dev.to/ceptorlabs/your-api-works-but-have-you-tested-what-happens-when-it-fails-18b6</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx0gwlf9mtsjfhjtsvx4j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx0gwlf9mtsjfhjtsvx4j.png" alt="QA mock testing" width="799" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every developer has tested an API that returns &lt;code&gt;200 OK&lt;/code&gt;, checked the response, and moved on to the next task.&lt;/p&gt;

&lt;p&gt;But production is rarely that predictable.&lt;/p&gt;

&lt;p&gt;An API returns a &lt;code&gt;500&lt;/code&gt;. A response is missing a field. A request takes too long. A video stream fails on a smart TV, even though it works perfectly in your browser.&lt;/p&gt;

&lt;p&gt;These are the scenarios where QA testing becomes more than just verifying that a feature works.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Problem With Happy-Path Testing
&lt;/h2&gt;

&lt;p&gt;Consider a frontend that fetches user details from an API.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getUser&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;username&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This might work perfectly when the backend returns the expected response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Test User"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But what happens if the server returns an error, the &lt;code&gt;user&lt;/code&gt; property is missing, or the request fails because of a network issue?&lt;/p&gt;

&lt;p&gt;The application might crash, display an empty screen, or leave the user waiting indefinitely.&lt;/p&gt;

&lt;p&gt;A reliable application should handle these cases deliberately.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Test Failure Scenarios, Not Just Successful Responses
&lt;/h2&gt;

&lt;p&gt;Before shipping a feature, consider testing scenarios such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Server errors:&lt;/strong&gt; What happens when an API returns &lt;code&gt;500 Internal Server Error&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing data:&lt;/strong&gt; Does the UI handle absent or unexpected JSON fields?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentication failures:&lt;/strong&gt; What happens when a session expires?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network interruptions:&lt;/strong&gt; Does the application recover when a request fails?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unexpected endpoints:&lt;/strong&gt; Does the application behave correctly when a request goes to the wrong environment?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can simulate some of these conditions directly in code. However, modifying application code for every test scenario can become repetitive, especially when working with large applications or debugging issues on physical devices.&lt;/p&gt;

&lt;p&gt;That is where API mocking and network interception become useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. API Mocking Makes Testing More Predictable
&lt;/h2&gt;

&lt;p&gt;Instead of depending on a live backend, you can control the responses your frontend receives.&lt;/p&gt;

&lt;p&gt;For example, you can simulate an API error using a mocked response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mockResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Internal server error&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;}),&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your application can then be tested against this response to verify that it displays an appropriate error message rather than crashing.&lt;/p&gt;

&lt;p&gt;The same approach can be used to test missing fields, unexpected values, authentication failures, and other edge cases.&lt;/p&gt;

&lt;p&gt;The important idea is simple: &lt;strong&gt;control the conditions under which your application runs.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. What If You Could Modify Requests Without Changing Application Code?
&lt;/h2&gt;

&lt;p&gt;Sometimes the problem is not the API response itself, but the request being sent.&lt;/p&gt;

&lt;p&gt;You might want to redirect an API call to a staging server, change a request payload, rewrite a URL, or modify a nested JSON field to reproduce a bug.&lt;/p&gt;

&lt;p&gt;Doing this manually through application code introduces unnecessary changes and may require rebuilding or redeploying the application.&lt;/p&gt;

&lt;p&gt;Network interception offers another approach.&lt;/p&gt;

&lt;p&gt;With a suitable interception tool, you can modify selected traffic during testing while leaving the application's source code unchanged.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where Proxyceptor Fits In
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://proxyceptor.com/" rel="noopener noreferrer"&gt;Proxyceptor&lt;/a&gt; is a network debugging and API testing tool designed to help developers and QA engineers capture and manipulate requests across supported environments.&lt;/p&gt;

&lt;p&gt;Here are a few ways it can fit into a testing workflow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Request and payload modification&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Change request parameters or JSON payloads to test how your application handles different inputs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;URL rewriting and redirection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Redirect outgoing requests to staging environments or local mock servers without changing the application's endpoint configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JSON deep editing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Modify nested response or request fields to reproduce edge cases and verify frontend behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Smart TV debugging&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Investigate network-related issues in applications running on Android TV, Fire TV, Samsung Tizen, and LG webOS. These environments can be more challenging to debug than ordinary browser applications, especially when traditional proxy setups require certificate configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Browser and framework workflows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use network manipulation alongside development workflows involving Chrome, Edge, React, Next.js, Vue, and other supported environments.&lt;/p&gt;

&lt;p&gt;Explore the capabilities at &lt;a href="https://proxyceptor.com/" rel="noopener noreferrer"&gt;proxyceptor.com&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. A Practical QA Workflow
&lt;/h2&gt;

&lt;p&gt;Here is a straightforward workflow you can adopt for your next feature:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identify a critical user journey, such as login, checkout, or video playback.&lt;/li&gt;
&lt;li&gt;List possible failure scenarios, including invalid data, server errors, and unexpected responses.&lt;/li&gt;
&lt;li&gt;Use mocks or network interception to reproduce those scenarios.&lt;/li&gt;
&lt;li&gt;Verify that the frontend handles errors, displays useful feedback, and recovers appropriately.&lt;/li&gt;
&lt;li&gt;Document the bug and repeat the same test after implementing a fix.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For larger projects, combine this workflow with automated tests so that important failure scenarios are checked during regression testing.&lt;/p&gt;

&lt;p&gt;Remember that modifying a request is not the same as verifying the final outcome. Your tests should still assert that the application behaves as expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Good QA is not about checking whether everything works when conditions are perfect. It is about discovering how your software behaves when they are not.&lt;/p&gt;

&lt;p&gt;API mocking helps create predictable test conditions. Network interception adds another level of control by letting developers modify requests, redirect traffic, and reproduce issues without repeatedly changing application code.&lt;/p&gt;

&lt;p&gt;If you regularly debug APIs, test frontend error handling, or investigate issues on connected devices, Proxyceptor is worth exploring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build for the failures you can anticipate, not just the successes you expect.&lt;/strong&gt;&lt;br&gt;
checkout this website for completely free proxyceptor.com.&lt;/p&gt;

</description>
      <category>api</category>
      <category>softwaredevelopment</category>
      <category>proxyceptor</category>
      <category>ai</category>
    </item>
    <item>
      <title>CallCeptor: Making Website Calls Smarter with Browser-Based Calling</title>
      <dc:creator>Arun</dc:creator>
      <pubDate>Tue, 20 Oct 2026 02:31:10 +0000</pubDate>
      <link>https://dev.to/ceptorlabs/callceptor-making-website-calls-smarter-with-browser-based-calling-3354</link>
      <guid>https://dev.to/ceptorlabs/callceptor-making-website-calls-smarter-with-browser-based-calling-3354</guid>
      <description>&lt;p&gt;A visitor lands on your website, finds a product they are interested in, and wants to speak with your team. Usually, they have to copy a phone number, dial it, navigate a menu, and explain what they were looking at.&lt;/p&gt;

&lt;p&gt;There is a simpler way to handle this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://callceptor.com/" rel="noopener noreferrer"&gt;CallCeptor&lt;/a&gt;&lt;/strong&gt; turns a website's contact option into a browser-based Call button, helping visitors connect with the right person without installing an app or manually dialing a number.&lt;/p&gt;

&lt;p&gt;Let's look at the features that make this approach useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Browser-Based Calling
&lt;/h2&gt;

&lt;p&gt;Visitors can start a call directly from your website on desktop or mobile. Calls use WebRTC, so there is no separate application to install.&lt;/p&gt;

&lt;p&gt;The widget requests microphone permission only when the visitor clicks Call. If browser calling isn't available, visitors can use the callback option instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Smart Call Routing
&lt;/h2&gt;

&lt;p&gt;Not every enquiry belongs to the same department.&lt;/p&gt;

&lt;p&gt;Someone reading an IPO page may need the IPO team, while a visitor exploring wealth management may want to speak with a relationship manager.&lt;/p&gt;

&lt;p&gt;CallCeptor can route calls using the page URL, selected topic, customer type, language, and department availability. This helps visitors reach the relevant team without navigating a long IVR menu.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Mobile Fallback
&lt;/h2&gt;

&lt;p&gt;What happens when an agent isn't sitting at their dashboard?&lt;/p&gt;

&lt;p&gt;CallCeptor can ring an agent's verified mobile number when they aren't available in the browser. Teams can also configure timeouts and overflow rules to handle unanswered calls.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Quick Caller Intake
&lt;/h2&gt;

&lt;p&gt;Before connecting a visitor, the widget can collect basic details such as their name, mobile number, whether they are a new or existing client, and the reason for calling.&lt;/p&gt;

&lt;p&gt;Optional OTP verification helps reduce spam, while consent information can be displayed before a call starts.&lt;/p&gt;

&lt;p&gt;This gives agents useful context before they begin the conversation.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Agent Console
&lt;/h2&gt;

&lt;p&gt;The agent console provides context before an agent answers.&lt;/p&gt;

&lt;p&gt;Agents can see who is calling, which page they came from, and relevant campaign information. They can also manage availability, mute or hold calls, transfer callers, and add notes or client details.&lt;/p&gt;

&lt;p&gt;The goal is to make conversations more informed from the very beginning.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Callbacks and Lead Management
&lt;/h2&gt;

&lt;p&gt;Missed calls shouldn't disappear into a forgotten log.&lt;/p&gt;

&lt;p&gt;CallCeptor converts missed calls into callback tasks with deadlines and escalation rules. Visitors can select a callback slot and receive a confirmation.&lt;/p&gt;

&lt;p&gt;Its lead inbox also tracks calls, missed calls, and callbacks alongside page details, referrers, and campaign tags. Teams can filter leads and export data through CSV or send events to their systems using webhooks.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Recording and Compliance
&lt;/h2&gt;

&lt;p&gt;For financial services businesses, maintaining call records is especially important.&lt;/p&gt;

&lt;p&gt;CallCeptor supports configurable recording rules, consent workflows, retention policies, legal holds, and audit logs. Recordings are encrypted at rest, with data hosted in Indian cloud regions.&lt;/p&gt;

&lt;p&gt;These capabilities help teams manage calls with greater visibility and accountability.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Website Customisation and Integrations
&lt;/h2&gt;

&lt;p&gt;The CallCeptor widget can be placed in a website header, displayed as a floating button, or embedded inline on a page. Its label and colours can be customised to match the website.&lt;/p&gt;

&lt;p&gt;Integration starts with a script tag, making it suitable for sites built with React, Angular, WordPress, Webflow, or plain HTML.&lt;/p&gt;

&lt;p&gt;For teams that need to connect call activity to their existing workflows, signed webhooks and scheduled CSV exports are available.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Is It For?
&lt;/h2&gt;

&lt;p&gt;CallCeptor is designed primarily for Indian financial services businesses, including stock brokers, asset management companies, wealth firms, investment advisers, mutual fund distributors, insurers, and lenders.&lt;/p&gt;

&lt;p&gt;It is particularly useful when different website pages serve different audiences and every enquiry needs to reach the right team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;A contact number is only the beginning of a customer conversation. The experience around that call matters just as much.&lt;/p&gt;

&lt;p&gt;By combining browser calling, intelligent routing, mobile fallback, callback management, lead tracking, and compliance features, CallCeptor aims to make website communication more direct and organised.&lt;/p&gt;

&lt;p&gt;Explore the platform at &lt;strong&gt;&lt;a href="https://callceptor.com/" rel="noopener noreferrer"&gt;https://callceptor.com/&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;What do you think matters most in a website calling experience: faster connections, smarter routing, or better follow-up?&lt;/p&gt;

</description>
      <category>webrtc</category>
      <category>webdev</category>
      <category>callceptor</category>
      <category>saas</category>
    </item>
    <item>
      <title>Your Website Gets Visitors. But Can They Actually Reach Your Team?</title>
      <dc:creator>Arun</dc:creator>
      <pubDate>Wed, 14 Oct 2026 05:59:39 +0000</pubDate>
      <link>https://dev.to/arun_ceptorlabs/your-website-gets-visitors-but-can-they-actually-reach-your-team-5110</link>
      <guid>https://dev.to/arun_ceptorlabs/your-website-gets-visitors-but-can-they-actually-reach-your-team-5110</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fszvlhl0pm02mfyf8762h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fszvlhl0pm02mfyf8762h.png" alt="Calceptor" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A visitor lands on your website, reads your pricing page, explores a product, and has one question before making a decision.&lt;/p&gt;

&lt;p&gt;They look for a phone number.&lt;/p&gt;

&lt;p&gt;Then comes the usual process: pick up a phone, dial the number, navigate an IVR menu, explain the reason for calling, and hope they reach the right person.&lt;/p&gt;

&lt;p&gt;That's a lot of friction for someone who is already interested in your business.&lt;/p&gt;

&lt;h2&gt;
  
  
  The gap between website traffic and real conversations
&lt;/h2&gt;

&lt;p&gt;We spend a lot of time optimizing websites for conversions.&lt;/p&gt;

&lt;p&gt;We improve page speed, redesign landing pages, run A/B tests, optimize forms, and track every click. But one important interaction often remains unchanged: connecting a visitor with a real person.&lt;/p&gt;

&lt;p&gt;A contact page might tell visitors how to reach you, but it doesn't necessarily make that interaction easy.&lt;/p&gt;

&lt;p&gt;For businesses where conversations influence decisions, such as financial services, insurance, consulting, and sales, this gap matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  What if calling worked like clicking a button?
&lt;/h2&gt;

&lt;p&gt;Imagine a visitor reading about an investment product. Instead of leaving the page to find a phone number, they click a call button directly on the website.&lt;/p&gt;

&lt;p&gt;They select a topic, provide the necessary context, and connect with the appropriate team from their browser.&lt;/p&gt;

&lt;p&gt;That's the idea behind &lt;a href="https://callceptor.com/" rel="noopener noreferrer"&gt;CallCeptor&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Instead of treating calling as a separate activity, CallCeptor makes it part of the website experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Context makes the difference
&lt;/h2&gt;

&lt;p&gt;A phone call becomes much more useful when the receiving team understands why the visitor is calling.&lt;/p&gt;

&lt;p&gt;For example, consider these two scenarios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Traditional calling&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A visitor finds a phone number.&lt;/li&gt;
&lt;li&gt;They dial and navigate the IVR.&lt;/li&gt;
&lt;li&gt;They explain which product or page they were exploring.&lt;/li&gt;
&lt;li&gt;The agent starts gathering context.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Context-aware website calling&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A visitor explores a specific product page.&lt;/li&gt;
&lt;li&gt;They click the call button.&lt;/li&gt;
&lt;li&gt;They choose the relevant topic.&lt;/li&gt;
&lt;li&gt;The receiving team gets useful information about the visitor's journey.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The conversation can start with more context instead of repeating the same questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happens when nobody answers?
&lt;/h2&gt;

&lt;p&gt;Missed calls are another problem worth solving.&lt;/p&gt;

&lt;p&gt;A visitor who is ready to speak with your team might not try again after an unanswered call. Without proper tracking, the opportunity can disappear into a call log.&lt;/p&gt;

&lt;p&gt;A better workflow treats missed calls as follow-up tasks rather than forgotten interactions.&lt;/p&gt;

&lt;p&gt;CallCeptor supports callback management and lead tracking, helping teams understand who reached out, where the interaction originated, and what needs attention next.&lt;/p&gt;

&lt;p&gt;This turns a missed interaction into something the team can act on.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does implementation look like for developers?
&lt;/h2&gt;

&lt;p&gt;One interesting aspect is that website calling doesn't have to mean rebuilding your existing website.&lt;/p&gt;

&lt;p&gt;CallCeptor is designed to integrate through a website SDK. A basic installation looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script
  &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://callceptor.com/callceptor-sdk.js"&lt;/span&gt;
  &lt;span class="na"&gt;data-site-key=&lt;/span&gt;&lt;span class="s"&gt;"YOUR_SITE_KEY"&lt;/span&gt;
  &lt;span class="na"&gt;async&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;YOUR_SITE_KEY&lt;/code&gt; with your configured site key and follow the platform's setup instructions.&lt;/p&gt;

&lt;p&gt;From there, teams can configure their calling workflow, including departments, agents, working hours, and routing rules.&lt;/p&gt;

&lt;p&gt;As with any communication feature, developers should also consider consent, recording policies, accessibility, and the behavior when an agent is unavailable.&lt;/p&gt;

&lt;h2&gt;
  
  
  A different way to think about conversion
&lt;/h2&gt;

&lt;p&gt;Not every website visitor wants to fill out a form. Not every customer wants to wait for a callback. Sometimes, the fastest way to answer a question is to have a conversation.&lt;/p&gt;

&lt;p&gt;Forms, chat, email, and phone calls can all serve different purposes. The goal isn't to replace every existing channel. It's to make the right interaction easier to start.&lt;/p&gt;

&lt;p&gt;That's the problem CallCeptor is trying to address: reducing the distance between a visitor's question and the person who can answer it.&lt;/p&gt;

&lt;p&gt;Explore it here: &lt;a href="https://callceptor.com/" rel="noopener noreferrer"&gt;https://callceptor.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Question for developers and product teams:&lt;/strong&gt; If you could remove one point of friction from your website's contact flow, would it be forms, chat, IVR menus, or missed calls?&lt;/p&gt;

&lt;p&gt;I'd be interested to hear what has worked for your product.&lt;/p&gt;

</description>
      <category>marketing</category>
      <category>saas</category>
      <category>startup</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What 508 Users Taught a Tiny Startup About Its Own Product</title>
      <dc:creator>Arun</dc:creator>
      <pubDate>Sun, 11 Oct 2026 03:19:07 +0000</pubDate>
      <link>https://dev.to/ceptorlabs/what-508-users-taught-a-tiny-startup-about-its-own-product-266k</link>
      <guid>https://dev.to/ceptorlabs/what-508-users-taught-a-tiny-startup-about-its-own-product-266k</guid>
      <description>&lt;p&gt;Last month, 508 people used &lt;strong&gt;Proxyceptor&lt;/strong&gt; for the first time.&lt;/p&gt;

&lt;p&gt;We're a small team, so that number means a lot to us. But the numbers that taught us the most weren't the flattering ones. This post walks through our first 30 days of data from &lt;a href="https://clarity.microsoft.com" rel="noopener noreferrer"&gt;Microsoft Clarity&lt;/a&gt;, what surprised us, and what we're fixing next.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;Clarity is free, privacy-friendly, and takes about five minutes to install. It gives you session recordings, heatmaps, and behavior signals like rage clicks and dead clicks without sampling your data.&lt;/p&gt;

&lt;p&gt;For an early-stage product with no analytics budget, it was an easy choice.&lt;/p&gt;

&lt;p&gt;[Add 1-2 lines: what Proxyceptor does and what stack you built it on.]&lt;/p&gt;

&lt;h2&gt;
  
  
  The headline numbers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Unique users&lt;/td&gt;
&lt;td&gt;508&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total sessions&lt;/td&gt;
&lt;td&gt;623&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sessions from new users&lt;/td&gt;
&lt;td&gt;534 (85.7%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sessions from returning users&lt;/td&gt;
&lt;td&gt;89 (14.3%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Most engaged user&lt;/td&gt;
&lt;td&gt;38 sessions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F19zers1s3y5w60s2wr05.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F19zers1s3y5w60s2wr05.png" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Two things stood out:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Most traffic is new.&lt;/strong&gt; At 85.7% new-user sessions, people are discovering us, but we have a retention story to build.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Some people came back.&lt;/strong&gt; Returning sessions are only 14.3% of the total, but one user visited 38 times. We're watching those recordings closely to learn what kept them coming back.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where users come from
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fux6ij7owe5m3knb06qgi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fux6ij7owe5m3knb06qgi.png" alt=" " width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;India made up 82.15% of sessions (511), the US 11.58% (72), and the rest 6.27% (39). Our top cities were Mumbai, Meerut, Surat, Ludhiana, and Chandigarh.&lt;/p&gt;

&lt;p&gt;One caution: a few of the US sessions come from Ashburn, Virginia, which is a major data center region. If you see that in your own data, some of it may be crawlers or automated traffic rather than people. It's worth segmenting before you celebrate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance: an 80/100 with one clear problem
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi52mg86m0m6s54ywbggf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi52mg86m0m6s54ywbggf.png" alt=" " width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clarity scored us &lt;strong&gt;80/100&lt;/strong&gt; across 302 pageviews:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Core Web Vital&lt;/th&gt;
&lt;th&gt;Our result&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;LCP (Largest Contentful Paint)&lt;/td&gt;
&lt;td&gt;2.4s&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLS (Cumulative Layout Shift)&lt;/td&gt;
&lt;td&gt;0.001&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;INP (Interaction to Next Paint)&lt;/td&gt;
&lt;td&gt;320ms&lt;/td&gt;
&lt;td&gt;Needs improvement&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Roughly 56% of pageviews were rated good, 40% needed improvement, and 4% were poor.&lt;/p&gt;

&lt;p&gt;LCP and CLS are fine. &lt;strong&gt;INP is the one to fix.&lt;/strong&gt; At 320ms, interactions feel slower than they should. Google's "good" threshold is 200ms or less, so we're in the needs-improvement range. INP is also the metric that replaced FID, so it's worth watching if your product is interaction-heavy.&lt;/p&gt;

&lt;p&gt;Our plan for INP:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Profile long tasks in the browser Performance panel&lt;/li&gt;
&lt;li&gt;Break up heavy JavaScript work on interaction handlers&lt;/li&gt;
&lt;li&gt;Defer anything non-critical until after first paint&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The uncomfortable numbers
&lt;/h2&gt;

&lt;p&gt;Clarity also surfaced these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dead clicks: 36.17%&lt;/strong&gt; of sessions (225 sessions)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rage clicks: 7.23%&lt;/strong&gt; of sessions (45 sessions)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quick backs: 12.70%&lt;/strong&gt; of sessions (79 sessions)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Excessive scrolling: 0%&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A dead click rate that high means people are clicking things that don't respond. Sometimes that's a bug, and sometimes it's a design problem, like an element that looks clickable but isn't. Either way, it's a to-do list sent to us by our own users.&lt;/p&gt;

&lt;p&gt;The quick backs (people who land and leave almost immediately) tell us something about first impressions too.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we're doing next
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Watch recordings of sessions with rage clicks and dead clicks, and fix the top offenders first&lt;/li&gt;
&lt;li&gt;Reduce INP below 200ms&lt;/li&gt;
&lt;li&gt;Filter out probable bot traffic so our numbers are cleaner&lt;/li&gt;
&lt;li&gt;Dig into what the returning users have in common&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Lessons for other small teams
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Instrument early.&lt;/strong&gt; Free tools like Clarity make it painless to see real behavior from day one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read the recordings, not just the dashboard.&lt;/strong&gt; The percentages tell you something is wrong, but the recordings tell you what.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't hide the ugly metrics.&lt;/strong&gt; A 36% dead click rate hurts, but it's also the most useful number we have.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treat early numbers as a baseline.&lt;/strong&gt; 508 users isn't a finish line, it's the starting point we'll measure against.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our next goal is 5,000 users, and I'll share a follow-up on what moved the numbers.&lt;/p&gt;

&lt;p&gt;If you've used Clarity or fixed a high INP, I'd love to hear what worked for you. Drop it in the comments. 👇&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>product</category>
      <category>saas</category>
      <category>startup</category>
    </item>
    <item>
      <title>Introducing ReMOAT: Remote Debugging Without the Headache</title>
      <dc:creator>Arun</dc:creator>
      <pubDate>Wed, 07 Oct 2026 11:52:41 +0000</pubDate>
      <link>https://dev.to/ceptorlabs/introducing-remoat-remote-debugging-without-the-headache-49n</link>
      <guid>https://dev.to/ceptorlabs/introducing-remoat-remote-debugging-without-the-headache-49n</guid>
      <description>&lt;p&gt;Ever tried debugging a website that isn't running on your machine?&lt;/p&gt;

&lt;p&gt;Maybe it's on a client's browser.&lt;/p&gt;

&lt;p&gt;Maybe it's running on a Smart TV.&lt;/p&gt;

&lt;p&gt;Maybe the bug only happens in a specific environment that you can't easily reproduce.&lt;/p&gt;

&lt;p&gt;And then comes the usual process:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Can you send me a screenshot?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Can you open DevTools?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What does the console say?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Can you try it again?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Five minutes later, you're still trying to figure out what actually went wrong.&lt;/p&gt;

&lt;p&gt;That's the problem ReMOAT is trying to solve.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is ReMOAT?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://remoat.dev/" rel="noopener noreferrer"&gt;ReMOAT&lt;/a&gt; is a remote debugging tool that lets developers &lt;strong&gt;debug browser-based applications remotely in real time&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of asking someone to explain what they're seeing, you can connect to the browser and investigate the problem yourself.&lt;/p&gt;

&lt;p&gt;You can inspect what's happening, check console errors, look at network activity, interact with the page, and troubleshoot issues while the problem is actually happening.&lt;/p&gt;

&lt;h2&gt;
  
  
  Debug the actual environment
&lt;/h2&gt;

&lt;p&gt;One of the frustrating parts of debugging is that:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It works on my machine."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The application might work perfectly in your local browser but fail on another device or environment.&lt;/p&gt;

&lt;p&gt;ReMOAT is designed to let you debug the &lt;strong&gt;actual browser session&lt;/strong&gt; instead of trying to recreate the problem from screenshots and descriptions.&lt;/p&gt;

&lt;p&gt;The workflow becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User encounters a bug
        ↓
Connect to the browser
        ↓
Inspect the actual environment
        ↓
Find the problem
        ↓
Fix it
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Much less guessing.&lt;/p&gt;

&lt;h2&gt;
  
  
  No more screenshot debugging
&lt;/h2&gt;

&lt;p&gt;Screenshots are useful, but they rarely tell the whole story.&lt;/p&gt;

&lt;p&gt;A screenshot can't show you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What happened in the console&lt;/li&gt;
&lt;li&gt;Which network request failed&lt;/li&gt;
&lt;li&gt;What the page state was&lt;/li&gt;
&lt;li&gt;What the browser was actually doing&lt;/li&gt;
&lt;li&gt;Whether the issue is reproducible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With remote debugging, you can investigate the problem directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built for real-world debugging
&lt;/h2&gt;

&lt;p&gt;ReMOAT is useful for more than just normal websites.&lt;/p&gt;

&lt;p&gt;It can help with browser-based applications and environments where reproducing the exact issue locally can be difficult.&lt;/p&gt;

&lt;p&gt;You can use it for things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remote browser debugging&lt;/li&gt;
&lt;li&gt;Console error investigation&lt;/li&gt;
&lt;li&gt;Network debugging&lt;/li&gt;
&lt;li&gt;Local storage inspection&lt;/li&gt;
&lt;li&gt;Reproducing frontend issues&lt;/li&gt;
&lt;li&gt;Real-time collaboration&lt;/li&gt;
&lt;li&gt;Debugging applications on remote devices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;See the problem. Don't just hear about it.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why ReMOAT?
&lt;/h2&gt;

&lt;p&gt;Tools like browser DevTools are excellent when the browser is right in front of you.&lt;/p&gt;

&lt;p&gt;The problem starts when the browser is somewhere else.&lt;/p&gt;

&lt;p&gt;That's where remote debugging becomes useful.&lt;/p&gt;

&lt;p&gt;Instead of sending instructions back and forth, ReMOAT gives developers a way to get closer to the actual environment where the bug is happening.&lt;/p&gt;

&lt;p&gt;You can check out ReMOAT here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://remoat.dev/" rel="noopener noreferrer"&gt;https://remoat.dev/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And I'd genuinely like to hear from other developers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the most painful remote debugging problem you've had to deal with?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Was it a browser issue, a Smart TV, a client's device, or simply a bug that refused to reproduce locally?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>webrtc</category>
      <category>serverless</category>
    </item>
    <item>
      <title>Introducing CallCeptor: Turn Your Website Into a Call Button</title>
      <dc:creator>Arun</dc:creator>
      <pubDate>Wed, 07 Oct 2026 11:49:07 +0000</pubDate>
      <link>https://dev.to/arun_ceptorlabs/introducing-callceptor-turn-your-website-into-a-call-button-20l</link>
      <guid>https://dev.to/arun_ceptorlabs/introducing-callceptor-turn-your-website-into-a-call-button-20l</guid>
      <description>&lt;p&gt;You visit a website because you have a question.&lt;/p&gt;

&lt;p&gt;You find the phone number.&lt;/p&gt;

&lt;p&gt;Then you have to take out your phone, type the number, navigate a menu, explain which page you were looking at, and hope someone answers.&lt;/p&gt;

&lt;p&gt;For a lot of businesses, especially financial firms, that's still how a website call works.&lt;/p&gt;

&lt;p&gt;We thought there had to be a simpler way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet CallCeptor
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://callceptor.com/" rel="noopener noreferrer"&gt;CallCeptor&lt;/a&gt; turns the phone number on your website into a &lt;strong&gt;Call button&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A visitor clicks it, gives a little context, and talks to the right person directly from their browser.&lt;/p&gt;

&lt;p&gt;No app to install.&lt;/p&gt;

&lt;p&gt;No number to type.&lt;/p&gt;

&lt;p&gt;No leaving the page.&lt;/p&gt;

&lt;p&gt;The agent can also see &lt;strong&gt;which page the visitor was on and where the visitor came from&lt;/strong&gt; before answering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does this matter?
&lt;/h2&gt;

&lt;p&gt;Consider someone reading an IPO article on a brokerage website.&lt;/p&gt;

&lt;p&gt;They have a question about the IPO.&lt;/p&gt;

&lt;p&gt;With a normal phone number, the journey might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Read article
    ↓
Find phone number
    ↓
Take out phone
    ↓
Dial
    ↓
Navigate IVR
    ↓
Explain the question
    ↓
Hopefully reach the right person
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With CallCeptor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Read article
    ↓
Click "Call"
    ↓
Select the topic
    ↓
Talk to the right desk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The context travels with the call.&lt;/p&gt;

&lt;p&gt;That's the part we wanted to fix.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happens when nobody answers?
&lt;/h2&gt;

&lt;p&gt;This is where things get interesting.&lt;/p&gt;

&lt;p&gt;A missed website call shouldn't simply disappear.&lt;/p&gt;

&lt;p&gt;CallCeptor can turn a missed call into a &lt;strong&gt;callback task&lt;/strong&gt;, with a deadline and escalation. Calls, missed calls, and callbacks are also recorded as leads with information such as the page, referrer, and campaign.&lt;/p&gt;

&lt;p&gt;So instead of:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Someone called earlier. Does anyone know who it was?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You have:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This person called from this page, from this campaign, and needs a callback."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  One script is enough
&lt;/h2&gt;

&lt;p&gt;Adding CallCeptor to a website is designed to be simple.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script
  &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://callceptor.com/callceptor-sdk.js"&lt;/span&gt;
  &lt;span class="na"&gt;data-site-key=&lt;/span&gt;&lt;span class="s"&gt;"YOUR_SITE_KEY"&lt;/span&gt;
  &lt;span class="na"&gt;async&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you can configure departments, agents, business hours, holidays, and routing rules.&lt;/p&gt;

&lt;p&gt;The calling code is loaded when someone actually clicks Call, rather than loading everything upfront.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built for more than just calling
&lt;/h2&gt;

&lt;p&gt;The call itself is only one part.&lt;/p&gt;

&lt;p&gt;CallCeptor also provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browser-based calling&lt;/li&gt;
&lt;li&gt;Routing by page and topic&lt;/li&gt;
&lt;li&gt;Mobile fallback&lt;/li&gt;
&lt;li&gt;Callback management&lt;/li&gt;
&lt;li&gt;Caller intake&lt;/li&gt;
&lt;li&gt;Agent context&lt;/li&gt;
&lt;li&gt;Call recording&lt;/li&gt;
&lt;li&gt;Lead attribution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For regulated businesses, it also includes features around recording rules, consent, retention, audit trails, and data hosting in Indian cloud regions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we built it
&lt;/h2&gt;

&lt;p&gt;A phone number tells a visitor:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Here is how you can contact us."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Call button should say:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"We'll connect you to the right person."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the difference we're trying to build.&lt;/p&gt;

&lt;p&gt;CallCeptor is designed for brokerages, wealth firms, advisers, AMCs, insurance distributors, lenders, and other businesses where a website visitor may want to talk to someone before taking the next step.&lt;/p&gt;

&lt;p&gt;If you're curious, you can try it here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://callceptor.com/" rel="noopener noreferrer"&gt;https://callceptor.com/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'd genuinely like to hear from other developers and product teams:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Would you rather have a phone number on a website, or a button that connects you directly to the right person?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>sass</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Introducing ProxyCeptor: A Simpler Way to Handle APIs</title>
      <dc:creator>Arun</dc:creator>
      <pubDate>Wed, 07 Oct 2026 11:41:53 +0000</pubDate>
      <link>https://dev.to/ceptorlabs/introducing-proxyceptor-a-simpler-way-to-handle-apis-3bgj</link>
      <guid>https://dev.to/ceptorlabs/introducing-proxyceptor-a-simpler-way-to-handle-apis-3bgj</guid>
      <description>&lt;p&gt;_Have you ever wanted to test one small API change, but ended up spending more time setting up the environment than actually testing it?&lt;br&gt;
_&lt;br&gt;
Maybe you want an API to return a &lt;code&gt;500&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Maybe you want to change one field in a response.&lt;/p&gt;

&lt;p&gt;Maybe you want to redirect a request to staging.&lt;/p&gt;

&lt;p&gt;Or maybe you just want to see what happens when an API takes 3 seconds to respond.&lt;/p&gt;

&lt;p&gt;Usually, you end up changing backend code, creating temporary mocks, deploying something to staging, or setting up a proxy and dealing with certificates.&lt;/p&gt;

&lt;p&gt;That is where &lt;strong&gt;ProxyCeptor&lt;/strong&gt; comes in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://proxyceptor.com/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Try ProxyCeptor&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What is ProxyCeptor?
&lt;/h2&gt;

&lt;p&gt;ProxyCeptor is a developer tool for &lt;strong&gt;intercepting and modifying API traffic while your application is running&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of changing your backend just to test a frontend scenario, you can intercept the request and change what happens to it.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application
     ↓
  API Request
     ↓
 ProxyCeptor
     ↓
Modify / Mock / Delay / Block
     ↓
    API
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can modify requests, change responses, mock APIs, redirect URLs, inject headers, simulate errors, and introduce network delays.&lt;/p&gt;

&lt;p&gt;The idea is pretty simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't change your application just to test a different API scenario. Change the traffic instead.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A simple example
&lt;/h2&gt;

&lt;p&gt;Imagine your API normally returns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"success"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"John"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You want to see how your frontend behaves when the API returns an error.&lt;/p&gt;

&lt;p&gt;Instead of modifying the backend, you can make the response behave like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Something went wrong"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also simulate HTTP errors such as &lt;code&gt;401&lt;/code&gt;, &lt;code&gt;404&lt;/code&gt;, &lt;code&gt;500&lt;/code&gt;, or &lt;code&gt;503&lt;/code&gt;, or add artificial latency to see how your UI handles slow networks.&lt;/p&gt;

&lt;p&gt;ProxyCeptor supports these kinds of request and response modifications directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What can you do with it?
&lt;/h2&gt;

&lt;p&gt;Some of the useful things you can do are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Modify request URLs&lt;/li&gt;
&lt;li&gt;Change request payloads&lt;/li&gt;
&lt;li&gt;Inject or modify headers&lt;/li&gt;
&lt;li&gt;Mock complete API responses&lt;/li&gt;
&lt;li&gt;Modify only specific JSON fields&lt;/li&gt;
&lt;li&gt;Redirect requests&lt;/li&gt;
&lt;li&gt;Block network traffic&lt;/li&gt;
&lt;li&gt;Simulate API delays&lt;/li&gt;
&lt;li&gt;Change HTTP status codes&lt;/li&gt;
&lt;li&gt;Transform API responses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One feature I particularly like is &lt;strong&gt;JSON Deep Merge&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of replacing an entire response, you can change only the field you care about while keeping the rest of the real API response intact.&lt;/p&gt;

&lt;p&gt;That makes testing much less painful.&lt;/p&gt;

&lt;h2&gt;
  
  
  No backend changes
&lt;/h2&gt;

&lt;p&gt;This is probably the biggest reason to use a tool like this.&lt;/p&gt;

&lt;p&gt;Suppose you're working on a frontend feature that needs to handle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What happens when the payment API returns 503?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You shouldn't have to ask the backend team to create a special response, deploy it, test it, and then revert it.&lt;/p&gt;

&lt;p&gt;You can simulate that response locally and continue working.&lt;/p&gt;

&lt;p&gt;That means frontend developers and QA engineers can test edge cases without waiting for backend changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  And it isn't limited to browsers
&lt;/h2&gt;

&lt;p&gt;ProxyCeptor can also work with Smart TV environments such as Android TV, Fire TV, Samsung Tizen, and LG webOS.&lt;/p&gt;

&lt;p&gt;For environments where installing a root SSL certificate or configuring a traditional system proxy is painful, ProxyCeptor provides an SDK-based approach that intercepts traffic inside the application runtime.&lt;/p&gt;

&lt;p&gt;That makes it useful for testing things that are otherwise surprisingly difficult to reproduce on real devices.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea behind ProxyCeptor
&lt;/h2&gt;

&lt;p&gt;The goal isn't to replace your existing testing framework.&lt;/p&gt;

&lt;p&gt;Unit tests still have their place.&lt;/p&gt;

&lt;p&gt;Integration tests still have their place.&lt;/p&gt;

&lt;p&gt;Mock servers still have their place.&lt;/p&gt;

&lt;p&gt;ProxyCeptor is useful for that layer in between:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I'm running the real application, making real requests, but I want to control what happens to those requests."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's where API interception becomes really useful.&lt;/p&gt;

&lt;p&gt;You can inspect the traffic, change it, reproduce an edge case, and see how your actual application reacts.&lt;/p&gt;

&lt;p&gt;No temporary backend endpoint.&lt;/p&gt;

&lt;p&gt;No waiting for another deployment.&lt;/p&gt;

&lt;p&gt;Just change the traffic and test.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give it a try
&lt;/h2&gt;

&lt;p&gt;If you're working with APIs, frontend applications, QA testing, or Smart TV applications, you can try ProxyCeptor here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://proxyceptor.com/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;https://proxyceptor.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is also a live sandbox where you can experiment with API interception without setting up a project first.&lt;/p&gt;

&lt;p&gt;I'd be interested to know how other developers handle this today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do you use Charles, Burp, Postman, browser DevTools, mock servers, or something else when you need to change API behavior during development?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>qa</category>
      <category>testing</category>
      <category>debugging</category>
    </item>
    <item>
      <title>Introducing CeptorLabs: Building Tools for the Problems Developers Actually Debug</title>
      <dc:creator>Arun</dc:creator>
      <pubDate>Wed, 07 Oct 2026 06:05:02 +0000</pubDate>
      <link>https://dev.to/arun_ceptorlabs/introducing-ceptorlabs-building-tools-for-the-problems-developers-actually-debug-e4</link>
      <guid>https://dev.to/arun_ceptorlabs/introducing-ceptorlabs-building-tools-for-the-problems-developers-actually-debug-e4</guid>
      <description>&lt;p&gt;&lt;em&gt;Debugging shouldn't require reproducing the impossible.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There is a certain kind of bug that every developer eventually encounters.&lt;/p&gt;

&lt;p&gt;It works locally.&lt;/p&gt;

&lt;p&gt;It works on your machine.&lt;/p&gt;

&lt;p&gt;It works in staging.&lt;/p&gt;

&lt;p&gt;And then someone says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It doesn't work for me."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Maybe it's an API behaving differently.&lt;/p&gt;

&lt;p&gt;Maybe a browser request fails only under certain conditions.&lt;/p&gt;

&lt;p&gt;Maybe a bug appears on a Smart TV but nowhere else.&lt;/p&gt;

&lt;p&gt;Maybe the issue disappears the moment you try to debug it.&lt;/p&gt;

&lt;p&gt;These problems aren't necessarily difficult because the code is complicated.&lt;/p&gt;

&lt;p&gt;They're difficult because &lt;strong&gt;reproducing the problem is complicated&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's the problem we're interested in at &lt;strong&gt;Ceptor Labs&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Ceptor Labs?
&lt;/h2&gt;

&lt;p&gt;Ceptor Labs is a developer tools company focused on making debugging, testing, and troubleshooting easier.&lt;/p&gt;

&lt;p&gt;We're building tools around a simple idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Developers should be able to reproduce and understand problems without spending hours trying to recreate the environment where they happened.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Our products are designed around different parts of that problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  ProxyCeptor
&lt;/h3&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://proxyceptor.com/" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fproxyceptor.com%2Fog-image.png" height="420" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://proxyceptor.com/" rel="noopener noreferrer" class="c-link"&gt;
            ProxyCeptor — Modern Proxy Interceptor &amp;amp; API Mocking Tool
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Intercept, mock, delay, and debug HTTP traffic across Smart TVs and web apps in 1 click. Zero-cert proxy interceptor with cloud rule sync.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fproxyceptor.com%2Ffavicon.ico" width="48" height="48"&gt;
          proxyceptor.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;API and network debugging without the usual proxy headaches.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ProxyCeptor lets developers inspect and modify network traffic, mock APIs, rewrite requests, change responses, and reproduce difficult API scenarios.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can someone change the backend so I can test this?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;you can test the scenario directly.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Real Application
       ↓
   API Request
       ↓
   ProxyCeptor
       ↓
   Modify Response
       ↓
    Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Want to see what happens when an API returns &lt;code&gt;500&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;Do it.&lt;/p&gt;

&lt;p&gt;Want to test a malformed response?&lt;/p&gt;

&lt;p&gt;Do it.&lt;/p&gt;

&lt;p&gt;Want to simulate a slow endpoint?&lt;/p&gt;

&lt;p&gt;Do it.&lt;/p&gt;

&lt;p&gt;The backend doesn't need to change.&lt;/p&gt;


&lt;h2&gt;
  
  
  ReMOAT
&lt;/h2&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://remoat.dev/" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fremoat.dev%2Fog-image.png" height="447" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://remoat.dev/" rel="noopener noreferrer" class="c-link"&gt;
            ReMOAT — Real-Time Remote Browser Debugging &amp;amp; DevTools
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Debug live browser sessions in real-time over WebRTC. Inspect remote console logs, network requests, DOM mutations, and time-travel replay with zero cloud storage.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fremoat.dev%2Ffavicon.svg%3Fv%3D3.2.3" width="512" height="512"&gt;
          remoat.dev
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Debugging a browser remotely has its own set of problems.&lt;/p&gt;

&lt;p&gt;Sometimes the browser isn't on your machine.&lt;/p&gt;

&lt;p&gt;Sometimes the issue happens on another device.&lt;/p&gt;

&lt;p&gt;Sometimes asking someone to share their entire screen isn't the right solution.&lt;/p&gt;

&lt;p&gt;ReMOAT focuses on &lt;strong&gt;remote browser debugging&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Connect to the browser, understand what's happening, and debug the problem without turning the debugging session into a screen-sharing session.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Call Ceptor
&lt;/h2&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://callceptor.com/" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcallceptor.com%2Fog%2Fhome.png" height="420" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://callceptor.com/" rel="noopener noreferrer" class="c-link"&gt;
            CallCeptor: Click-to-Call for Indian Brokers and AMCs
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Put a Call button on your brokerage, AMC or advisory website. Visitors reach the right desk from the browser, and every call becomes a lead. Hosted in India.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcallceptor.com%2Ffavicon.ico%3Ffavicon.2-eag26rl9er2.ico" width="48" height="48"&gt;
          callceptor.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;We're also exploring developer communication with &lt;strong&gt;Call Ceptor&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Because debugging isn't always just about logs and requests.&lt;/p&gt;

&lt;p&gt;Sometimes you need to talk to another developer while looking at the same problem.&lt;/p&gt;

&lt;p&gt;We're building tools that bring communication closer to the development workflow instead of forcing developers to constantly jump between unrelated tools.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why build another set of developer tools?
&lt;/h1&gt;

&lt;p&gt;Because we've experienced the problem ourselves.&lt;/p&gt;

&lt;p&gt;Modern applications have become increasingly distributed.&lt;/p&gt;

&lt;p&gt;A simple user action can involve:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
   ↓
Frontend
   ↓
API
   ↓
Authentication
   ↓
Multiple services
   ↓
Third-party APIs
   ↓
Device / Browser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When something breaks, knowing &lt;strong&gt;where&lt;/strong&gt; it broke isn't always enough.&lt;/p&gt;

&lt;p&gt;You need to reproduce it.&lt;/p&gt;

&lt;p&gt;And reproduction is often the hardest part.&lt;/p&gt;

&lt;p&gt;That's where we want to help.&lt;/p&gt;




&lt;h1&gt;
  
  
  What we'll share here
&lt;/h1&gt;

&lt;p&gt;This won't just be a product announcement channel.&lt;/p&gt;

&lt;p&gt;We'll share what we're learning while building these tools.&lt;/p&gt;

&lt;p&gt;Expect posts about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API debugging&lt;/li&gt;
&lt;li&gt;Network interception&lt;/li&gt;
&lt;li&gt;Frontend testing&lt;/li&gt;
&lt;li&gt;Remote browser debugging&lt;/li&gt;
&lt;li&gt;Smart TV debugging&lt;/li&gt;
&lt;li&gt;QA workflows&lt;/li&gt;
&lt;li&gt;Reproducing production bugs&lt;/li&gt;
&lt;li&gt;Developer tooling&lt;/li&gt;
&lt;li&gt;Things that didn't work&lt;/li&gt;
&lt;li&gt;Things that surprisingly did&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We'll also share technical breakdowns of problems we encounter while building.&lt;/p&gt;

&lt;p&gt;Sometimes the solution will be elegant.&lt;/p&gt;

&lt;p&gt;Sometimes it will be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"We spent two days debugging the wrong thing."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those are probably worth writing about too.&lt;/p&gt;




&lt;h1&gt;
  
  
  The bigger goal
&lt;/h1&gt;

&lt;p&gt;We're not trying to build another collection of dashboards.&lt;/p&gt;

&lt;p&gt;We're interested in the messy part of software development:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Something is broken.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You don't know why.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You need to reproduce it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And you need to fix it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ceptor Labs exists to make that process less painful.&lt;/p&gt;

&lt;p&gt;We're starting with &lt;strong&gt;ProxyCeptor, ReMOAT, and Call Ceptor&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And we're going to keep building from there.&lt;/p&gt;

&lt;p&gt;If you're interested in developer tooling, debugging, QA, or the strange problems that only appear in production, &lt;strong&gt;follow Ceptor Labs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We'll have plenty to share.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;#devtools #debugging #testing #webdev #opensource&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Suggested DEV canonical URL/slug:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;introducing-ceptor-labs-building-tools-for-the-problems-developers-actually-debug&lt;/code&gt;&lt;/p&gt;

</description>
      <category>debugging</category>
      <category>developer</category>
      <category>softwaredevelopment</category>
      <category>tools</category>
    </item>
  </channel>
</rss>
