<?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: Anshul Negi</title>
    <description>The latest articles on DEV Community by Anshul Negi (@anshulnegitc).</description>
    <link>https://dev.to/anshulnegitc</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%2F292230%2F17190771-eb12-4969-94ad-dfd5e07fb020.jpg</url>
      <title>DEV Community: Anshul Negi</title>
      <link>https://dev.to/anshulnegitc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anshulnegitc"/>
    <language>en</language>
    <item>
      <title>Project Codebreaker: Save the Fleet</title>
      <dc:creator>Anshul Negi</dc:creator>
      <pubDate>Sat, 20 Jun 2026 20:03:15 +0000</pubDate>
      <link>https://dev.to/anshulnegitc/project-codebreaker-save-the-fleet-h8h</link>
      <guid>https://dev.to/anshulnegitc/project-codebreaker-save-the-fleet-h8h</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/june-game-jam-2026-06-03"&gt;June Solstice Game Jam&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Break The Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Inspired by the idea of codebreakers like &lt;strong&gt;Alan Turing&lt;/strong&gt; during World War II, you play as an intelligence officer whose job is to intercept enemy messages, solve puzzles, and crack secret codes to uncover the enemy's plans.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your Mission&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Intercept enemy transmissions.&lt;/li&gt;
&lt;li&gt;Solve decryption puzzles.&lt;/li&gt;
&lt;li&gt;Uncover the enemy fleet's plans.&lt;/li&gt;
&lt;li&gt;Stop their next move before it's too late.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As the war progresses, the puzzles become more challenging, testing your observation and logical thinking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Goal&lt;/strong&gt;&lt;br&gt;
Use your mind instead of weapons to prevent war and save lives. By breaking the enemy's codes before it's too late, you can change the outcome of the battle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Url&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://break-the-code-sage.vercel.app" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;break-the-code-sage.vercel.app&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Video Demo
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/6h520jZuJSU"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/anshulnegitc" rel="noopener noreferrer"&gt;
        anshulnegitc
      &lt;/a&gt; / &lt;a href="https://github.com/anshulnegitc/break-the-code" rel="noopener noreferrer"&gt;
        break-the-code
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Solve decryption puzzles, uncover enemy plans, and prevent war in this tactical codebreaking game inspired by Alan Turing.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Break The Code&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;"Break their code. Save the fleet."&lt;/p&gt;
&lt;p&gt;Break The Code is a fast-paced, naval intelligence-themed puzzle game where players must intercept and decrypt enemy signals to protect the fleet before time runs out.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 Key Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Naval Intelligence Command Experience:&lt;/strong&gt; Immerse yourself in a high-stakes mission environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decryption Puzzles:&lt;/strong&gt; Engaging, logic-based puzzles representing intercepted enemy transmissions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Game Engine:&lt;/strong&gt; Built with HTML5 Canvas, featuring a fleet visualization engine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intense Gameplay:&lt;/strong&gt; Manage your fleet's integrity while racing against the clock.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive Design:&lt;/strong&gt; Optimized for both desktop and mobile devices, ensuring critical data is always visible.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🛠️ Tech Stack&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework:&lt;/strong&gt; Angular (v21+) with Signals for reactive state management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language:&lt;/strong&gt; TypeScript (Strict Mode).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visuals &amp;amp; Styling:&lt;/strong&gt; Tailwind CSS 4+ for a clean, technical, high-contrast UI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graphics:&lt;/strong&gt; HTML5 Canvas API for real-time game engine rendering.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🏗️ Project Architecture&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;The project follows a feature-driven, scalable directory structure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/src/app/canvas/&lt;/code&gt;: Contains the game engine…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/anshulnegitc/break-the-code" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Technical Approach&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built the game using &lt;strong&gt;HTML5 Canvas&lt;/strong&gt; for the battlefield and game visuals.&lt;/li&gt;
&lt;li&gt;Used &lt;strong&gt;Google AI Studio&lt;/strong&gt; throughout the development process to build and improve the game.&lt;/li&gt;
&lt;li&gt;Used &lt;strong&gt;Gemini&lt;/strong&gt; to help with gameplay ideas, mission flow, puzzle design, and balancing the difficulty.&lt;/li&gt;
&lt;li&gt;Designed the game around &lt;strong&gt;5 missions&lt;/strong&gt;, where each completed mission advances the enemy fleet and unlocks the next challenge.&lt;/li&gt;
&lt;li&gt;Added a &lt;strong&gt;3-life system&lt;/strong&gt; so every choice matters.&lt;/li&gt;
&lt;li&gt;Created different puzzle types using number and pattern sequences, including arithmetic patterns, prime numbers, Fibonacci sequences, and multi-step logic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Interesting Decisions&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instead of focusing on combat, I wanted players to stop the enemy by &lt;strong&gt;solving puzzles and breaking secret codes&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;I moved the enemy fleet in &lt;strong&gt;five strategic steps&lt;/strong&gt; instead of continuous movement to make the growing threat easier to understand.&lt;/li&gt;
&lt;li&gt;I kept the interface simple and used short intelligence messages to tell the story without interrupting gameplay.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal was to create a simple experience where players use &lt;strong&gt;logic, observation, and problem-solving&lt;/strong&gt; to uncover enemy plans and prevent war.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best Ode to Alan Turing&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inspired by Alan Turing and World War II codebreakers.&lt;/li&gt;
&lt;li&gt;Players use logic and code-breaking instead of weapons to stop the enemy.&lt;/li&gt;
&lt;li&gt;The game celebrates the power of problem-solving and intelligence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best Google AI Usage&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Used &lt;strong&gt;Google AI Studio&lt;/strong&gt; and &lt;strong&gt;Gemini&lt;/strong&gt; throughout development.&lt;/li&gt;
&lt;li&gt;Gemini helped shape the gameplay, puzzles, mission flow, and overall experience.&lt;/li&gt;
&lt;li&gt;Google AI acted as a creative partner from idea to final submission.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
      <category>gemini</category>
    </item>
    <item>
      <title>I Built an AI-First Portfolio Powered by Gemini</title>
      <dc:creator>Anshul Negi</dc:creator>
      <pubDate>Fri, 30 Jan 2026 20:05:13 +0000</pubDate>
      <link>https://dev.to/anshulnegitc/i-built-an-ai-first-portfolio-powered-by-gemini-40jb</link>
      <guid>https://dev.to/anshulnegitc/i-built-an-ai-first-portfolio-powered-by-gemini-40jb</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31"&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;I like building things that are simple, useful, and easy to understand.&lt;br&gt;
