<?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: Codemaster_121482</title>
    <description>The latest articles on DEV Community by Codemaster_121482 (@codemaster_121482).</description>
    <link>https://dev.to/codemaster_121482</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%2F3854057%2F37a688cb-7e68-4fb1-8adf-19f2abd91849.png</url>
      <title>DEV Community: Codemaster_121482</title>
      <link>https://dev.to/codemaster_121482</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codemaster_121482"/>
    <language>en</language>
    <item>
      <title>How I engineered a custom social media app in 2 months?</title>
      <dc:creator>Codemaster_121482</dc:creator>
      <pubDate>Mon, 29 Jun 2026 19:43:11 +0000</pubDate>
      <link>https://dev.to/codemaster_121482/how-i-engineered-a-custom-social-media-app-in-2-months-i80</link>
      <guid>https://dev.to/codemaster_121482/how-i-engineered-a-custom-social-media-app-in-2-months-i80</guid>
      <description>&lt;h2&gt;
  
  
  What is BlockSocial?
&lt;/h2&gt;

&lt;p&gt;BlockSocial is the ultimate social network for developers, bringing the energy of short-form video to the world of open source. Think of it as Facebook meets Instagram—a place to showcase your code, find inspiration, and build your developer brand through "Reels" and interactive dashboards.&lt;/p&gt;

&lt;p&gt;Github repo link: &lt;a href="https://github.com/Hfs2024/BlockSocial" rel="noopener noreferrer"&gt;https://github.com/Hfs2024/BlockSocial&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. User Scenario &amp;amp; Workflow (The Fork System)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Setup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;User A&lt;/strong&gt;: Publishes a post saying: "I love drinking Pepsi every day."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User B&lt;/strong&gt;: Is shy, but wants to tell their friend this is an unhealthy habit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User C&lt;/strong&gt;: Is a malicious user who gossips.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Fork Mechanism
&lt;/h3&gt;

&lt;p&gt;User B creates a fork to discuss this post with User C via the &lt;code&gt;POST /api/share&lt;/code&gt; endpoint.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Copying&lt;/strong&gt;: It copies the entire post contents except comments, likes, reports, and downloads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chain Prevention&lt;/strong&gt;: You can fork a forked post, but the system will fork the original source root, not the fork itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope&lt;/strong&gt;: It shares with only one user at a time to prevent unexpected group creation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Database Payload for Forks
&lt;/h3&gt;

&lt;p&gt;The following fields are appended to the document structure:&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;"share"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"shareId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"post._id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;The&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;original&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;post&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;ID&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sharedBy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"req.currentUser.username"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;The&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;user&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;who&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;shared&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;forked&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"shareTo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"shareTo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;The&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;friend&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;receiving&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;share&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"shareComment"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"comment || ''"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;A&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;quick&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;comment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;post&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;h3&gt;
  
  
  Moderation &amp;amp; Enforcement Workflow
&lt;/h3&gt;

&lt;p&gt;If User C breaks trust and leaks the conversation, User B can report them via the &lt;code&gt;POST /report/user&lt;/code&gt; endpoint.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Verification&lt;/strong&gt;: Administrators review interaction history to verify the violation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Account Termination&lt;/strong&gt;: Bad users receive a permanent lifetime account ban.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Scrubbing&lt;/strong&gt;: All associated messages from the malicious user are removed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blacklisting&lt;/strong&gt;: The account is fully banned.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Blindspot&lt;/strong&gt;: Face-to-face interactions remain outside system moderation boundaries 😅&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  2. Technical Implementation Details
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Dynamic Comment Identity Logic
&lt;/h3&gt;

