<?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: Yunus Khan</title>
    <description>The latest articles on DEV Community by Yunus Khan (@yunus_khan_d64b04c980b819).</description>
    <link>https://dev.to/yunus_khan_d64b04c980b819</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%2F4034913%2F7ea23c77-306e-4a57-818d-e7a5d71356e8.png</url>
      <title>DEV Community: Yunus Khan</title>
      <link>https://dev.to/yunus_khan_d64b04c980b819</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yunus_khan_d64b04c980b819"/>
    <language>en</language>
    <item>
      <title>How We Built an SEO System for a Small Website Using AI, Content Clusters &amp; Technical SEO</title>
      <dc:creator>Yunus Khan</dc:creator>
      <pubDate>Tue, 01 Sep 2026 10:06:49 +0000</pubDate>
      <link>https://dev.to/yunus_khan_d64b04c980b819/how-we-built-an-seo-system-for-a-small-website-using-ai-content-clusters-technical-seo-596e</link>
      <guid>https://dev.to/yunus_khan_d64b04c980b819/how-we-built-an-seo-system-for-a-small-website-using-ai-content-clusters-technical-seo-596e</guid>
      <description>&lt;p&gt;&lt;strong&gt;When&lt;/strong&gt; you launch a new website, SEO can feel like shouting into an empty room.&lt;/p&gt;

&lt;p&gt;You publish an article.&lt;/p&gt;

&lt;p&gt;Nothing happens.&lt;/p&gt;

&lt;p&gt;You publish another.&lt;/p&gt;

&lt;p&gt;Still nothing.&lt;/p&gt;

&lt;p&gt;That was one of the challenges we faced while building SabrTime, a free Islamic digital companion focused on prayer, reflection, consistency, and useful Islamic tools.&lt;/p&gt;

&lt;p&gt;Instead of treating SEO as simply "write more blog posts,"&lt;br&gt;
We started building a repeatable system around technical SEO, search intent, content clusters, internal linking, and AI-assisted content production.&lt;/p&gt;

&lt;p&gt;This is the workflow we are using and the lessons that can be adapted to almost any small website.&lt;/p&gt;

&lt;p&gt;Start With the Website, Not the Blog&lt;/p&gt;

&lt;p&gt;One of the biggest mistakes a new website can make is creating dozens of blog posts before understanding what the website actually offers.&lt;/p&gt;

&lt;p&gt;We first looked at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website structure&lt;/li&gt;
&lt;li&gt;Existing pages&lt;/li&gt;
&lt;li&gt;Search intent&lt;/li&gt;
&lt;li&gt;Important features&lt;/li&gt;
&lt;li&gt;Existing content&lt;/li&gt;
&lt;li&gt;Sitemap&lt;/li&gt;
&lt;li&gt;Metadata&lt;/li&gt;
&lt;li&gt;Internal links&lt;/li&gt;
&lt;li&gt;Indexability&lt;/li&gt;
&lt;li&gt;Structured data&lt;/li&gt;
&lt;li&gt;Open Graph information&lt;/li&gt;
&lt;li&gt;Canonical URLs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SabrTime isn't only a blog.&lt;/p&gt;

&lt;p&gt;It is a web-based Islamic companion with tools and resources around prayer, Qibla, Tasbeeh, spiritual habits, and Islamic learning.&lt;/p&gt;

&lt;p&gt;That meant the SEO strategy could connect informational content with actual useful tools.&lt;/p&gt;

&lt;p&gt;The main website acts as the hub:&lt;/p&gt;

&lt;p&gt;SabrTime → Tools → Resources → Blog → Educational content&lt;/p&gt;

&lt;p&gt;This structure gave us many opportunities to build topical relevance.&lt;/p&gt;