This portfolio replaces traditional navigation with conversation, letting you explore my work and approach through an AI-powered interface.&lt;/p&gt;
&lt;h2&gt;
  
  
  Portfolio
&lt;/h2&gt;

&lt;p&gt;Try it here → &lt;a href="https://ai-powered-portfolio-762827267923.us-west1.run.app" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;br&gt;


&lt;/p&gt;
&lt;div class="ltag__cloud-run"&gt;
  &lt;iframe height="600px" src="https://ai-powered-portfolio-762827267923.us-west1.run.app"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;




&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Tech stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Angular&lt;/li&gt;
&lt;li&gt;TailWind CSS&lt;/li&gt;
&lt;li&gt;Gemini Flash Lite 2.5&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Design Decisions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Chose a conversational portfolio instead of a multi-page layout to highlight AI-driven interaction.&lt;/li&gt;
&lt;li&gt;Kept the UI simple and readable so users can focus on content without distractions.&lt;/li&gt;
&lt;li&gt;Added predefined prompts to help users get started easily.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Development Process
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Gathered all portfolio information and structured it as a single data source to enable context-based responses.&lt;/li&gt;
&lt;li&gt;Initially passed the entire portfolio data with each request, which led to unnecessary API usage and performance issues.&lt;/li&gt;
&lt;li&gt;Introduced AI-based intent detection to understand what the user is asking before selecting relevant data. This helped reduce context size but still required further optimization.&lt;/li&gt;
&lt;li&gt;Split the portfolio data into multiple focused sections (skills, projects, experience, philosophy) to improve clarity and reduce payload size.&lt;/li&gt;
&lt;li&gt;Switched to Gemini Flash Lite 2.5 for faster, more efficient intent detection and lightweight response generation.&lt;/li&gt;
&lt;li&gt;Defined fixed intents for predefined prompt pills to avoid unnecessary intent detection calls.&lt;/li&gt;
&lt;li&gt;Cached responses for prompts to minimize repeated API calls and improve responsiveness.&lt;/li&gt;
&lt;li&gt;Added a contextual follow-up question after responses to encourage deeper exploration without overwhelming the user.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Google AI tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Google AI Studio&lt;/li&gt;
&lt;li&gt;Gemini&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I'm Most Proud Of
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Used AI to rapidly build, iterate, and deploy the application, enabling fast experimentation and continuous refinement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Applied intent-based AI usage with focused context and model selection to improve response quality while reducing unnecessary API calls.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Balanced user experience and technical implementation, ensuring the interface remains simple while the system stays efficient.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Free Image Hosting</title>
      <dc:creator>Anshul Negi</dc:creator>
      <pubDate>Sun, 13 Oct 2024 16:07:22 +0000</pubDate>
      <link>https://dev.to/anshulnegitc/free-image-hosting-obi</link>
      <guid>https://dev.to/anshulnegitc/free-image-hosting-obi</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/pinata"&gt;The Pinata Challenge &lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Free Image Hosting is a web application that allows users to temporarily store and share image files. It utilizes Pinata for storage and retrieval, enabling optimized image retrieval. MongoDB is used to store image properties and URLs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Website : &lt;a href="https://fimh.vercel.app/" rel="noopener noreferrer"&gt;Live&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Website Overview