&lt;p&gt;When a user submits a comment via &lt;code&gt;POST /api/comment&lt;/code&gt;, the application evaluates the &lt;code&gt;id&lt;/code&gt; payload from &lt;code&gt;req.body&lt;/code&gt; to locate the post and applies the following identity check:&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="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;anonymous&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;by&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;currentUser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;username&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;anonymous_name&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;currentUser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;username&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Logic&lt;/strong&gt;: If it is an anonymous post and the author is commenting, the system displays their unique UUID (&lt;code&gt;result.anonymous_name&lt;/code&gt;). Otherwise, it returns their standard username.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  API Data Masking (Anti-Data Leaking)
&lt;/h3&gt;

&lt;p&gt;To prevent tech-savvy clients from using custom fetch functions to sniff the hidden &lt;code&gt;by&lt;/code&gt; (author) field, the backend strips identifying data before serving payloads:&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="nx"&gt;posts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&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;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;anonymous&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;by&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;anonymous_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;ul&gt;
&lt;li&gt;
&lt;strong&gt;Security&lt;/strong&gt;: The true author identity is replaced with the anonymous UUID payload on the fly. This ensures raw creator data remains accessible exclusively to administrators for moderation purposes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimization&lt;/strong&gt;: This uses &lt;code&gt;.lean()&lt;/code&gt; to fetch plain JavaScript objects directly, bypassing heavy Mongoose documents and preventing accidental database writes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Performance Optimization
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pagination Constraints&lt;/strong&gt;: Payloads are strictly limited to 50 posts per request cycle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Navigation&lt;/strong&gt;: Client-side navigation relies on next/previous pagination states to ensure low latency and high speed.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Core Feature Matrix
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Posting &amp;amp; Filtering
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Posting Options&lt;/strong&gt;: Supports anonymous publishing or making a post private (visible only to you).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactions&lt;/strong&gt;: Native support for likes, reports, convert posts to image, comments, and forks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collections&lt;/strong&gt;: Custom user collections featuring full CRUD support (Create, Read, Update, Delete).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Filters&lt;/strong&gt;: Filter posts by text/image content, forks, and creator.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reels Filter&lt;/strong&gt;: Video filtering sorted by content creator profiles.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Data Portability
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Export Posts Data&lt;/strong&gt;: Download post history in JSONL format (Minimum 15 post, Maximum 300 post, if you have less than 15, just type 15 and it will get what it can find).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Import Posts Data&lt;/strong&gt;:  Upload Bulk posts (Each post &lt;strong&gt;MUST&lt;/strong&gt; not already exist on the platform, or it will be skipped).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  User &amp;amp; Social Tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Search Infrastructure&lt;/strong&gt;: Indexed query lookups for system users and connections.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Profile Customization&lt;/strong&gt;: Access to a curated matrix of custom emojis:
&lt;code&gt;😎 🌸 👧🏿 👦🏿 🐑 🐣 🐔 🧆 🥚 👩🏿 👨🏿 🍳 🥒 🚗 👮 👮‍♀️ 🕵️‍♀️ 🎅 🤶 ✨ 🎉 🎊 🎀 🎥 🍔 👨🏻 👳🏻‍♂️ 👳🏻‍♀️ 👩🏻‍🦱 😂&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Post Management&lt;/strong&gt;: Full content editing and deletion capabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image Editor&lt;/strong&gt;: Integrated image editor for post attachments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Security &amp;amp; Account Lifecycle
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Password Recovery&lt;/strong&gt;: Time-limited recovery codes featuring manual administrative revocation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delete Account&lt;/strong&gt;: Complete account purging removes user metadata while converting active public records into anonymous "ghost posts."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI Themes&lt;/strong&gt;: Dark and light mode styling toggles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support Engine&lt;/strong&gt;: Live-chat support desks powered by the tawk.to API wrapper and docs.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Architectural Enhancements (In Progress)
&lt;/h2&gt;

