<?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: Karthikeyan KC</title>
    <description>The latest articles on DEV Community by Karthikeyan KC (@karthikeyankc).</description>
    <link>https://dev.to/karthikeyankc</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%2F169083%2Fa09ab970-2bcf-4c9a-9642-ad1042318c7a.png</url>
      <title>DEV Community: Karthikeyan KC</title>
      <link>https://dev.to/karthikeyankc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/karthikeyankc"/>
    <language>en</language>
    <item>
      <title>I built my own self-hosted comment system as an alternative to Disqus (and you can too)</title>
      <dc:creator>Karthikeyan KC</dc:creator>
      <pubDate>Thu, 30 Apr 2026 17:24:23 +0000</pubDate>
      <link>https://dev.to/karthikeyankc/i-built-my-own-self-hosted-comment-system-as-an-alternative-to-disqus-and-you-can-too-3edm</link>
      <guid>https://dev.to/karthikeyankc/i-built-my-own-self-hosted-comment-system-as-an-alternative-to-disqus-and-you-can-too-3edm</guid>
      <description>&lt;p&gt;I recently migrated my personal website from WordPress to Astro, and I absolutely adore the speed, the simplicity, the zero-JS by default with all the flexibility it offers. But before I made the switch, there was one glaring issue that held me back. I needed a comment system that'd adhere to the standards I set for my Astro website - simple, accessible, and fast.&lt;/p&gt;

&lt;p&gt;For a static site (and even the ones with headless CMS) the easy and popular move is to slap a third-party widget like Disqus at the bottom of the posts and hand over the users' data, or maybe even pay a subscription fee, and call it a day.&lt;/p&gt;

&lt;p&gt;But I needed a comment system that'd play well with my Astro site and at the same time help me retain control over the comment data. I looked around for self-hosted options, but honestly nothing really suited my taste. Most of the solutions like Giscus or Utterances leveraged Github discussions, focusing only on the developer community, and systems like Isso or Remark42 didn't fit the bill. They're great comment-systems, but too many features for my taste.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://github.com/karthikeyankc/discuss" rel="noopener noreferrer"&gt;Discuss&lt;/a&gt;.&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.amazonaws.com%2Fuploads%2Farticles%2F137fcpawi9zyygz8sg0s.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%2F137fcpawi9zyygz8sg0s.png" alt="Screenshot of the open-source and self-hosted discuss comment system, which is an alternative to Disqus." width="800" height="966"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A simple node-based comment server with SQLite.&lt;/p&gt;

&lt;p&gt;If you’re a newer dev looking to understand how a microservice fits into a static site architecture, or just someone wanting a clean comment section without the bloat, here is a look under the hood.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keeping it simple and straightforward
&lt;/h2&gt;

&lt;p&gt;What would a modern barebones comment-system look like? How would it fight complexity? To answer these, I ruthlessly cut down the scope. To keep things stupidly simple.&lt;/p&gt;

&lt;p&gt;Coming from a Python background, I initially considered Python frameworks like Flask and FastAPI, but I ultimately adopted a JavaScript-based stack for several technical efficiencies. Node.js simply bypasses the relative complexity of wrestling with the Python Web Server Gateway Interface (WSGI) layer for beginners. Node simplifies deployment. And as most static site generators are JS based, you don't need context switching to a new language. Codebase gets easier to maintain.&lt;/p&gt;

&lt;p&gt;Said that, given the application's requirement for primarily handling text inputs without necessitating a monolithic backend, I chose Express.js to leverage its minimalist, high-performance nature. And SQLite, a self-contained, serverless database engine for its simplicity. This architecture eliminates a lot of overheads like containerization or running a separate database instance, resulting in a lightweight, fast, and easily self-hostable comment solution.&lt;/p&gt;

&lt;p&gt;For learners, if you're new to backend development, this is a pattern worth paying attention to. You don't always need massive infrastructure and feature set to ship a useful product. Always start simple. And remember, when it comes to functionalities, &lt;a href="https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it" rel="noopener noreferrer"&gt;you aren't gonna need it&lt;/a&gt; all. Build only what matters and what is needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Features
&lt;/h2&gt;

&lt;p&gt;I only built what actually mattered for a good user experience.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Threaded Replies:&lt;/strong&gt; Nests up to 4 levels deep. Because flat comment sections get messy fast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Avatars:&lt;/strong&gt; Gravatar is popular. So why not leverage it? For those who want a consistent online presence, it pulls their avatar from Gravatar. And if the user doesn't have an account, it gracefully falls back to generating their initials on the client-side.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Theming:&lt;/strong&gt; Dark mode works right out of the box. Plus, the styling is highly extensible so it blends seamlessly into your site's existing CSS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Admin Dashboard:&lt;/strong&gt; A dedicated, simple UI to moderate and pin comments and keep things clean. Also, shows a clear distinction of author comments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spam Prevention:&lt;/strong&gt; Right now, it handles spam via honeypot fields and a customizable banned-word list. While it works, upcoming versions will allow users to integrate with services like Akismet.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's next for Discuss?
&lt;/h2&gt;

&lt;p&gt;Most of the efforts would be focused on beefing up the server against spam. After that, I'm lining up mentions, email notifications, and webhook configurations.&lt;/p&gt;