&lt;/h3&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%2F7g65tnn9q7r81tehqdt7.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%2F7g65tnn9q7r81tehqdt7.png" alt="Homepage" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Configure Image
&lt;/h4&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%2Fak9ih6vyb4c4hqxywlg5.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%2Fak9ih6vyb4c4hqxywlg5.png" alt="Edit Image Configuration" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Get Temporary Url
&lt;/h4&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%2F7ozbwe8p7o5de9xwdo95.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%2F7ozbwe8p7o5de9xwdo95.png" alt="Temporary Url" width="800" height="82"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Getting Image by temporary Url
&lt;/h4&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%2Fs30v8defd6f6zgkyqx12.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%2Fs30v8defd6f6zgkyqx12.png" alt="Image Preview" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Url Expired/Image Not Found/Url Not Found
&lt;/h4&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%2F2ubissmbkmv82rxsaxlt.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%2F2ubissmbkmv82rxsaxlt.png" alt="Url not found" width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/anshulnegitc" rel="noopener noreferrer"&gt;
        anshulnegitc
      &lt;/a&gt; / &lt;a href="https://github.com/anshulnegitc/fimh" rel="noopener noreferrer"&gt;
        fimh
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Free Image Hosting&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Store and share file with temporary url.&lt;/p&gt;
&lt;p&gt;A Next.js-based application that uses &lt;strong&gt;&lt;a href="https://pinata.cloud/" rel="nofollow noopener noreferrer"&gt;Pinata&lt;/a&gt;&lt;/strong&gt;  to store image files and MongoDB to store data. Images can be configured with different properties for optimization. Documents are deleted using a TTL index in MongoDB, and triggers-functions in MongoDB remove the corresponding files from Pinata&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Seamless Image Upload&lt;/strong&gt;: File API to upload image.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Signed Url&lt;/strong&gt;: Signed Url to access image for limited amount of time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimized Performance&lt;/strong&gt;: Leverages Pinata's Image Opimization for fast content delivery and enhanced user experience.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📂 Tech Stack&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React, Next.js&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Next.js, Pinata API, MongoDb&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling&lt;/strong&gt;: Bootstrap&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting&lt;/strong&gt;: Vercel&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;⚙️ Setup &amp;amp; Installation&lt;/h2&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clone the Repository&lt;/strong&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/anshulnegitc/fimh.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; fimh&lt;/pre&gt;

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install Dependencies:&lt;/strong&gt;:
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install&lt;/pre&gt;

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment Variables:&lt;/strong&gt; Set up environment variables for Pinata API keys in a &lt;code&gt;.env.local&lt;/code&gt; file(Place .env.local inside fimh folder):
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;NEXT_PUBLIC_PINATA_JWT=your_api_key
NEXT_PUBLIC_GATEWAY_URL=your_secret_key
NEXT_PUBLIC_DATABASE_URL=your_mongo_connection_url&lt;/pre&gt;

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/anshulnegitc/fimh" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  More Details
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Pinata Files API&lt;/strong&gt; is used to upload the image.&lt;br&gt;
&lt;strong&gt;Pinata Signed URL&lt;/strong&gt; is used to access the image for a limited amount of time.&lt;br&gt;
&lt;strong&gt;Pinata Image Optimizations&lt;/strong&gt; can be set to improve the load time and experience when viewing image content.&lt;/p&gt;

&lt;p&gt;For project setup and other configuration &lt;a href="https://github.com/anshulnegitc/fimh" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>pinatachallenge</category>
      <category>webdev</category>
      <category>api</category>
    </item>
    <item>
      <title>Url Shortener</title>
      <dc:creator>Anshul Negi</dc:creator>
      <pubDate>Mon, 29 Aug 2022 17:42:00 +0000</pubDate>
      <link>https://dev.to/anshulnegitc/url-shortener-3907</link>
      <guid>https://dev.to/anshulnegitc/url-shortener-3907</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;It's an imitation of Url Shortener Service.&lt;/p&gt;