&lt;p&gt;The current codebase is migrating away from legacy offset pagination (&lt;code&gt;skip().limit()&lt;/code&gt;) toward an optimized, index-backed &lt;strong&gt;Cursor-Based Pagination&lt;/strong&gt; model leveraging chronological object IDs (&lt;code&gt;_id&lt;/code&gt;) to ensure linear query performance at scale.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Node.js v16+&lt;/li&gt;
&lt;li&gt;MongoDB (Local instance or Atlas cluster)&lt;/li&gt;
&lt;li&gt;npm package manager&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Clone the repository:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   git clone https://github.com/Hfs2024/BlockSocial/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Navigate to the project root:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;cd &lt;/span&gt;BlockSocial
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Install dependencies:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Configure your environment variables in a &lt;code&gt;.env&lt;/code&gt; file:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   MONGO_URI=your_mongodb_connection_string
   ADMIN_PASSWORD=your_hashed_password
   ADMIN_USERNAME=your_admin_username
   SESSION_SECRET=your_secure_session_secret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Initialize the server application:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   node server.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Project Structure
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/private&lt;/code&gt; - Administrative authentication dashboards&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/public&lt;/code&gt; - Client-side presentation layer and assets&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/&lt;/code&gt; - Core application architecture and server routing logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Contributions, bug reports, and repository stars are highly appreciated!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>socialmedia</category>
    </item>
    <item>
      <title>Architecting Block: Building a Custom Social Network, Theme Engine, and more</title>
      <dc:creator>Codemaster_121482</dc:creator>
      <pubDate>Fri, 19 Jun 2026 12:47:23 +0000</pubDate>
      <link>https://dev.to/codemaster_121482/architecting-block-building-a-custom-social-network-theme-engine-and-more-2nfc</link>
      <guid>https://dev.to/codemaster_121482/architecting-block-building-a-custom-social-network-theme-engine-and-more-2nfc</guid>
      <description>&lt;h2&gt;
  
  
  What is BlockSocial?
&lt;/h2&gt;

&lt;p&gt;BlockSocial is the ultimate social network for developers, bringing the energy of short-form video to the world of open source. Think of it as Facebook meets Instagram—a place to showcase your code, find inspiration, and build your developer brand through "Reels" and interactive dashboards.&lt;/p&gt;

&lt;p&gt;Github repo link: &lt;a href="https://github.com/Hfs2024/BlockSocial" rel="noopener noreferrer"&gt;https://github.com/Hfs2024/BlockSocial&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. User Scenario &amp;amp; Workflow (The Fork System)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Setup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;User A&lt;/strong&gt;: Publishes a post saying: "I love drinking Pepsi every day."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User B&lt;/strong&gt;: Is shy, but wants to tell their friend this is an unhealthy habit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User C&lt;/strong&gt;: Is a malicious user who gossips.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Fork Mechanism
&lt;/h3&gt;

&lt;p&gt;User B creates a fork to discuss this post with User C via the &lt;code&gt;POST /api/share&lt;/code&gt; endpoint.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Copying&lt;/strong&gt;: It copies the entire post contents except comments, likes, reports, and downloads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chain Prevention&lt;/strong&gt;: You can fork a forked post, but the system will fork the original source root, not the fork itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope&lt;/strong&gt;: It shares with only one user at a time to prevent unexpected group creation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Database Payload for Forks
&lt;/h3&gt;

&lt;p&gt;The following fields are appended to the document structure:&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;"share"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"shareId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"post._id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;The&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;original&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;post&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;ID&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sharedBy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"req.currentUser.username"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;The&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;user&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;who&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;shared&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;forked&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"shareTo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"shareTo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;The&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;friend&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;receiving&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;share&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"shareComment"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"comment || ''"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;A&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;quick&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;comment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;post&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;h3&gt;
  
  
  Moderation &amp;amp; Enforcement Workflow
&lt;/h3&gt;

