<?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>Forem: Ghanshyam Kanojiya</title>
    <description>The latest articles on Forem by Ghanshyam Kanojiya (@shyamkano).</description>
    <link>https://forem.com/shyamkano</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3860624%2Fbef896e7-afaf-4d76-8d56-012f49b347cb.png</url>
      <title>Forem: Ghanshyam Kanojiya</title>
      <link>https://forem.com/shyamkano</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/shyamkano"/>
    <language>en</language>
    <item>
      <title>Why I Built My Own Blogging Platform Instead of Using Medium</title>
      <dc:creator>Ghanshyam Kanojiya</dc:creator>
      <pubDate>Wed, 15 Apr 2026 16:10:25 +0000</pubDate>
      <link>https://forem.com/shyamkano/why-i-built-my-own-blogging-platform-instead-of-using-medium-4fk3</link>
      <guid>https://forem.com/shyamkano/why-i-built-my-own-blogging-platform-instead-of-using-medium-4fk3</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Most platforms today are noisy.  &lt;/p&gt;

&lt;p&gt;What started as a place to write and share ideas slowly turned into something else — feeds, distractions, and constant scrolling.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Problem with Modern Platforms
&lt;/h2&gt;

&lt;p&gt;Over time, I realized something.&lt;/p&gt;

&lt;p&gt;Writing online no longer felt like writing.&lt;/p&gt;

&lt;p&gt;It felt like performing.&lt;/p&gt;

&lt;p&gt;Every platform I used had the same pattern:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Too many distractions
&lt;/li&gt;
&lt;li&gt;Too much focus on engagement
&lt;/li&gt;
&lt;li&gt;Not enough focus on actual content
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even when I sat down to write something meaningful, I found myself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;checking notifications
&lt;/li&gt;
&lt;li&gt;thinking about how it would look
&lt;/li&gt;
&lt;li&gt;worrying about reactions
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And slowly, the process of writing became… exhausting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Wanted Something Different
&lt;/h2&gt;

&lt;p&gt;I didn’t want another platform.&lt;/p&gt;

&lt;p&gt;I wanted a &lt;strong&gt;space&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A place where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;writing feels natural
&lt;/li&gt;
&lt;li&gt;content comes first
&lt;/li&gt;
&lt;li&gt;there is no pressure to perform
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Something minimal. Something quiet.&lt;/p&gt;

&lt;p&gt;Something that lets ideas exist without noise.&lt;/p&gt;




&lt;h2&gt;
  
  
  So I Built My Own Platform
&lt;/h2&gt;

&lt;p&gt;Instead of searching for the perfect tool, I decided to build one.&lt;/p&gt;

&lt;p&gt;That’s how &lt;strong&gt;LUMEN&lt;/strong&gt; started.&lt;/p&gt;

&lt;p&gt;Not as a big product idea —&lt;br&gt;&lt;br&gt;
but as a simple attempt to create a better writing experience.&lt;/p&gt;


&lt;h2&gt;
  
  
  Building LUMEN
&lt;/h2&gt;

&lt;p&gt;From a technical perspective, I kept things simple and modern:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework:&lt;/strong&gt; Next.js
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database &amp;amp; Auth:&lt;/strong&gt; Supabase
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Editor:&lt;/strong&gt; TipTap
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling:&lt;/strong&gt; Tailwind CSS
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s a simple example of how a post is created:&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;createPost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&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;error&lt;/span&gt; &lt;span class="p"&gt;}&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;supabase&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;posts&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="nf"&gt;insert&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&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;The goal wasn’t complexity.&lt;br&gt;&lt;br&gt;
It was clarity — both in code and in experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Makes It Different
&lt;/h2&gt;

&lt;p&gt;While building, I focused on a few core ideas:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Minimal Experience
&lt;/h3&gt;

&lt;p&gt;No unnecessary clutter. Just content.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Multi-format Writing
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;write blogs
&lt;/li&gt;
&lt;li&gt;share code
&lt;/li&gt;
&lt;li&gt;post audio
&lt;/li&gt;
&lt;li&gt;write short thoughts
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Anonymous Expression
&lt;/h3&gt;

&lt;p&gt;Sometimes, the most honest thoughts are the ones we don’t attach to our identity.&lt;/p&gt;

&lt;p&gt;So I added a simple option:&lt;/p&gt;

&lt;p&gt;→ post anonymously&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;Building this taught me something important.&lt;/p&gt;

&lt;p&gt;People don’t need more features.&lt;br&gt;&lt;br&gt;
They need better experiences.&lt;/p&gt;

&lt;p&gt;I also realized:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;simplicity is harder than complexity
&lt;/li&gt;
&lt;li&gt;removing things is more difficult than adding them
&lt;/li&gt;
&lt;li&gt;and most importantly…
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;writing should feel natural, not stressful&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Where It Is Now
&lt;/h2&gt;