&lt;p&gt;If you’re a learner, developer, who wants to get your feet wet in open source, this would be a great place to start. The codebase is small, readable, and manageable. I’m completely open to volunteers stepping in and submitting PRs. I'm a product manager by day and this is my first proper open source project as well.&lt;/p&gt;

&lt;p&gt;You can check the &lt;a href="https://github.com/karthikeyankc/discuss" rel="noopener noreferrer"&gt;source code&lt;/a&gt; or take it out for a spin at the &lt;a href="https://karthikeyankc.github.io/discuss/" rel="noopener noreferrer"&gt;live demo&lt;/a&gt; site.&lt;/p&gt;

&lt;p&gt;Feel free to clone it, test it, and break it. Let me know what you think.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>node</category>
    </item>
    <item>
      <title>I've created a free crash course platform for self-learners</title>
      <dc:creator>Karthikeyan KC</dc:creator>
      <pubDate>Tue, 08 Sep 2020 12:36:31 +0000</pubDate>
      <link>https://dev.to/karthikeyankc/i-ve-created-a-free-crash-course-platform-for-self-learners-26gd</link>
      <guid>https://dev.to/karthikeyankc/i-ve-created-a-free-crash-course-platform-for-self-learners-26gd</guid>
      <description>&lt;p&gt;Hey devs, my first post here! :) Excited to announce my project, Mindspace! I quit my job three months ago and since then I've been developing this. It's now available for everyone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is it about?
&lt;/h2&gt;

&lt;p&gt;Mindspace is a simple platform, or ... 😇 a mind space ... for everyone to create and learn various topics in the form of crash courses. For free. Forever.&lt;/p&gt;

&lt;p&gt;Compared to other MOOCs, Mindspace is very simple by design. There are no quizzes, signup requirements, or barriers to learning the topics you love. &lt;/p&gt;

&lt;p&gt;Regular courseware on MOOC platforms and universities do help students and professionals by providing them with academically disciplined knowledge, but for a casual self-learner, it's unnecessarily complicated. They're lengthy, video-centric, and mostly paywalled with irrelevant hoops to just understand a topic they love to.&lt;/p&gt;

&lt;p&gt;I believe crash courses are simple, efficient, and above all easy to consume for casual learners.&lt;/p&gt;




&lt;p&gt;Here are the highlights of Mindspace with some pretty images! (I love playing with shapes and Inkscape gradients! 😋)&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%2Fkarthikeyankc.com%2Fwp-content%2Fuploads%2F2020%2F09%2FArclind-Mindspace-3000-character-courses.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%2Fkarthikeyankc.com%2Fwp-content%2Fuploads%2F2020%2F09%2FArclind-Mindspace-3000-character-courses.png" alt="3000 character limit of all Arclind crash courses as an illustration with the elemental design concept." width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each Mindspace lesson and the associated discussion space has an intentional character limit of 3000. This restriction forces the creator to simplify and untangle his knowledge to its elements so the lessons stay true to the definition of a crash course.&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%2Fkarthikeyankc.com%2Fwp-content%2Fuploads%2F2020%2F09%2FArclind-Mindspace-Community-focused-free-crash-courses.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%2Fkarthikeyankc.com%2Fwp-content%2Fuploads%2F2020%2F09%2FArclind-Mindspace-Community-focused-free-crash-courses.png" alt="An illustration depicting community focus of Arclind Mindspace free crash courses." width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And to retain the authorship of the creators and preserve their selfless communal interests at the same time, all creations at Mindspace will be licensed under CC BY-NC-SA 4.0 International Licence. This makes all crash courses (and the discussions that follow) reusable for all non-commercial initiatives everywhere.&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%2Fkarthikeyankc.com%2Fwp-content%2Fuploads%2F2020%2F09%2FArclind-Mindspace-Learn-and-Create-Free-Crash-Courses.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%2Fkarthikeyankc.com%2Fwp-content%2Fuploads%2F2020%2F09%2FArclind-Mindspace-Learn-and-Create-Free-Crash-Courses.png" alt="An illustration of a curious person peeking out with curiosity to depict the mission for Arclind Mindspace." width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Creating a crash course is easy. Mindspace supports markdown. There's also a private mode if you'd like to publish courses for yourself ... say when you are trying to re-learn a topic yourself.&lt;/p&gt;

&lt;p&gt;The community is new and small. If you are a creator or an educator, you can signup at &lt;a href="https://mindspace.arclind.com/accounts/signup" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://mindspace.arclind.com/accounts/signup" rel="noopener noreferrer"&gt;https://mindspace.arclind.com/accounts/signup&lt;/a&gt; and contribute your knowledge. As an early contributor, your contributions will be recognized as the Mindspace creative community grows.&lt;/p&gt;




&lt;p&gt;I'd love to hear your thoughts on this. ⚡&lt;/p&gt;

&lt;p&gt;Thanks for reading this. Good day everyone! 😇&lt;/p&gt;




&lt;p&gt;Update: The new version of Mindspace now has another cool feature - Sparks. You can now share instant sparks of knowledge.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>django</category>
      <category>news</category>
    </item>
  </channel>
</rss>