&lt;p&gt;If User C breaks trust and leaks the conversation, User B can report them via the &lt;code&gt;POST /report/user&lt;/code&gt; endpoint.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Verification&lt;/strong&gt;: Administrators review interaction history to verify the violation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Account Termination&lt;/strong&gt;: Bad users receive a permanent lifetime account ban.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Scrubbing&lt;/strong&gt;: All associated messages from the malicious user are removed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blacklisting&lt;/strong&gt;: The account is fully banned.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Blindspot&lt;/strong&gt;: Face-to-face interactions remain outside system moderation boundaries 😅&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  2. Technical Implementation Details
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Dynamic Comment Identity Logic
&lt;/h3&gt;

&lt;p&gt;When a user submits a comment via &lt;code&gt;POST /api/comment&lt;/code&gt;, the application evaluates the &lt;code&gt;id&lt;/code&gt; payload from &lt;code&gt;req.body&lt;/code&gt; to locate the post and applies the following identity check:&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="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;anonymous&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;by&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;currentUser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;username&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;anonymous_name&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;currentUser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;username&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Logic&lt;/strong&gt;: If it is an anonymous post and the author is commenting, the system displays their unique UUID (&lt;code&gt;result.anonymous_name&lt;/code&gt;). Otherwise, it returns their standard username.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  API Data Masking (Anti-Data Leaking)
&lt;/h3&gt;

&lt;p&gt;To prevent tech-savvy clients from using custom fetch functions to sniff the hidden &lt;code&gt;by&lt;/code&gt; (author) field, the backend strips identifying data before serving payloads:&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="nx"&gt;posts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&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;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;anonymous&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;by&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;anonymous_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;ul&gt;
&lt;li&gt;
&lt;strong&gt;Security&lt;/strong&gt;: The true author identity is replaced with the anonymous UUID payload on the fly. This ensures raw creator data remains accessible exclusively to administrators for moderation purposes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimization&lt;/strong&gt;: This uses &lt;code&gt;.lean()&lt;/code&gt; to fetch plain JavaScript objects directly, bypassing heavy Mongoose documents and preventing accidental database writes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Performance Optimization
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pagination Constraints&lt;/strong&gt;: Payloads are strictly limited to 50 posts per request cycle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Navigation&lt;/strong&gt;: Client-side navigation relies on next/previous pagination states to ensure low latency and high speed.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Core Feature Matrix
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Posting &amp;amp; Filtering
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Posting Options&lt;/strong&gt;: Supports anonymous publishing or making a post private (visible only to you).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactions&lt;/strong&gt;: Native support for likes, reports, convert posts to image, comments, and forks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collections&lt;/strong&gt;: Custom user collections featuring full CRUD support (Create, Read, Update, Delete).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Filters&lt;/strong&gt;: Filter posts by text/image content, forks, and creator.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reels Filter&lt;/strong&gt;: Video filtering sorted by content creator profiles.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Data Portability
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Export Posts Data&lt;/strong&gt;: Download post history in JSONL format (Minimum 15 post, Maximum 300 post, if you have less than 15, just type 15 and it will get what it can find).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Import Posts Data&lt;/strong&gt;:  Upload Bulk posts (Each post &lt;strong&gt;MUST&lt;/strong&gt; not already exist on the platform, or it will be skipped).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  User &amp;amp; Social Tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Search Infrastructure&lt;/strong&gt;: Indexed query lookups for system users and connections.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Profile Customization&lt;/strong&gt;: Access to a curated matrix of custom emojis:
&lt;code&gt;😎 🌸 👧🏿 👦🏿 🐑 🐣 🐔 🧆 🥚 👩🏿 👨🏿 🍳 🥒 🚗 👮 👮‍♀️ 🕵️‍♀️ 🎅 🤶 ✨ 🎉 🎊 🎀 🎥 🍔 👨🏻 👳🏻‍♂️ 👳🏻‍♀️ 👩🏻‍🦱 😂&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Post Management&lt;/strong&gt;: Full content editing and deletion capabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image Editor&lt;/strong&gt;: Integrated image editor for post attachments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Security &amp;amp; Account Lifecycle
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Password Recovery&lt;/strong&gt;: Time-limited recovery codes featuring manual administrative revocation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delete Account&lt;/strong&gt;: Complete account purging removes user metadata while converting active public records into anonymous "ghost posts."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI Themes&lt;/strong&gt;: Dark and light mode styling toggles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support Engine&lt;/strong&gt;: Live-chat support desks powered by the tawk.to API wrapper and docs.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Architectural Enhancements (In Progress)
&lt;/h2&gt;