&lt;p&gt;LUMEN is still early.&lt;/p&gt;

&lt;p&gt;It’s not perfect.&lt;/p&gt;

&lt;p&gt;But it’s something I genuinely enjoy using — and that matters more than anything.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Maybe the goal isn’t to build the next big platform.&lt;/p&gt;

&lt;p&gt;Maybe it’s just to build something that feels right.&lt;/p&gt;




&lt;p&gt;If you're curious, you can check it out here:&lt;br&gt;&lt;br&gt;
&lt;a href="https://lumen-archive.vercel.app/" rel="noopener noreferrer"&gt;https://lumen-archive.vercel.app/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;If you’re building something similar or thinking about it, I’d love to hear your thoughts.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>Title: Building LUMEN: A High-Contrast, AI-Powered Archival Network with Next.js &amp; Supabase</title>
      <dc:creator>Ghanshyam Kanojiya</dc:creator>
      <pubDate>Sat, 11 Apr 2026 12:37:46 +0000</pubDate>
      <link>https://forem.com/shyamkano/title-building-lumen-a-high-contrast-ai-powered-archival-network-with-nextjs-supabase-127i</link>
      <guid>https://forem.com/shyamkano/title-building-lumen-a-high-contrast-ai-powered-archival-network-with-nextjs-supabase-127i</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;I've always been obsessed with minimalist design—the kind that gets out of the way and lets the content breathe. Most blogging platforms today feel like social media: noisy, colorful, and distracting.&lt;/p&gt;

&lt;p&gt;So, I built &lt;strong&gt;LUMEN&lt;/strong&gt;. An archival publishing network where thoughts are preserved in a strict monochrome "Clean Canvas."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://lumen-archive.vercel.app/" rel="noopener noreferrer"&gt;https://lumen-archive.vercel.app/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Shyamkano/LUMEN" rel="noopener noreferrer"&gt;https://github.com/Shyamkano/LUMEN&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠 The Architecture
&lt;/h2&gt;

&lt;p&gt;To keep the site fast and scalable, I went with a modern full-stack approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Framework:&lt;/strong&gt; Next.js 16 (App Router) using the latest Turbopack for lightning-fast development.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Database &amp;amp; Auth:&lt;/strong&gt; Supabase (PostgreSQL). I leveraged Row Level Security (RLS) heavily to ensure user data is private and secure.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Styling:&lt;/strong&gt; Tailwind CSS v4 + Vanilla CSS for that crisp, brutalist look.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AI Engine:&lt;/strong&gt; Mistral AI API for the "Editorial Co-pilot" which helps writers refine their work.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Rich Text:&lt;/strong&gt; TipTap for a seamless, distraction-free writing experience.&lt;/li&gt;
&lt;/ul&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.amazonaws.com%2Fuploads%2Farticles%2F2tv5th8a2y63ueynd3aj.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.amazonaws.com%2Fuploads%2Farticles%2F2tv5th8a2y63ueynd3aj.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;What makes LUMEN different?&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Multi-Format Feed
&lt;/h3&gt;

&lt;p&gt;Unlike standard blogs, LUMEN handles four distinct types of content:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Essays:&lt;/strong&gt; Full-length long-form writing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Micro-logs:&lt;/strong&gt; Thoughts under 500 characters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Gists:&lt;/strong&gt; Shared snippets with full syntax highlighting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio Chronicles:&lt;/strong&gt; Voice logs with an integrated audio player.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. The AI Editorial Assistant
&lt;/h3&gt;

&lt;p&gt;I integrated a custom AI assistant that does more than just "chat." It can analyze your writing, suggest relevant tags, fix grammar, and even help you continue a narrative—all without leaving the editor.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Radical Privacy (Anonymous Identities)
&lt;/h3&gt;

&lt;p&gt;LUMEN allows users to generate "Anonymous Identities." These are temporary aliases that let you publish a "Signal" (post) without it being traced back to your public profile, perfect for whistleblowing or raw, unedited thoughts.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;LUMEN is open-source. I’m planning to add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] RSS Feed synchronization.&lt;/li&gt;
&lt;li&gt;[ ] End-to-end encrypted private drafts.&lt;/li&gt;
&lt;li&gt;[ ] Advanced full-text search using Postgres &lt;code&gt;tsvector&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd love to hear your thoughts on the monochrome design. Is it too minimal, or just right?&lt;/p&gt;

&lt;p&gt;Let's discuss in the comments below! 👇&lt;/p&gt;




&lt;p&gt;&lt;code&gt;#showdev&lt;/code&gt;, &lt;code&gt;#webdev&lt;/code&gt;, &lt;code&gt;#nextjs&lt;/code&gt;, &lt;code&gt;#supabase&lt;/code&gt;. &lt;/p&gt;

</description>
      <category>fullstack</category>
      <category>nextjs</category>
      <category>showdev</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