&lt;p&gt;Only functional requirements are considered while developing this project i.e to generate short url and redirect short url to original url.&lt;/p&gt;

&lt;p&gt;In case url got expired/moved to other domain/not responsding, a 404 error page is shown.&lt;/p&gt;

&lt;p&gt;Redis is used as primary as well as caching database here.&lt;/p&gt;

&lt;p&gt;Some analytics and expression values(like,star,thumbs up etc...) are permanently stored in database while urls are short lived.&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.amazonaws.com%2Fuploads%2Farticles%2F4eaj7cnoog8ocy3fxsp4.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%2F4eaj7cnoog8ocy3fxsp4.png" alt="Home Page" width="800" height="450"&gt;&lt;/a&gt;&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.amazonaws.com%2Fuploads%2Farticles%2F5da0tqunjdq9zfrm5uhx.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%2F5da0tqunjdq9zfrm5uhx.png" alt="404 Page" width="800" height="450"&gt;&lt;/a&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fzj99itgyet65l7i3qwas.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%2Fzj99itgyet65l7i3qwas.png" alt="Analytics" width="800" height="450"&gt;&lt;/a&gt;&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.amazonaws.com%2Fuploads%2Farticles%2Fjym2t9547e7wf1vqb6wr.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%2Fjym2t9547e7wf1vqb6wr.png" alt="Mobile Design" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;MEAN/MERN Mavericks&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/YJlg9RTmKDM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Language Used:
&lt;/h3&gt;