&lt;p&gt;The current codebase is migrating away from legacy offset pagination (&lt;code&gt;skip().limit()&lt;/code&gt;) toward an optimized, index-backed &lt;strong&gt;Cursor-Based Pagination&lt;/strong&gt; model leveraging chronological object IDs (&lt;code&gt;_id&lt;/code&gt;) to ensure linear query performance at scale.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Node.js v16+&lt;/li&gt;
&lt;li&gt;MongoDB (Local instance or Atlas cluster)&lt;/li&gt;
&lt;li&gt;npm package manager&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Clone the repository:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   git clone https://github.com/Hfs2024/BlockSocial/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Navigate to the project root:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;cd &lt;/span&gt;BlockSocial
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Install dependencies:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Configure your environment variables in a &lt;code&gt;.env&lt;/code&gt; file:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   MONGO_URI=your_mongodb_connection_string
   ADMIN_PASSWORD=your_hashed_password
   ADMIN_USERNAME=your_admin_username
   SESSION_SECRET=your_secure_session_secret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Initialize the server application:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   node server.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Project Structure
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/private&lt;/code&gt; - Administrative authentication dashboards&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/public&lt;/code&gt; - Client-side presentation layer and assets&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/&lt;/code&gt; - Core application architecture and server routing logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Contributions, bug reports, and repository stars are highly appreciated.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>software</category>
    </item>
    <item>
      <title>Wanna free chess training? I built a new chess.com clone!</title>
      <dc:creator>Codemaster_121482</dc:creator>
      <pubDate>Fri, 03 Apr 2026 07:46:17 +0000</pubDate>
      <link>https://dev.to/codemaster_121482/wanna-free-chess-training-i-built-a-new-chesscom-clone-c66</link>
      <guid>https://dev.to/codemaster_121482/wanna-free-chess-training-i-built-a-new-chesscom-clone-c66</guid>
      <description>&lt;h1&gt;
  
  
  Wanna Free Chess Training? I Built a New Chess.com Clone! ♟️
&lt;/h1&gt;

&lt;p&gt;Hey fellow devs! I just finished a project I’m pretty stoked about: a fully functional &lt;strong&gt;Chess.com clone&lt;/strong&gt; built with &lt;strong&gt;HTML, CSS, and JavaScript&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;While there are plenty of chess apps out there, I wanted to build one that was clean, fast, and completely free for training.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ The Tech Stack
&lt;/h2&gt;

&lt;p&gt;Instead of reinventing the wheel (and failing at complex move validation), I leaned on two heavy hitters in the JS chess world:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Chessboard.js:&lt;/strong&gt; This handles the "look" of the game—the board, the pieces, and the drag-and-drop animations.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Chess.js&lt;/strong&gt; This is the "brain." It handles the move validation, game state, checkmate detection, and FEN/PGN generation.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🚀 Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Legal Move Enforcement:&lt;/strong&gt; You can't make an illegal move. The "brain" (Chess.js) validates every drag before the board updates.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Move Highlighting:&lt;/strong&gt; Just like on Chess.com, the board highlights where you moved from and where you landed.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Game Status:&lt;/strong&gt; Real-time alerts for &lt;strong&gt;Check&lt;/strong&gt;, &lt;strong&gt;Checkmate&lt;/strong&gt;, or &lt;strong&gt;Draw&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Responsive Design:&lt;/strong&gt; Practice your endgames on your phone or your desktop.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🧠 The Best Moment
&lt;/h2&gt;