&lt;p&gt;You can explore the project here: "SabrTime" (&lt;a href="https://sabrtime.in/" rel="noopener noreferrer"&gt;https://sabrtime.in/&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Focus on Search Intent Instead of Just Keywords&lt;/p&gt;

&lt;p&gt;Instead of targeting only highly competitive terms such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Islamic app&lt;/li&gt;
&lt;li&gt;Prayer app&lt;/li&gt;
&lt;li&gt;Quran app&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;we started looking at specific problems users might actually search for.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;How to find Qibla direction&lt;/li&gt;
&lt;li&gt;Does airplane mode affect a Qibla compass?&lt;/li&gt;
&lt;li&gt;How to pray missed prayers&lt;/li&gt;
&lt;li&gt;What does Adhan mean?&lt;/li&gt;
&lt;li&gt;How to do Tasbeeh&lt;/li&gt;
&lt;li&gt;What is the Qibla direction for a city?&lt;/li&gt;
&lt;li&gt;How to build a daily Dhikr habit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These queries have much clearer intent.&lt;/p&gt;

&lt;p&gt;For example, we created location-specific and educational Qibla resources rather than writing one generic article and stopping there.&lt;/p&gt;

&lt;p&gt;The important part isn't simply putting a keyword into an article.&lt;/p&gt;

&lt;p&gt;The article needs to actually solve the user's problem.&lt;/p&gt;

&lt;p&gt;Build Content Clusters Instead of Random Articles&lt;/p&gt;

&lt;p&gt;Instead of publishing unrelated articles, we started grouping content into topics.&lt;/p&gt;

&lt;p&gt;For example, a Qibla content cluster can include:&lt;/p&gt;

&lt;p&gt;Qibla&lt;/p&gt;

&lt;p&gt;→ How to Find Qibla Direction&lt;br&gt;
→ Qibla Direction in Degrees&lt;br&gt;
→ Qibla Direction by City&lt;br&gt;
→ Airplane Mode &amp;amp; Digital Qibla Compass&lt;br&gt;
→ History of the First Qibla&lt;/p&gt;

&lt;p&gt;For example, our "Qibla Direction in Dallas" (&lt;a href="https://sabrtime.in/blog/qibla-direction-dallas-tx.html" rel="noopener noreferrer"&gt;https://sabrtime.in/blog/qibla-direction-dallas-tx.html&lt;/a&gt;) article focuses specifically on the Qibla direction for Dallas.&lt;/p&gt;

&lt;p&gt;We also created content around "airplane mode and Qibla compasses" (&lt;a href="https://sabrtime.in/blog/airplane-mode-qibla-compass.html" rel="noopener noreferrer"&gt;https://sabrtime.in/blog/airplane-mode-qibla-compass.html&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;These aren't random articles.&lt;/p&gt;

&lt;p&gt;They're different pieces of content supporting the same broader topic.&lt;/p&gt;

&lt;p&gt;This approach can be used for almost any niche.&lt;/p&gt;

&lt;p&gt;A fitness website could create:&lt;/p&gt;

&lt;p&gt;Fitness&lt;/p&gt;

&lt;p&gt;→ Home workouts&lt;br&gt;
→ Beginner workouts&lt;br&gt;
→ Push-up guide&lt;br&gt;
→ Squat guide&lt;br&gt;
→ Workout recovery&lt;/p&gt;

&lt;p&gt;A SaaS website could create:&lt;/p&gt;

&lt;p&gt;Email Marketing&lt;/p&gt;

&lt;p&gt;→ Email marketing guide&lt;br&gt;
→ Email subject lines&lt;br&gt;
→ Open rates&lt;br&gt;
→ Email automation&lt;br&gt;
→ Newsletter strategy&lt;/p&gt;

&lt;p&gt;The principle is the same:&lt;/p&gt;

&lt;p&gt;«Build topical depth instead of publishing random keywords.»&lt;/p&gt;

&lt;p&gt;AI Helped Us Scale the Content Workflow&lt;/p&gt;

&lt;p&gt;Claude became particularly useful in our content-development workflow.&lt;/p&gt;

&lt;p&gt;But we didn't simply tell AI:&lt;/p&gt;

&lt;p&gt;«"Write me an SEO article."»&lt;/p&gt;

&lt;p&gt;Instead, we used a structured process.&lt;/p&gt;

&lt;p&gt;Topic&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Search intent&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Research&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Article structure&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Related questions&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Useful information&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Internal links&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;CTA&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;SEO metadata&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Human review&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Publish&lt;/p&gt;

&lt;p&gt;Claude helped with research organization, outlining, drafting, semantic topic coverage, internal-link suggestions, and optimization.&lt;/p&gt;

&lt;p&gt;But the final content still needed human review.&lt;/p&gt;

&lt;p&gt;This distinction is important.&lt;/p&gt;

&lt;p&gt;AI can accelerate content production.&lt;/p&gt;

&lt;p&gt;It shouldn't replace editorial judgment.&lt;/p&gt;

&lt;p&gt;Internal Linking Became Part of the Writing Process&lt;/p&gt;

&lt;p&gt;Internal linking became one of the most useful parts of the workflow.&lt;/p&gt;

&lt;p&gt;Instead of publishing an article and forgetting about it, we looked for natural connections between pages.&lt;/p&gt;

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

&lt;p&gt;A Qibla article can link to another Qibla guide.&lt;/p&gt;

&lt;p&gt;A Tasbeeh article can link to a digital Tasbeeh resource.&lt;/p&gt;

&lt;p&gt;A prayer article can link to prayer-related resources.&lt;/p&gt;

&lt;p&gt;A Qaza article can link to other relevant prayer content.&lt;/p&gt;

&lt;p&gt;For example, we have a practical "Missed Prayers / Qaza guide" (&lt;a href="https://sabrtime.in/blog/missed-prayers-qaza-guide.html" rel="noopener noreferrer"&gt;https://sabrtime.in/blog/missed-prayers-qaza-guide.html&lt;/a&gt;) that can naturally connect with other prayer-related content.&lt;/p&gt;

&lt;p&gt;Our "Tasbeeh guide" (&lt;a href="https://sabrtime.in/blog/tasbeeh-guide.html" rel="noopener noreferrer"&gt;https://sabrtime.in/blog/tasbeeh-guide.html&lt;/a&gt;) can similarly become part of a broader Tasbeeh and Dhikr content cluster.&lt;/p&gt;

&lt;p&gt;This creates a path for both users and search engines:&lt;/p&gt;

&lt;p&gt;Article → Related article → Tool/resource → Website&lt;/p&gt;

&lt;p&gt;The goal isn't to add links everywhere.&lt;/p&gt;

&lt;p&gt;The goal is to add links where they genuinely help the reader.&lt;/p&gt;

&lt;p&gt;Connect Informational Content With the Actual Product&lt;/p&gt;

&lt;p&gt;This is where content strategy can become much more powerful for SaaS and tool websites.&lt;/p&gt;

&lt;p&gt;Don't create content that has nothing to do with your product.&lt;/p&gt;

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

&lt;p&gt;User problem → Helpful content → Relevant tool&lt;/p&gt;

&lt;p&gt;Someone might search for information about maintaining a daily spiritual habit.&lt;/p&gt;

&lt;p&gt;They discover an educational article.&lt;/p&gt;

&lt;p&gt;After learning about the topic, a relevant SabrTime feature can become a natural next step.&lt;/p&gt;

&lt;p&gt;The same model works outside the Islamic niche.&lt;/p&gt;

&lt;p&gt;SaaS&lt;/p&gt;

&lt;p&gt;"How to manage invoices"&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Invoice management guide&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Invoice software&lt;/p&gt;

&lt;p&gt;Developer Tool&lt;/p&gt;

&lt;p&gt;"How to convert JSON"&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;JSON tutorial&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;JSON converter&lt;/p&gt;

&lt;p&gt;Fitness&lt;/p&gt;

&lt;p&gt;"How to track workouts"&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Workout tracking guide&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Workout tracker&lt;/p&gt;

&lt;p&gt;The content becomes an entry point to the product.&lt;/p&gt;

&lt;p&gt;Optimize Pages Outside the Blog&lt;/p&gt;

&lt;p&gt;Another lesson was that SEO shouldn't be limited to "/blog/".&lt;/p&gt;

&lt;p&gt;Important search landing pages can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Homepage&lt;/li&gt;
&lt;li&gt;Feature pages&lt;/li&gt;
&lt;li&gt;Tools&lt;/li&gt;
&lt;li&gt;Resource pages&lt;/li&gt;
&lt;li&gt;Ebook pages&lt;/li&gt;
&lt;li&gt;Guides&lt;/li&gt;
&lt;li&gt;Calculators&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SabrTime also has educational ebook resources.&lt;/p&gt;

&lt;p&gt;For example, the "New Muslim Starter Guide" (&lt;a href="https://sabrtime.in/e-books/new-muslim-starter-guide.html" rel="noopener noreferrer"&gt;https://sabrtime.in/e-books/new-muslim-starter-guide.html&lt;/a&gt;) is not a traditional blog post, but it can still serve a useful search and user-intent purpose.&lt;/p&gt;

&lt;p&gt;The same principle applies to almost any website.&lt;/p&gt;

&lt;p&gt;A calculator can rank.&lt;/p&gt;

&lt;p&gt;A tool can rank.&lt;/p&gt;

&lt;p&gt;A documentation page can rank.&lt;/p&gt;

&lt;p&gt;An ebook can rank.&lt;/p&gt;

&lt;p&gt;A resource page can rank.&lt;/p&gt;

&lt;p&gt;You don't have to put everything inside "/blog/".&lt;/p&gt;

&lt;p&gt;Technical SEO Runs Alongside Content SEO&lt;/p&gt;

&lt;p&gt;While creating content, we also worked on the technical foundation.&lt;/p&gt;

&lt;p&gt;Our checklist included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;XML sitemap&lt;/li&gt;
&lt;li&gt;Robots.txt&lt;/li&gt;
&lt;li&gt;Canonical URLs&lt;/li&gt;
&lt;li&gt;Meta titles&lt;/li&gt;
&lt;li&gt;Meta descriptions&lt;/li&gt;
&lt;li&gt;Open Graph tags&lt;/li&gt;
&lt;li&gt;Structured data&lt;/li&gt;
&lt;li&gt;Mobile usability&lt;/li&gt;
&lt;li&gt;Clean URLs&lt;/li&gt;
&lt;li&gt;Internal linking&lt;/li&gt;
&lt;li&gt;Indexability&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Google needs to discover, crawl, and understand your pages.&lt;/p&gt;

&lt;p&gt;A great article isn't enough if search engines can't properly discover or understand it.&lt;/p&gt;

&lt;p&gt;Create Location-Specific Content Carefully&lt;/p&gt;

&lt;p&gt;Another experiment was creating highly specific pages around search intent.&lt;/p&gt;

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

&lt;p&gt;Qibla Direction in Dallas&lt;/p&gt;

&lt;p&gt;Qibla Direction in Houston&lt;/p&gt;

&lt;p&gt;Qibla Direction for other cities&lt;/p&gt;

&lt;p&gt;This can work when each page provides genuinely useful location-specific information.&lt;/p&gt;

&lt;p&gt;For example, the "Dallas Qibla Direction guide" (&lt;a href="https://sabrtime.in/blog/qibla-direction-dallas-tx.html" rel="noopener noreferrer"&gt;https://sabrtime.in/blog/qibla-direction-dallas-tx.html&lt;/a&gt;) is designed around the search intent of someone specifically looking for Qibla direction in Dallas.&lt;/p&gt;

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

&lt;p&gt;«Don't create hundreds of city pages simply by replacing the city name.»&lt;/p&gt;

&lt;p&gt;Each location page should provide unique and useful information.&lt;/p&gt;

&lt;p&gt;Otherwise, you're just creating programmatic SEO spam.&lt;/p&gt;

&lt;p&gt;Use Search Data as a Feedback Loop&lt;/p&gt;

&lt;p&gt;Publishing is only the beginning.&lt;/p&gt;

&lt;p&gt;After pages are indexed, Google Search Console can reveal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search queries&lt;/li&gt;
&lt;li&gt;Impressions&lt;/li&gt;
&lt;li&gt;Clicks&lt;/li&gt;
&lt;li&gt;Average position&lt;/li&gt;
&lt;li&gt;Pages receiving impressions&lt;/li&gt;
&lt;li&gt;Unexpected queries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Suppose an article starts receiving impressions for:&lt;/p&gt;

&lt;p&gt;«"qibla without internet"»&lt;/p&gt;

&lt;p&gt;That could tell us something.&lt;/p&gt;

&lt;p&gt;Maybe the existing article should be expanded.&lt;/p&gt;

&lt;p&gt;Maybe a dedicated article would be useful.&lt;/p&gt;

&lt;p&gt;Maybe the search intent is different from what we originally expected.&lt;/p&gt;

&lt;p&gt;This creates a feedback loop:&lt;/p&gt;

&lt;p&gt;Publish → Measure → Learn → Improve → Publish again&lt;/p&gt;

&lt;p&gt;That's much better than publishing once and never touching the article again.&lt;/p&gt;

&lt;p&gt;Turn Existing Content Into New Opportunities&lt;/p&gt;

&lt;p&gt;One of the biggest benefits of content clusters is discovering new topics from existing articles.&lt;/p&gt;

&lt;p&gt;A general Qibla guide might reveal related questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can I use a compass without internet?&lt;/li&gt;
&lt;li&gt;Does GPS work in airplane mode?&lt;/li&gt;
&lt;li&gt;Why is my Qibla compass inaccurate?&lt;/li&gt;
&lt;li&gt;What is Qibla bearing?&lt;/li&gt;
&lt;li&gt;Is Qibla always west?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of stuffing every question into one enormous article, we can decide whether each deserves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A section&lt;/li&gt;
&lt;li&gt;An FAQ&lt;/li&gt;
&lt;li&gt;A separate article&lt;/li&gt;
&lt;li&gt;Or simply an internal link&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This keeps the website organized while allowing the content library to grow naturally.&lt;/p&gt;

&lt;p&gt;External Publishing Can Support SEO and Awareness&lt;/p&gt;

&lt;p&gt;We also started publishing useful educational and technical content on external platforms.&lt;/p&gt;

&lt;p&gt;Platforms such as DEV Community can be useful when the article genuinely provides value to developers, builders, marketers, or website owners.&lt;/p&gt;

&lt;p&gt;But the goal shouldn't be:&lt;/p&gt;

&lt;p&gt;«"I need a backlink."»&lt;/p&gt;

&lt;p&gt;The better approach is:&lt;/p&gt;

&lt;p&gt;«"I have a useful case study that other website owners can learn from."»&lt;/p&gt;

&lt;p&gt;This article itself is an example.&lt;/p&gt;

&lt;p&gt;SabrTime is the real-world case study, while the actual subject is the SEO process.&lt;/p&gt;

&lt;p&gt;That makes the references contextual rather than purely promotional.&lt;/p&gt;

&lt;p&gt;Useful external content can potentially generate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Referral traffic&lt;/li&gt;
&lt;li&gt;Brand awareness&lt;/li&gt;
&lt;li&gt;Relevant backlinks&lt;/li&gt;
&lt;li&gt;Community engagement&lt;/li&gt;
&lt;li&gt;New relationships&lt;/li&gt;
&lt;li&gt;Search visibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But repeatedly publishing thin promotional articles with the same anchor text is not a sustainable link-building strategy.&lt;/p&gt;

&lt;p&gt;AI Content Still Needs Human Review&lt;/p&gt;

&lt;p&gt;AI makes publishing faster.&lt;/p&gt;

&lt;p&gt;But speed isn't the same as SEO quality.&lt;/p&gt;

&lt;p&gt;A website could generate hundreds of articles with AI.&lt;/p&gt;

&lt;p&gt;That doesn't automatically create authority.&lt;/p&gt;

&lt;p&gt;Our approach is closer to:&lt;/p&gt;

&lt;p&gt;AI-assisted research + human strategy + useful content + internal linking + technical SEO + continuous improvement&lt;/p&gt;

&lt;p&gt;The human still needs to decide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is this topic worth covering?&lt;/li&gt;
&lt;li&gt;Does the article satisfy search intent?&lt;/li&gt;
&lt;li&gt;Is the information accurate?&lt;/li&gt;
&lt;li&gt;Is the article actually useful?&lt;/li&gt;
&lt;li&gt;Are the internal links relevant?&lt;/li&gt;
&lt;li&gt;Is the CTA appropriate?&lt;/li&gt;
&lt;li&gt;Is anything repetitive or generic?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI is the accelerator.&lt;/p&gt;

&lt;p&gt;The website owner still needs to be the driver.&lt;/p&gt;

&lt;p&gt;What Other Website Owners Can Copy&lt;/p&gt;

&lt;p&gt;You don't need an Islamic website to use this system.&lt;/p&gt;

&lt;p&gt;SaaS&lt;/p&gt;

&lt;p&gt;Problem → Guide → Tool → Product&lt;/p&gt;

&lt;p&gt;E-commerce&lt;/p&gt;

&lt;p&gt;Question → Buying guide → Category → Product&lt;/p&gt;

&lt;p&gt;Developer Tools&lt;/p&gt;

&lt;p&gt;Problem → Tutorial → Documentation → Tool&lt;/p&gt;

&lt;p&gt;Education&lt;/p&gt;

&lt;p&gt;Question → Explanation → Resource → Course&lt;/p&gt;

&lt;p&gt;Local Business&lt;/p&gt;

&lt;p&gt;Question → Local guide → Service → Contact/Booking&lt;/p&gt;

&lt;p&gt;The niche changes.&lt;/p&gt;

&lt;p&gt;The framework stays almost the same.&lt;/p&gt;

&lt;p&gt;The SEO System We Are Building&lt;/p&gt;

&lt;p&gt;After putting everything together, our basic system looks like this:&lt;/p&gt;

&lt;p&gt;Research&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Find specific search intent&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Create genuinely useful content&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Build topic clusters&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Connect pages with internal links&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Optimize technical SEO&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Publish useful external content&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Earn relevant backlinks and referral traffic&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Monitor Search Console&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Improve existing pages&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Repeat&lt;/p&gt;

&lt;p&gt;Final Takeaway&lt;/p&gt;

&lt;p&gt;Our biggest SEO lesson from building SabrTime wasn't a particular keyword or backlink.&lt;/p&gt;

&lt;p&gt;It was learning to think of the website as an ecosystem.&lt;/p&gt;

&lt;p&gt;A blog post shouldn't exist alone.&lt;/p&gt;

&lt;p&gt;A useful article can lead to another article.&lt;/p&gt;

&lt;p&gt;That article can lead to a tool.&lt;/p&gt;

&lt;p&gt;The tool can lead to the main website.&lt;/p&gt;

&lt;p&gt;External educational content can introduce new people to the ecosystem.&lt;/p&gt;

&lt;p&gt;And search data can tell us what to build next.&lt;/p&gt;

&lt;p&gt;The basic principle is:&lt;/p&gt;

&lt;p&gt;«Don't build a pile of articles. Build a connected knowledge system.»&lt;/p&gt;

&lt;p&gt;AI can help you build that system faster, but strategy, accuracy, usefulness, and originality still matter.&lt;/p&gt;

&lt;p&gt;That's the approach we're continuing to use while growing "SabrTime" (&lt;a href="https://sabrtime.in/" rel="noopener noreferrer"&gt;https://sabrtime.in/&lt;/a&gt;) from a small website into a broader collection of free Islamic digital tools and educational resources.&lt;/p&gt;

&lt;p&gt;Explore the project: "sabrtime.in" (&lt;a href="https://sabrtime.in/" rel="noopener noreferrer"&gt;https://sabrtime.in/&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Explore the content: "SabrTime Blog" (&lt;a href="https://sabrtime.in/blog/" rel="noopener noreferrer"&gt;https://sabrtime.in/blog/&lt;/a&gt;)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>seo</category>
      <category>webdev</category>
      <category>resources</category>
    </item>
    <item>
      <title>How I Diagnosed and Fixed Keyword Cannibalization Between Two Nearly-Identical Blog Posts</title>
      <dc:creator>Yunus Khan</dc:creator>
      <pubDate>Wed, 26 Aug 2026 15:48:01 +0000</pubDate>
      <link>https://dev.to/yunus_khan_d64b04c980b819/how-i-diagnosed-and-fixed-keyword-cannibalization-between-two-nearly-identical-blog-posts-145m</link>
      <guid>https://dev.to/yunus_khan_d64b04c980b819/how-i-diagnosed-and-fixed-keyword-cannibalization-between-two-nearly-identical-blog-posts-145m</guid>
      <description>&lt;p&gt;I thought publishing more useful content would automatically give my website more opportunities to rank.&lt;/p&gt;

&lt;p&gt;Then I noticed something uncomfortable.&lt;/p&gt;

&lt;p&gt;Two articles on my site were covering almost the same subject.&lt;/p&gt;

&lt;p&gt;Both were useful.&lt;br&gt;
Both were properly indexed.&lt;br&gt;
Both answered similar questions.&lt;br&gt;
And both were competing for overlapping search intent.&lt;/p&gt;

&lt;p&gt;I had accidentally created a small SEO architecture problem inside my own blog.&lt;/p&gt;

&lt;p&gt;I'm building "SabrTime.in" (&lt;a href="https://sabrtime.in/" rel="noopener noreferrer"&gt;https://sabrtime.in/&lt;/a&gt;), a small Islamic companion app focused on practical digital tools for everyday worship. As a solo developer, I also manage the website, content, SEO, and product development myself.&lt;/p&gt;

&lt;p&gt;While working on the site's content, I published two articles around Tasbeeh:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to Do Tasbeeh — A Complete Guide&lt;/li&gt;
&lt;li&gt;Digital Tasbeeh Counter: How It Works &amp;amp; Why Muslims Are Switching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first article is about the practice itself.&lt;/p&gt;

&lt;p&gt;The second is supposed to be about the technology and use case of digital Tasbeeh counters.&lt;/p&gt;

&lt;p&gt;Sounds different enough, right?&lt;/p&gt;

&lt;p&gt;At first, I thought so too.&lt;/p&gt;

&lt;p&gt;But when I looked at the actual content and search intent, the overlap became obvious.&lt;/p&gt;

&lt;p&gt;The Problem Wasn't Duplicate Content&lt;/p&gt;

&lt;p&gt;This is where SEO gets misunderstood.&lt;/p&gt;

&lt;p&gt;Keyword cannibalization doesn't necessarily mean you have two pages containing identical paragraphs.&lt;/p&gt;

&lt;p&gt;The more interesting problem is intent overlap.&lt;/p&gt;

&lt;p&gt;If two URLs are trying to satisfy essentially the same searcher's question, a search engine has less information about which page should be the primary result.&lt;/p&gt;

&lt;p&gt;For example, imagine these two pages:&lt;/p&gt;

&lt;p&gt;/page-a&lt;br&gt;
"How to Do Tasbeeh"&lt;/p&gt;

&lt;p&gt;/page-b&lt;br&gt;
"Digital Tasbeeh Counter"&lt;/p&gt;

&lt;p&gt;Their titles are different.&lt;/p&gt;

&lt;p&gt;But if both pages explain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what Tasbeeh means&lt;/li&gt;
&lt;li&gt;how many times to recite it&lt;/li&gt;
&lt;li&gt;common Tasbeeh counts&lt;/li&gt;
&lt;li&gt;the same hadith&lt;/li&gt;
&lt;li&gt;how to count Tasbeeh&lt;/li&gt;
&lt;li&gt;why Muslims use a counter&lt;/li&gt;
&lt;li&gt;FAQs about Tasbeeh&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;...then the distinction between the pages starts becoming blurry.&lt;/p&gt;

&lt;p&gt;That was happening on my site.&lt;/p&gt;

&lt;p&gt;The two articles were not technically duplicates.&lt;/p&gt;

&lt;p&gt;But parts of their search intent were duplicates.&lt;/p&gt;

&lt;p&gt;And that distinction matters.&lt;/p&gt;

&lt;p&gt;How I Found It&lt;/p&gt;

&lt;p&gt;I didn't start by running an expensive SEO crawler.&lt;/p&gt;

&lt;p&gt;I started with the simplest question:&lt;/p&gt;

&lt;p&gt;«"Why do I have two pages that could answer the same searcher's question?"»&lt;/p&gt;

&lt;p&gt;I compared the pages manually.&lt;/p&gt;

&lt;p&gt;Then I looked at the queries and pages appearing in Google Search Console.&lt;/p&gt;

&lt;p&gt;The useful report here is:&lt;/p&gt;

&lt;p&gt;Search Console → Performance → Search results → Queries → Pages&lt;/p&gt;

&lt;p&gt;If you investigate a particular query and discover multiple URLs receiving impressions for it, that's worth investigating.&lt;/p&gt;

&lt;p&gt;It doesn't automatically prove cannibalization.&lt;/p&gt;

&lt;p&gt;Google can legitimately rank multiple pages from the same site for one query.&lt;/p&gt;

&lt;p&gt;But when those pages also have highly overlapping content and intent, you've got a stronger signal that your information architecture needs work.&lt;/p&gt;

&lt;p&gt;The Two Pages Had Different Jobs — But I Hadn't Made That Clear Enough&lt;/p&gt;

&lt;p&gt;This was the key realization.&lt;/p&gt;

&lt;p&gt;The solution wasn't simply:&lt;/p&gt;

&lt;p&gt;«"Delete one article."»&lt;/p&gt;

&lt;p&gt;The solution was:&lt;/p&gt;

&lt;p&gt;«Give each article a clearly different job.»&lt;/p&gt;

&lt;p&gt;I defined the two pages like this.&lt;/p&gt;

&lt;p&gt;Page 1 — The Practice&lt;/p&gt;

&lt;p&gt;Primary intent:&lt;/p&gt;

&lt;p&gt;«How do I perform Tasbeeh correctly?»&lt;/p&gt;

&lt;p&gt;This page should answer questions about the Islamic practice itself.&lt;/p&gt;

&lt;p&gt;It can cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Meaning of Tasbeeh&lt;/li&gt;
&lt;li&gt;Correct method&lt;/li&gt;
&lt;li&gt;Common counts&lt;/li&gt;
&lt;li&gt;Tasbeeh after Salah&lt;/li&gt;
&lt;li&gt;Tasbeeh Fatima&lt;/li&gt;
&lt;li&gt;Common mistakes&lt;/li&gt;
&lt;li&gt;Relevant Islamic references&lt;/li&gt;
&lt;li&gt;Building a consistent dhikr habit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the educational/pillar page.&lt;/p&gt;

&lt;p&gt;Page 2 — The Tool&lt;/p&gt;

&lt;p&gt;Primary intent:&lt;/p&gt;

&lt;p&gt;«How does a digital Tasbeeh counter work, and should I use one?»&lt;/p&gt;

&lt;p&gt;Now the content becomes more product and technology oriented.&lt;/p&gt;

&lt;p&gt;It can cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What a digital Tasbeeh counter is&lt;/li&gt;
&lt;li&gt;Physical vs digital counters&lt;/li&gt;
&lt;li&gt;How a phone counter works&lt;/li&gt;
&lt;li&gt;Advantages and limitations&lt;/li&gt;
&lt;li&gt;Offline functionality&lt;/li&gt;
&lt;li&gt;Privacy considerations&lt;/li&gt;
&lt;li&gt;Tracking repetitions&lt;/li&gt;
&lt;li&gt;When a digital counter is useful&lt;/li&gt;
&lt;li&gt;How SabrTime implements the feature&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The article still needs enough Islamic context to be useful.&lt;/p&gt;

&lt;p&gt;But it shouldn't become another complete guide to Tasbeeh.&lt;/p&gt;

&lt;p&gt;That's the important distinction.&lt;/p&gt;

&lt;p&gt;I Removed Unnecessary Overlap&lt;/p&gt;

&lt;p&gt;This was probably the most useful part of the exercise.&lt;/p&gt;

&lt;p&gt;I went through the overlapping sections and asked:&lt;/p&gt;

&lt;p&gt;«"Does this information belong here because it helps this page's primary intent, or am I including it because it's another keyword opportunity?"»&lt;/p&gt;

&lt;p&gt;Those are very different reasons.&lt;/p&gt;

&lt;p&gt;If a section existed only because I thought:&lt;/p&gt;

&lt;p&gt;«"This keyword might help the page rank."»&lt;/p&gt;

&lt;p&gt;I questioned it.&lt;/p&gt;

&lt;p&gt;For example, the digital counter article doesn't need a massive standalone explanation of every aspect of performing Tasbeeh.&lt;/p&gt;

&lt;p&gt;That's already the job of the Tasbeeh guide.&lt;/p&gt;

&lt;p&gt;Instead, I can briefly explain the relevant concept and link to the detailed guide.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;p&gt;Tasbeeh Guide&lt;br&gt;
      │&lt;br&gt;
      │ explains the practice&lt;br&gt;
      ▼&lt;br&gt;
Digital Tasbeeh Counter&lt;br&gt;
      │&lt;br&gt;
      │ explains the technology&lt;br&gt;
      ▼&lt;br&gt;
SabrTime Counter&lt;/p&gt;

&lt;p&gt;Now the pages support each other instead of competing with each other.&lt;/p&gt;

&lt;p&gt;Internal Linking Became More Important&lt;/p&gt;

&lt;p&gt;Once I had separated the intent, internal links became much more meaningful.&lt;/p&gt;

&lt;p&gt;Instead of randomly linking between articles, I could establish a relationship.&lt;/p&gt;

&lt;p&gt;Tasbeeh guide → Digital counter&lt;/p&gt;

&lt;p&gt;«If you prefer counting dhikr digitally, here's how digital Tasbeeh counters work.»&lt;/p&gt;

&lt;p&gt;And:&lt;/p&gt;

&lt;p&gt;Digital counter → Tasbeeh guide&lt;/p&gt;

&lt;p&gt;«Before using a digital counter, learn the traditional method and recommended Tasbeeh practices.»&lt;/p&gt;

&lt;p&gt;Now the relationship is obvious.&lt;/p&gt;

&lt;p&gt;One page explains the practice.&lt;/p&gt;

&lt;p&gt;The other explains the tool.&lt;/p&gt;

&lt;p&gt;That's much cleaner than having two pages both trying to be the complete answer.&lt;/p&gt;

&lt;p&gt;I Didn't Immediately Canonicalize One Page&lt;/p&gt;

&lt;p&gt;Canonicalization was one of the first technical solutions I considered.&lt;/p&gt;

&lt;p&gt;But I didn't want to use a canonical tag as a shortcut for a content architecture problem.&lt;/p&gt;

&lt;p&gt;If two pages have genuinely different purposes, blindly canonicalizing one to the other can throw away useful search opportunities.&lt;/p&gt;

&lt;p&gt;So my approach was:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identify overlapping intent.&lt;/li&gt;
&lt;li&gt;Decide which page owns the broader topic.&lt;/li&gt;
&lt;li&gt;Give the second page a narrower purpose.&lt;/li&gt;
&lt;li&gt;Remove unnecessary overlap.&lt;/li&gt;
&lt;li&gt;Improve internal linking.&lt;/li&gt;
&lt;li&gt;Monitor Search Console.&lt;/li&gt;
&lt;li&gt;Only consider stronger consolidation if the pages still don't have a meaningful distinction.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In other words:&lt;/p&gt;

&lt;p&gt;Fix the information architecture before reaching for a technical directive.&lt;/p&gt;

&lt;p&gt;The Interesting Part: This Is Basically Refactoring&lt;/p&gt;

&lt;p&gt;As a developer, this way of thinking made the problem much easier.&lt;/p&gt;

&lt;p&gt;Imagine I had two functions:&lt;/p&gt;

&lt;p&gt;function tasbeehGuide() {&lt;br&gt;
    // explains Tasbeeh&lt;br&gt;
    // explains counts&lt;br&gt;
    // explains methods&lt;br&gt;
    // explains how to count&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;function digitalTasbeehCounter() {&lt;br&gt;
    // explains Tasbeeh&lt;br&gt;
    // explains counts&lt;br&gt;
    // explains methods&lt;br&gt;
    // explains how to count&lt;br&gt;
    // explains digital counting&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;That's a code smell.&lt;/p&gt;

&lt;p&gt;The functions have overlapping responsibilities.&lt;/p&gt;

&lt;p&gt;You'd probably refactor them.&lt;/p&gt;

&lt;p&gt;SEO content can have the same problem.&lt;/p&gt;

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

&lt;p&gt;«"I need another article targeting another keyword."»&lt;/p&gt;

&lt;p&gt;Think:&lt;/p&gt;

&lt;p&gt;«"What responsibility does this URL own?"»&lt;/p&gt;

&lt;p&gt;That mental model changed how I approached my blog.&lt;/p&gt;

&lt;p&gt;My New Rule for Creating Content&lt;/p&gt;

&lt;p&gt;Before publishing another article, I now ask five questions.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What exact question does this page answer?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;p&gt;«"What keyword am I targeting?"»&lt;/p&gt;

&lt;p&gt;But:&lt;/p&gt;

&lt;p&gt;«"What does the searcher actually want?"»&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Do I already have a URL answering this?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Search the existing site before creating a new article.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If I already have one, what is genuinely different here?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the answer is just:&lt;/p&gt;

&lt;p&gt;«"The title is different."»&lt;/p&gt;

&lt;p&gt;That's probably not enough.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Can I describe the difference in one sentence?&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;«"This article explains Tasbeeh."»&lt;/p&gt;

&lt;p&gt;versus:&lt;/p&gt;

&lt;p&gt;«"This article explains digital Tasbeeh counters."»&lt;/p&gt;

&lt;p&gt;If I can't clearly articulate the distinction, the pages probably aren't differentiated enough.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Where should the new article fit in my site's information architecture?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A blog shouldn't just be a collection of URLs.&lt;/p&gt;

&lt;p&gt;It should behave more like a knowledge graph.&lt;/p&gt;

&lt;p&gt;Related pages should have relationships.&lt;/p&gt;

&lt;p&gt;What I'm Watching Now&lt;/p&gt;

&lt;p&gt;I don't consider the problem "fixed" simply because I edited the pages.&lt;/p&gt;

&lt;p&gt;SEO changes need to be measured.&lt;/p&gt;

&lt;p&gt;I'm watching:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which URL receives impressions for broader Tasbeeh queries&lt;/li&gt;
&lt;li&gt;Whether the digital-counter page gains visibility for tool-related searches&lt;/li&gt;
&lt;li&gt;Whether the Tasbeeh guide retains its educational queries&lt;/li&gt;
&lt;li&gt;CTR changes&lt;/li&gt;
&lt;li&gt;Average position&lt;/li&gt;
&lt;li&gt;New queries appearing for each page&lt;/li&gt;
&lt;li&gt;Whether impressions become less fragmented between the two URLs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important thing is that I'm not expecting an overnight result.&lt;/p&gt;

&lt;p&gt;The goal isn't:&lt;/p&gt;

&lt;p&gt;«"Make one URL rank #1."»&lt;/p&gt;

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

&lt;p&gt;«Make it obvious which URL should rank for which intent.»&lt;/p&gt;

&lt;p&gt;That's a much more sustainable strategy.&lt;/p&gt;

&lt;p&gt;What I Learned as a Solo Developer&lt;/p&gt;

&lt;p&gt;The biggest lesson wasn't actually about SEO.&lt;/p&gt;

&lt;p&gt;It was about content architecture.&lt;/p&gt;

&lt;p&gt;When you're building alone, it's incredibly easy to think about every article independently:&lt;/p&gt;

&lt;p&gt;«"This seems like a useful topic. I'll write it."»&lt;/p&gt;

&lt;p&gt;Then six months later, you have 30 articles that individually look fine but collectively overlap.&lt;/p&gt;

&lt;p&gt;That's exactly like accumulating technical debt.&lt;/p&gt;

&lt;p&gt;A little duplication doesn't look dangerous.&lt;/p&gt;

&lt;p&gt;But eventually:&lt;/p&gt;

&lt;p&gt;Article A ──┐&lt;br&gt;
            ├── overlapping intent&lt;br&gt;
Article B ──┘&lt;/p&gt;

&lt;p&gt;becomes a problem you have to untangle.&lt;/p&gt;

&lt;p&gt;So now I'm treating SEO content more like software architecture.&lt;/p&gt;

&lt;p&gt;Every URL needs a responsibility.&lt;/p&gt;

&lt;p&gt;Every important topic needs a clear primary page.&lt;/p&gt;

&lt;p&gt;Related pages should support each other rather than competing unnecessarily.&lt;/p&gt;

&lt;p&gt;The Bigger Lesson&lt;/p&gt;

&lt;p&gt;If you have a small website and your rankings aren't behaving the way you expect, don't immediately assume you need more backlinks, more articles, or more keywords.&lt;/p&gt;

&lt;p&gt;Sometimes the problem is simpler:&lt;/p&gt;

&lt;p&gt;You may have already written the answer — twice.&lt;/p&gt;

&lt;p&gt;Before publishing your next article, search your own website.&lt;/p&gt;

&lt;p&gt;Look at the existing URLs.&lt;/p&gt;

&lt;p&gt;Compare their titles, headings, FAQs, and search intent.&lt;/p&gt;

&lt;p&gt;Then ask:&lt;/p&gt;

&lt;p&gt;«"If I were Google, which of these two pages would I consider the better answer?"»&lt;/p&gt;

&lt;p&gt;If the answer isn't obvious, that's probably your next SEO task.&lt;/p&gt;

&lt;p&gt;I'm still experimenting with this on "SabrTime.in" (&lt;a href="https://sabrtime.in/" rel="noopener noreferrer"&gt;https://sabrtime.in/&lt;/a&gt;), but this change has already altered how I plan content.&lt;/p&gt;

&lt;p&gt;I don't want to build a blog with hundreds of pages.&lt;/p&gt;

&lt;p&gt;I want to build a site where every page has a reason to exist.&lt;/p&gt;

&lt;p&gt;And, like good code, good content architecture should make the system easier to understand — not harder.&lt;/p&gt;




&lt;p&gt;The pages behind this experiment&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"SabrTime.in" (&lt;a href="https://sabrtime.in/" rel="noopener noreferrer"&gt;https://sabrtime.in/&lt;/a&gt;) — the Islamic app I'm building&lt;/li&gt;
&lt;li&gt;"Digital Tasbeeh Counter" (&lt;a href="https://sabrtime.in/blog/digital-tasbeeh-counter.html" rel="noopener noreferrer"&gt;https://sabrtime.in/blog/digital-tasbeeh-counter.html&lt;/a&gt;) — the technology/tool-focused article&lt;/li&gt;
&lt;li&gt;"Tasbeeh Guides" (&lt;a href="https://sabrtime.in/blog/tasbeeh-guides.html" rel="noopener noreferrer"&gt;https://sabrtime.in/blog/tasbeeh-guides.html&lt;/a&gt;) — the practice/educational side&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're also building a content-heavy product as a solo developer, I'd be interested to know:&lt;/p&gt;

&lt;p&gt;Have you ever discovered two of your own pages competing for the same search intent?&lt;/p&gt;

&lt;h1&gt;
  
  
  seo #webdev #indiedev #buildinpublic #devto
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I Built an Offline-First Qibla Compass for a PWA Without an Internet Connection</title>
      <dc:creator>Yunus Khan</dc:creator>
      <pubDate>Sun, 09 Aug 2026 12:14:35 +0000</pubDate>
      <link>https://dev.to/yunus_khan_d64b04c980b819/how-i-built-an-offline-first-qibla-compass-for-a-pwa-without-an-internet-connection-d29</link>
      <guid>https://dev.to/yunus_khan_d64b04c980b819/how-i-built-an-offline-first-qibla-compass-for-a-pwa-without-an-internet-connection-d29</guid>
      <description>&lt;p&gt;When you're travelling, one of the simplest problems can become surprisingly difficult: finding the Qibla direction without an internet connection.&lt;/p&gt;

&lt;p&gt;I wanted to solve this problem while building SabrTime, an Islamic PWA focused on making everyday worship tools available with minimal dependencies, no mandatory login, and an offline-first experience.&lt;/p&gt;

&lt;p&gt;The result was an offline-capable Qibla compass that can calculate the direction toward the Kaaba using the device's location and orientation sensors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Offline Qibla Matters&lt;/strong&gt;&lt;br&gt;
Most web applications assume that the user has an active internet connection.&lt;/p&gt;

&lt;p&gt;That isn't always true.&lt;/p&gt;

&lt;p&gt;A person may be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Travelling by airplane&lt;/li&gt;
&lt;li&gt;In an area with poor network coverage&lt;/li&gt;
&lt;li&gt;Abroad without mobile data&lt;/li&gt;
&lt;li&gt;Inside a building with unreliable connectivity&lt;/li&gt;
&lt;li&gt;Using airplane mode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A Qibla tool shouldn't necessarily stop being useful just because the network disappears.&lt;/p&gt;

&lt;p&gt;This led me to an important design principle:&lt;/p&gt;

&lt;p&gt;«Calculate what can be calculated locally, and use the network only when it is actually necessary.»&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Basic Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Qibla calculation itself doesn't require a server.&lt;/p&gt;

&lt;p&gt;The basic flow is:&lt;/p&gt;

&lt;p&gt;Device Location&lt;br&gt;
      ↓&lt;br&gt;
Latitude + Longitude&lt;br&gt;
      ↓&lt;br&gt;
Calculate Bearing to Kaaba&lt;br&gt;
      ↓&lt;br&gt;
Device Orientation Sensor&lt;br&gt;
      ↓&lt;br&gt;
Calculate Relative Direction&lt;br&gt;
      ↓&lt;br&gt;
Display Qibla Compass&lt;/p&gt;

&lt;p&gt;The Kaaba's geographic coordinates are fixed, so the application can calculate the bearing locally once it knows the user's latitude and longitude.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Calculating the Bearing to the Kaaba&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first step is determining the initial bearing between the user's location and the Kaaba.&lt;/p&gt;

&lt;p&gt;For two points on Earth, we can use the following formula:&lt;/p&gt;

&lt;p&gt;const lat1 = userLatitude * Math.PI / 180;&lt;br&gt;
const lat2 = kaabaLatitude * Math.PI / 180;&lt;/p&gt;

&lt;p&gt;const deltaLon =&lt;br&gt;
  (kaabaLongitude - userLongitude) * Math.PI / 180;&lt;/p&gt;

&lt;p&gt;const y = Math.sin(deltaLon) * Math.cos(lat2);&lt;/p&gt;

&lt;p&gt;const x =&lt;br&gt;
  Math.cos(lat1) * Math.sin(lat2) -&lt;br&gt;
  Math.sin(lat1) * Math.cos(lat2) * Math.cos(deltaLon);&lt;/p&gt;

&lt;p&gt;let bearing = Math.atan2(y, x);&lt;/p&gt;

&lt;p&gt;bearing = bearing * 180 / Math.PI;&lt;br&gt;
bearing = (bearing + 360) % 360;&lt;/p&gt;

&lt;p&gt;The resulting value represents the initial compass bearing toward the Kaaba.&lt;/p&gt;

&lt;p&gt;This is useful because the calculation happens entirely on the device.&lt;/p&gt;

&lt;p&gt;There is no need to send the user's coordinates to a remote API simply to calculate a direction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Getting the User's Location&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The browser's Geolocation API can provide the user's current coordinates.&lt;/p&gt;

&lt;p&gt;A simplified implementation looks like this:&lt;/p&gt;

&lt;p&gt;navigator.geolocation.getCurrentPosition(&lt;br&gt;
  (position) =&amp;gt; {&lt;br&gt;
    const latitude = position.coords.latitude;&lt;br&gt;
    const longitude = position.coords.longitude;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;calculateQibla(latitude, longitude);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;},&lt;br&gt;
  (error) =&amp;gt; {&lt;br&gt;
    console.error("Unable to get location:", error);&lt;br&gt;
  }&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;Of course, a production application needs to handle permission denial, unavailable location data, low accuracy, and other edge cases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using Device Orientation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Knowing the Qibla bearing isn't enough for a compass interface.&lt;/p&gt;

&lt;p&gt;We also need to know which direction the device is facing.&lt;/p&gt;

&lt;p&gt;Modern browsers can expose device orientation information through sensor APIs, although implementation details and permission requirements can vary between browsers and operating systems.&lt;/p&gt;

&lt;p&gt;The basic concept is:&lt;/p&gt;

&lt;p&gt;Qibla Bearing&lt;br&gt;
      -&lt;br&gt;
Device Heading&lt;br&gt;
      =&lt;br&gt;
Relative Qibla Direction&lt;/p&gt;

&lt;p&gt;For example, if the Qibla bearing is 280° and the device is currently facing 250°:&lt;/p&gt;

&lt;p&gt;280° - 250° = 30°&lt;/p&gt;

&lt;p&gt;The UI can then tell the user that the Qibla is approximately 30° to the right.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Difficult Part: Sensors Are Messy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This sounds straightforward until you actually test it on physical devices.&lt;/p&gt;

&lt;p&gt;A compass isn't perfectly stable.&lt;/p&gt;

&lt;p&gt;The readings can be affected by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Magnetic interference&lt;/li&gt;
&lt;li&gt;Metal objects&lt;/li&gt;
&lt;li&gt;Device hardware&lt;/li&gt;
&lt;li&gt;Sensor noise&lt;/li&gt;
&lt;li&gt;Indoor environments&lt;/li&gt;
&lt;li&gt;Browser differences&lt;/li&gt;
&lt;li&gt;Device calibration&lt;/li&gt;
&lt;li&gt;Rapid device movement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So a good compass interface shouldn't simply trust one sensor reading.&lt;/p&gt;

&lt;p&gt;Instead, the application needs to smooth readings and provide clear visual feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Handling Sensor Noise&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One simple approach is to maintain a rolling set of readings and smooth the result.&lt;/p&gt;

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

&lt;p&gt;const readings = [];&lt;/p&gt;

&lt;p&gt;function smoothHeading(newHeading) {&lt;br&gt;
  readings.push(newHeading);&lt;/p&gt;

&lt;p&gt;if (readings.length &amp;gt; 10) {&lt;br&gt;
    readings.shift();&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;return readings.reduce((sum, value) =&amp;gt; sum + value, 0)&lt;br&gt;
    / readings.length;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;This is only a basic example. Circular values such as 359° and 1° require special handling because a normal arithmetic average can produce incorrect results.&lt;/p&gt;

&lt;p&gt;That's an important lesson when working with compass data:&lt;/p&gt;

&lt;p&gt;Angles aren't ordinary numbers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Building It as a PWA&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The next challenge was making the experience work even when connectivity disappears.&lt;/p&gt;

&lt;p&gt;A Progressive Web App can cache the application's static resources so that previously loaded functionality remains available offline.&lt;/p&gt;

&lt;p&gt;The architecture becomes:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;          ┌───────────────┐
          │    PWA UI     │
          └───────┬───────┘
                  │
    ┌─────────────┴─────────────┐
    ↓                           ↓
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Local calculations           Cached resources&lt;br&gt;
        ↓                           ↓&lt;br&gt;
 Qibla bearing                Offline interface&lt;br&gt;
        ↓&lt;br&gt;
 Device sensors&lt;br&gt;
        ↓&lt;br&gt;
 Qibla direction&lt;/p&gt;

&lt;p&gt;The key idea is that the compass calculation doesn't need a continuous internet connection.&lt;/p&gt;

&lt;p&gt;Privacy Was Another Design Goal&lt;/p&gt;

&lt;p&gt;Location data is sensitive.&lt;/p&gt;

&lt;p&gt;For an Islamic utility like a Qibla compass, I wanted the architecture to minimize unnecessary data transmission.&lt;/p&gt;

&lt;p&gt;If the calculation can happen locally, there is little reason to send the user's exact coordinates to a remote server merely to determine a bearing.&lt;/p&gt;

&lt;p&gt;This is one reason I prefer a privacy-first, client-side approach wherever practical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What About Airplane Mode?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where the offline-first approach becomes particularly useful.&lt;/p&gt;

&lt;p&gt;With network connectivity disabled, a PWA can still provide functionality that doesn't depend on an external server.&lt;/p&gt;

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

&lt;p&gt;Offline does not mean “everything works without hardware or permissions.”&lt;/p&gt;

&lt;p&gt;The application may still require:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Previously cached application resources&lt;/li&gt;
&lt;li&gt;Location permission&lt;/li&gt;
&lt;li&gt;Device location capability&lt;/li&gt;
&lt;li&gt;Orientation sensors&lt;/li&gt;
&lt;li&gt;Browser support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is to remove the unnecessary dependency on the internet, not to magically bypass device requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testing on Real Devices&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the biggest lessons from this project was that browser-based sensor applications should be tested on actual phones.&lt;/p&gt;

&lt;p&gt;A feature can appear perfect in desktop development tools but behave differently on a physical device.&lt;/p&gt;

&lt;p&gt;I recommend testing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;With Wi-Fi enabled&lt;/li&gt;
&lt;li&gt;With mobile data disabled&lt;/li&gt;
&lt;li&gt;In airplane mode&lt;/li&gt;
&lt;li&gt;Indoors&lt;/li&gt;
&lt;li&gt;Outdoors&lt;/li&gt;
&lt;li&gt;After rotating the device&lt;/li&gt;
&lt;li&gt;On multiple browsers where possible&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This catches problems that aren't obvious during normal development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Learned&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building this feature taught me that an offline-first web application isn't simply about adding a service worker.&lt;/p&gt;

&lt;p&gt;It requires thinking about the entire dependency chain.&lt;/p&gt;

&lt;p&gt;For every feature, ask:&lt;/p&gt;

&lt;p&gt;«Does this actually need the internet?»&lt;/p&gt;

&lt;p&gt;If the answer is no, move the computation to the client whenever practical.&lt;/p&gt;

&lt;p&gt;For a Qibla compass, this means location + mathematical calculation + device sensors can do most of the work locally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The SabrTime Implementation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I built this approach into SabrTime, an Islamic PWA that includes prayer tools, Qibla, Islamic resources, and other everyday worship utilities.&lt;/p&gt;

&lt;p&gt;You can explore the project here:&lt;/p&gt;

&lt;p&gt;SabrTime: &lt;a href="https://sabrtime.in/" rel="noopener noreferrer"&gt;https://sabrtime.in/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also documented the Qibla approach in more detail in this article:&lt;/p&gt;

&lt;p&gt;Airplane Mode Qibla Compass: &lt;a href="https://sabrtime.in/blog/airplane-mode-qibla-compass.html" rel="noopener noreferrer"&gt;https://sabrtime.in/blog/airplane-mode-qibla-compass.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're interested in the broader problem of maintaining useful Islamic tools while travelling, I also wrote about "missed prayers and Qaza" (&lt;a href="https://sabrtime.in/blog/missed-prayers-qaza-guide.html" rel="noopener noreferrer"&gt;https://sabrtime.in/blog/missed-prayers-qaza-guide.html&lt;/a&gt;) and practical guidance around making up missed Salah.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The web doesn't always need to depend on the cloud.&lt;/p&gt;

&lt;p&gt;For many utility applications, calculations can happen directly on the user's device. This can improve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Offline reliability&lt;/li&gt;
&lt;li&gt;Privacy&lt;/li&gt;
&lt;li&gt;Performance&lt;/li&gt;
&lt;li&gt;Resilience&lt;/li&gt;
&lt;li&gt;User experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Qibla compass was a good example of this principle.&lt;/p&gt;

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

&lt;p&gt;«“Where is the Qibla from this location?”»&lt;/p&gt;

&lt;p&gt;the phone can calculate the answer itself.&lt;/p&gt;

&lt;p&gt;That small architectural decision makes the feature much more useful when the user is travelling — precisely when a Qibla compass may be needed most.&lt;/p&gt;

&lt;p&gt;I'm continuing to experiment with offline-first and privacy-focused web development while building SabrTime, and I'll be sharing more of the technical lessons from the project.&lt;/p&gt;

</description>
      <category>qiblacompass</category>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What Google Search Console Is Teaching Me as a Solo Developer</title>
      <dc:creator>Yunus Khan</dc:creator>
      <pubDate>Sat, 01 Aug 2026 07:29:13 +0000</pubDate>
      <link>https://dev.to/yunus_khan_d64b04c980b819/what-google-search-console-is-teaching-me-as-a-solo-developer-42h7</link>
      <guid>https://dev.to/yunus_khan_d64b04c980b819/what-google-search-console-is-teaching-me-as-a-solo-developer-42h7</guid>
      <description>&lt;p&gt;When I launched SabrTime, I expected Google to discover my pages quickly.&lt;/p&gt;

&lt;p&gt;That didn't happen.&lt;br&gt;
Today, only 13 pages of my website are indexed,people are already discovering my content through Search.&lt;br&gt;
Instead of chasing shortcuts, I've started trusting the data.&lt;/p&gt;

&lt;p&gt;My Search Console Snapshot&lt;br&gt;
Over the last few months, I've seen:&lt;br&gt;
✅ 13 pages indexed&lt;br&gt;
📈 Search impressions growing month after month&lt;br&gt;
🔍 Hundreds of search queries triggering my pages&lt;br&gt;
🌍 Visitors finding content from different countries&lt;br&gt;
📱 Most traffic coming from mobile devices&lt;/p&gt;

&lt;p&gt;That was enough to convince me that SEO is a long-term investment.&lt;/p&gt;

&lt;p&gt;Lesson 1: Impressions Matter Before Clicks&lt;br&gt;
One thing I misunderstood was impressions.&lt;br&gt;
At first, I only cared about clicks.&lt;br&gt;
Now I pay close attention to impressions because they tell me Google is beginning to understand my website—even if users aren't clicking yet.&lt;br&gt;
Every impression is a sign that my content is entering the search ecosystem.&lt;/p&gt;

&lt;p&gt;Lesson 2: Unexpected Keywords Are Opportunities&lt;br&gt;
Some of my pages started appearing for search queries I never intentionally targeted.&lt;br&gt;
That helped me discover new content ideas and improve existing pages around topics users were already searching for.&lt;br&gt;
Instead of guessing what people want, I now let Search Console guide my content strategy.&lt;/p&gt;

&lt;p&gt;Lesson 3: Technical SEO Matters&lt;br&gt;
While reviewing Search Console, I found several technical issues that needed attention:&lt;br&gt;
Improving internal links&lt;br&gt;
Fixing indexing problems&lt;br&gt;
Updating meta titles and descriptions&lt;br&gt;
Making pages easier for Google to crawl&lt;br&gt;
None of these changes created overnight success, but together they improved the health of my website.&lt;/p&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%2Fy5duap05z9yogdgrwm2t.jpg" 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%2Fy5duap05z9yogdgrwm2t.jpg" alt=" " width="720" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lesson 4: Publishing Consistently Beats Publishing Perfectly&lt;br&gt;
Rather than waiting for the "perfect" article, I focused on publishing useful content consistently.&lt;br&gt;
Every quality page becomes another opportunity for Google to understand what your website is about.&lt;/p&gt;

&lt;p&gt;What I'm Working Toward&lt;br&gt;
My next goals are simple:&lt;br&gt;
Increase indexed pages beyond 13&lt;br&gt;
Continue improving Core Web Vitals&lt;br&gt;
Earn relevant backlinks naturally&lt;br&gt;
Publish content people genuinely find useful&lt;br&gt;
SEO isn't about gaming the algorithm.&lt;br&gt;
It's about building something worth discovering.&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;br&gt;
I'm still at the beginning of my SEO journey, but Google Search Console has completely changed how I think about building websites.&lt;br&gt;
The data has helped me stop guessing and start making better decisions.&lt;br&gt;
If you're also building a website, what has Google Search Console taught you?&lt;/p&gt;

&lt;p&gt;About My Project&lt;br&gt;
I'm applying these lessons while building SabrTime, a privacy-focused Islamic web app with prayer times, Qibla direction, duas, an ibadah tracker, tasbeeh, and other daily Islamic tools.&lt;/p&gt;

&lt;p&gt;🌐 &lt;a href="https://sabrtime.in%E2%81%A0%EF%BF%BD" rel="noopener noreferrer"&gt;https://sabrtime.in⁠�&lt;/a&gt; &lt;/p&gt;

</description>
      <category>seo</category>
      <category>ai</category>
      <category>google</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Hello Dev Community! I'm Yunus Khan</title>
      <dc:creator>Yunus Khan</dc:creator>
      <pubDate>Sat, 18 Jul 2026 08:13:34 +0000</pubDate>
      <link>https://dev.to/yunus_khan_d64b04c980b819/hello-dev-community-im-yunus-khan-185c</link>
      <guid>https://dev.to/yunus_khan_d64b04c980b819/hello-dev-community-im-yunus-khan-185c</guid>
      <description>&lt;p&gt;👋 Assalamu Alaikum and hello everyone! 👋&lt;/p&gt;

&lt;p&gt;My name is Yunus Khan, an independent developer from India who enjoys building products that solve real problems and make technology more meaningful.&lt;/p&gt;

&lt;p&gt;My current passion project is SabrTime—a free Islamic web app designed to help Muslims stay connected with their faith through modern technology.&lt;br&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%2F1d8o8863lax5xinukzx4.jpg" 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%2F1d8o8863lax5xinukzx4.jpg" alt=" " width="720" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🌐 Try SabrTime: &lt;a href="https://sabrtime.in" rel="noopener noreferrer"&gt;https://sabrtime.in&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🌙 What is SabrTime?&lt;/p&gt;

&lt;p&gt;SabrTime is more than just a prayer app. It's an all-in-one spiritual companion featuring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🕌 Accurate Prayer Times&lt;/li&gt;
&lt;li&gt;🧭 Qibla Compass&lt;/li&gt;
&lt;li&gt;📿 Digital Tasbeeh Counter&lt;/li&gt;
&lt;li&gt;🤲 Mood-Based Duas&lt;/li&gt;
&lt;li&gt;📖 Prayer &amp;amp; Dua Library&lt;/li&gt;
&lt;li&gt;📅 Islamic Calendar&lt;/li&gt;
&lt;li&gt;📈 Ibadah &amp;amp; Streak Tracker&lt;/li&gt;
&lt;li&gt;🧠 Islamic Quiz&lt;/li&gt;
&lt;li&gt;🌍 Multi-language support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm constantly adding new features and improving the experience based on community feedback.&lt;/p&gt;

&lt;p&gt;The project is also open source, and I'd love to hear your suggestions or contributions.&lt;/p&gt;

&lt;p&gt;⭐ GitHub: &lt;a href="https://github.com/Kyunus175/sabrtime" rel="noopener noreferrer"&gt;https://github.com/Kyunus175/sabrtime&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 What I'll Share Here&lt;/p&gt;

&lt;p&gt;On Dev.to, I'll write about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My web development journey&lt;/li&gt;
&lt;li&gt;Building and scaling SabrTime&lt;/li&gt;
&lt;li&gt;JavaScript, HTML, CSS, Firebase, and PWAs&lt;/li&gt;
&lt;li&gt;SEO and performance optimization&lt;/li&gt;
&lt;li&gt;Lessons learned while developing as a solo developer&lt;/li&gt;
&lt;li&gt;Open-source experiments and side projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm excited to learn from this amazing community, share my experiences, and connect with developers from around the world.&lt;/p&gt;

&lt;p&gt;Thank you for reading my first post! If you have any feedback about SabrTime or ideas for future features, I'd love to hear them in the comments.&lt;/p&gt;

&lt;p&gt;🌐 Website: &lt;a href="https://sabrtime.in" rel="noopener noreferrer"&gt;https://sabrtime.in&lt;/a&gt;&lt;br&gt;
⭐ GitHub: &lt;a href="https://github.com/Kyunus175/sabrtime" rel="noopener noreferrer"&gt;https://github.com/Kyunus175/sabrtime&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  webdev #javascript #pwa #opensource #indiedev #devjourney
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