&lt;p&gt;NodeJs &amp;amp; React&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Code
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Frontend:
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/anshulnegitc" rel="noopener noreferrer"&gt;
        anshulnegitc
      &lt;/a&gt; / &lt;a href="https://github.com/anshulnegitc/url-shortener-app-frontend" rel="noopener noreferrer"&gt;
        url-shortener-app-frontend
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Url Shortener Application&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;It's an imitation of &lt;strong&gt;Url Shortener Service.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Only &lt;strong&gt;functional requirements&lt;/strong&gt; are considered while developing this project i.e &lt;strong&gt;to generate short url and redirect short url to original url.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In case url got expired/moved to other domain/not responsding, a 404 error page is shown.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Redis is used as primary as well as caching database here.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Some analytics and expression values(like,star,thumbs up etc...) are permanently stored in database while urls are short lived.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Application Architecture.&lt;/strong&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/55315115/187064974-93993fd0-2c64-4464-9e88-0912835b336e.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55315115%2F187064974-93993fd0-2c64-4464-9e88-0912835b336e.jpg" alt="Application-Architrecture"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desktop View.&lt;/strong&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/55315115/187065005-b5b86519-252b-4ebc-83c2-3340e887504d.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55315115%2F187065005-b5b86519-252b-4ebc-83c2-3340e887504d.png" alt="Img-1"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;404 Page.&lt;/strong&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/55315115/187065040-67708e7e-fe8d-4c7b-811b-e08408a8810c.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55315115%2F187065040-67708e7e-fe8d-4c7b-811b-e08408a8810c.png" alt="Img-2"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Analytics.&lt;/strong&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/55315115/187065025-7f28fd3b-ac16-45f4-aee3-8600052f5c01.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55315115%2F187065025-7f28fd3b-ac16-45f4-aee3-8600052f5c01.png" alt="Img-4"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mobile View.&lt;/strong&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/55315115/187065011-d359e042-abd4-404a-8e23-617a5a21b484.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55315115%2F187065011-d359e042-abd4-404a-8e23-617a5a21b484.png" alt="Img-3"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Overview video&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Here's a short video that explains the project and how it uses Redis:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://youtu.be/YJlg9RTmKDM" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55315115%2F187065005-b5b86519-252b-4ebc-83c2-3340e887504d.png" alt="Url Shortener"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it works&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;How the data is stored:&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Urls.
&lt;ul&gt;
&lt;li&gt;It maps the long_url with short_url.&lt;/li&gt;
&lt;li&gt;short_url is base62 value of counter and is indexed.&lt;/li&gt;
&lt;li&gt;Expiration of 30 mins is set.&lt;/li&gt;
&lt;li&gt;Data is stored as&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;class Url extends Entity { }
const urlSchema = new Schema(Url, {
    long_url: { type: 'string' }
    short_url:&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/anshulnegitc/url-shortener-app-frontend" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h4&gt;
  
  
  Backend:
&lt;/h4&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/anshulnegitc" rel="noopener noreferrer"&gt;
        anshulnegitc
      &lt;/a&gt; / &lt;a href="https://github.com/anshulnegitc/url-shortener-app-backend" rel="noopener noreferrer"&gt;
        url-shortener-app-backend
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Url Shortener Application&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;It's an imitation of &lt;strong&gt;Url Shortener Service.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Only &lt;strong&gt;functional requirements&lt;/strong&gt; are considered while developing this project i.e &lt;strong&gt;to generate short url and redirect short url to original url.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In case url got expired/moved to other domain/not responsding, a 404 error page is shown.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Redis is used as primary as well as caching database here.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Some analytics and expression values(like,star,thumbs up etc...) are permanently stored in database while urls are short lived.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Application Architecture.&lt;/strong&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/55315115/187064974-93993fd0-2c64-4464-9e88-0912835b336e.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55315115%2F187064974-93993fd0-2c64-4464-9e88-0912835b336e.jpg" alt="Application-Architrecture"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desktop View.&lt;/strong&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/55315115/187065005-b5b86519-252b-4ebc-83c2-3340e887504d.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55315115%2F187065005-b5b86519-252b-4ebc-83c2-3340e887504d.png" alt="Img-1"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;404 Page.&lt;/strong&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/55315115/187065040-67708e7e-fe8d-4c7b-811b-e08408a8810c.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55315115%2F187065040-67708e7e-fe8d-4c7b-811b-e08408a8810c.png" alt="Img-2"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Analytics.&lt;/strong&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/55315115/187065025-7f28fd3b-ac16-45f4-aee3-8600052f5c01.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55315115%2F187065025-7f28fd3b-ac16-45f4-aee3-8600052f5c01.png" alt="Img-4"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mobile View.&lt;/strong&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/55315115/187065011-d359e042-abd4-404a-8e23-617a5a21b484.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55315115%2F187065011-d359e042-abd4-404a-8e23-617a5a21b484.png" alt="Img-3"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Overview video&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Here's a short video that explains the project and how it uses Redis:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://youtu.be/YJlg9RTmKDM" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55315115%2F187065005-b5b86519-252b-4ebc-83c2-3340e887504d.png" alt="Url Shortener"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it works&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;How the data is stored:&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Urls.
&lt;ul&gt;
&lt;li&gt;It maps the long_url with short_url.&lt;/li&gt;
&lt;li&gt;short_url is base62 value of counter and is indexed.&lt;/li&gt;
&lt;li&gt;Expiration of 30 mins is set.&lt;/li&gt;
&lt;li&gt;Data is stored as&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;class Url extends Entity { }
const urlSchema = new Schema(Url, {
    long_url: { type: 'string' }
    short_url:&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/anshulnegitc/url-shortener-app-backend" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Check out &lt;a href="https://redis.io/docs/stack/get-started/clients/#high-level-client-libraries" rel="noopener noreferrer"&gt;Redis OM&lt;/a&gt;, client libraries for working with Redis as a multi-model database.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Use &lt;a href="https://redis.info/redisinsight" rel="noopener noreferrer"&gt;RedisInsight&lt;/a&gt; to visualize your data in Redis.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Sign up for a &lt;a href="https://redis.info/try-free-dev-to" rel="noopener noreferrer"&gt;free Redis database&lt;/a&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>redishackathon</category>
    </item>
    <item>
      <title>designing database</title>
      <dc:creator>Anshul Negi</dc:creator>
      <pubDate>Mon, 16 Mar 2020 07:15:54 +0000</pubDate>
      <link>https://dev.to/anshulnegitc/designing-database-1knm</link>
      <guid>https://dev.to/anshulnegitc/designing-database-1knm</guid>
      <description>&lt;p&gt;I am new to database architecture though familiar with queries and aggregation in MongoDB.&lt;br&gt;
At present working on a project where I have to store different user depending upon the type/role. There are few fields similar in the user model, would it be correct to create a separate collection for each role or just create separate schema then reference it i.e only a single collection.&lt;br&gt;
In the future, more roles can be added with more information.&lt;br&gt;
Any other approach is welcome.&lt;/p&gt;

&lt;p&gt;Below is the mock models&lt;br&gt;
Eg:&lt;br&gt;
*customer = &lt;br&gt;
{firstname,lastname,email,address,mobileno,password,role}&lt;br&gt;
*sales = {firstname,lastname,email,address,mobileno,password,role,attachments,experience,&lt;br&gt;
education}&lt;br&gt;
*marketting = &lt;br&gt;
{teamName,email,address,mobileno,password,role,members,attachments}&lt;/p&gt;

</description>
      <category>mongodb</category>
      <category>database</category>
      <category>help</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