&lt;p&gt;The trickiest part was syncing the UI with the logic. When a user drops a piece, I have to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ask &lt;code&gt;chess.js&lt;/code&gt; if the move is legal.&lt;/li&gt;
&lt;li&gt;If it is, update the internal game state.&lt;/li&gt;
&lt;li&gt;Tell &lt;code&gt;chessboard.js&lt;/code&gt; to snap the piece to the new square.&lt;/li&gt;
&lt;li&gt;Check if the game is over.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It’s a perfect example of the &lt;strong&gt;Model-View-Controller&lt;/strong&gt; pattern in action!&lt;/p&gt;

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

&lt;p&gt;The core game is solid, but I'm planning to add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] &lt;strong&gt;Real time play:&lt;/strong&gt; To play against an real people.&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;UI/UX improvment:&lt;/strong&gt; Add theme toggle + more board and piece theme.&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Timer:&lt;/strong&gt; For those high-stakes blitz matches.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔗 Check it out!
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://chessmasterapp.online" rel="noopener noreferrer"&gt;Chessmasterapp.online&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d love to hear your feedback! How would you handle the &lt;strong&gt;Real time play&lt;/strong&gt; integration—maybe Backend API?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy coding (and checkmating)!&lt;/strong&gt; 👑&lt;/p&gt;

</description>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Codemaster_121482</dc:creator>
      <pubDate>Wed, 01 Apr 2026 15:06:43 +0000</pubDate>
      <link>https://dev.to/codemaster_121482/-2e0d</link>
      <guid>https://dev.to/codemaster_121482/-2e0d</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/codemaster_121482/i-built-a-programming-language-so-you-dont-have-to-stress-meet-spherelang-2o4g" class="crayons-story__hidden-navigation-link"&gt;I Built a Programming Language so You Don’t Have to Stress: Meet SphereLang&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/codemaster_121482" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3854057%2F37a688cb-7e68-4fb1-8adf-19f2abd91849.png" alt="codemaster_121482 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/codemaster_121482" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Codemaster_121482
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Codemaster_121482
                
              
              &lt;div id="story-author-preview-content-3441397" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/codemaster_121482" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3854057%2F37a688cb-7e68-4fb1-8adf-19f2abd91849.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Codemaster_121482&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/codemaster_121482/i-built-a-programming-language-so-you-dont-have-to-stress-meet-spherelang-2o4g" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 1&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/codemaster_121482/i-built-a-programming-language-so-you-dont-have-to-stress-meet-spherelang-2o4g" id="article-link-3441397"&gt;
          I Built a Programming Language so You Don’t Have to Stress: Meet SphereLang
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/codemaster_121482/i-built-a-programming-language-so-you-dont-have-to-stress-meet-spherelang-2o4g" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/codemaster_121482/i-built-a-programming-language-so-you-dont-have-to-stress-meet-spherelang-2o4g#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>New programming language</title>
      <dc:creator>Codemaster_121482</dc:creator>
      <pubDate>Wed, 01 Apr 2026 14:55:18 +0000</pubDate>
      <link>https://dev.to/codemaster_121482/new-programming-language-43cl</link>
      <guid>https://dev.to/codemaster_121482/new-programming-language-43cl</guid>
      <description></description>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Codemaster_121482</dc:creator>
      <pubDate>Wed, 01 Apr 2026 14:50:19 +0000</pubDate>
      <link>https://dev.to/codemaster_121482/-121i</link>
      <guid>https://dev.to/codemaster_121482/-121i</guid>
      <description>&lt;div class="crayons-card my-2 p-4"&gt;
  &lt;p class="color-base-60"&gt;Post not found or has been removed.&lt;/p&gt;
&lt;/div&gt;


</description>
    </item>
  </channel>
</rss>
