<?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: Harsh Singh</title>
    <description>The latest articles on DEV Community by Harsh Singh (@harshthedev).</description>
    <link>https://dev.to/harshthedev</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%2F1459765%2F57760c39-f51f-45bd-b118-6f6d6ef69652.png</url>
      <title>DEV Community: Harsh Singh</title>
      <link>https://dev.to/harshthedev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/harshthedev"/>
    <language>en</language>
    <item>
      <title>I built an open source alternative to Perplexity Comet</title>
      <dc:creator>Harsh Singh</dc:creator>
      <pubDate>Tue, 22 Jul 2025 09:23:42 +0000</pubDate>
      <link>https://dev.to/harshthedev/i-built-an-open-source-alternative-to-perplexity-comet-2oj</link>
      <guid>https://dev.to/harshthedev/i-built-an-open-source-alternative-to-perplexity-comet-2oj</guid>
      <description>&lt;p&gt;It feels like every week there's a new AI-powered browser launching, promising to revolutionize how we browse the web. But honestly, Chrome is already perfect for many of us. Instead of switching to a new browser, I wanted to enhance my existing experience with AI features. That's why I built my own open-source, local alternative to tools like Perplexity Comet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chrome is already perfect
&lt;/h2&gt;

&lt;p&gt;Chrome offers a great user experience, and I didn't want to switch browsers just for a few AI features. That's why I created a Chrome extension that adds the functionality I was looking for directly into my existing browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Just usesuperpowers.app - a Chrome extension which adds AI Browsing features similar to Dia and Comet in Chrome itself.
&lt;/h2&gt;

&lt;p&gt;My solution is &lt;a href="https://usesuperpowers.app/" rel="noopener noreferrer"&gt;Superpowers AI&lt;/a&gt;, a Chrome extension that seamlessly integrates AI browsing features. It brings the power of tools like Perplexity Comet and others directly into Chrome.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=ly0tY7KSBlk" rel="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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo27h6oxxhwu9kz6yhun2.jpg" alt="I built an open source alternative to Perplexity Comet" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Completely open-source and local
&lt;/h2&gt;

&lt;p&gt;One of the most important aspects of this project is that it's completely open-source. You can view the code, contribute to its development, and customize it to your specific needs.&lt;/p&gt;

&lt;p&gt;Furthermore, it runs locally, meaning your data stays on your machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open to contributions
&lt;/h2&gt;

&lt;p&gt;I'm excited to share this project with the community and welcome any contributions. Whether you're a developer, designer, or simply an AI enthusiast, your help is greatly appreciated!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>javascript</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Top 5 v0 Alternatives for AI-Powered UI Component Building</title>
      <dc:creator>Harsh Singh</dc:creator>
      <pubDate>Fri, 27 Jun 2025 14:28:22 +0000</pubDate>
      <link>https://dev.to/harshthedev/top-5-v0-alternatives-for-ai-powered-ui-component-building-34bk</link>
      <guid>https://dev.to/harshthedev/top-5-v0-alternatives-for-ai-powered-ui-component-building-34bk</guid>
      <description>&lt;p&gt;The rise of AI-driven development tools has transformed how developers create user interfaces, making it faster and more accessible to build polished, production-ready UI components. Vercel's v0 has gained significant traction for its ability to generate React components from text prompts, leveraging AI to streamline front-end development. However, v0 is not the only player in this space. If you are exploring alternatives that offer unique features, better customization, or different workflows, this article highlights five compelling options, including Supafine, a promising AI-powered UI component builder for React. Let's dive into the top alternatives to v0 and what makes them stand out.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Supafine
&lt;/h2&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%2F8g4ixo9nj4odfb76qpkr.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%2F8g4ixo9nj4odfb76qpkr.png" alt="Image description" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://create.supafine.app/" rel="noopener noreferrer"&gt;Supafine&lt;/a&gt; is an AI-powered UI component builder tailored for React developers, designed to generate clean, customizable, and production-ready components. Unlike some competitors, Supafine emphasizes seamless integration with modern React workflows, leveraging Tailwind CSS for styling. Its intuitive interface allows developers to describe UI requirements in natural language, and the AI generates React components that align with best practices, such as component-based architecture and accessibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React-First Approach&lt;/strong&gt;: Generates components optimized for React ecosystems, including Next.js.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customizable Outputs&lt;/strong&gt;: Offers flexibility to tweak generated code, ensuring it fits your project's design system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration with Modern Tools&lt;/strong&gt;: Supports Tailwind CSS, Remix Icons, Recharts and other popular npm packages for rapid development.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer-Friendly&lt;/strong&gt;: Reduces the need for manual code reviews by producing reliable, error-free components.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Choose Supafine?
&lt;/h3&gt;

&lt;p&gt;Supafine stands out for its focus on React developers who want AI-generated components that feel handcrafted. Its ability to understand complex requirements and produce components makes it a strong contender for teams building scalable applications. Give it a try at &lt;a href="https://create.supafine.app/" rel="noopener noreferrer"&gt;create.supafine.app&lt;/a&gt; and get 30 free credits every day.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Dyad
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.dyad.sh/" rel="noopener noreferrer"&gt;Dyad&lt;/a&gt; is an open-source, local-first alternative to v0, designed for developers who prioritize control and privacy. It allows users to generate UI components and entire web applications using AI, with a focus on offline capabilities. Dyad supports multiple frameworks, including React, and is ideal for developers who want to experiment with AI-driven development without relying on cloud-based services.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open-Source&lt;/strong&gt;: Free to use and customizable, with a transparent codebase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline Support&lt;/strong&gt;: Runs locally, ensuring data privacy and no dependency on internet connectivity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Framework&lt;/strong&gt; Compatibility: Supports React, Vue, and other frameworks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community-Driven&lt;/strong&gt;: Benefits from contributions by developers worldwide.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Choose Dyad?
&lt;/h3&gt;

&lt;p&gt;Dyad is perfect for developers who value open-source principles and want a lightweight, customizable tool for generating UI components. Its offline capabilities make it unique, though it may lack the polish of cloud-based solutions like v0.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Bolt
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://bolt.new/" rel="noopener noreferrer"&gt;Bolt&lt;/a&gt; is another AI-driven tool that focuses on generating full-stack applications, including UI components, from high-level prompts. While it supports React, Bolt's strength lies in its ability to scaffold entire projects, making it a good fit for developers building MVPs or prototypes. It integrates with popular package managers like npm and supports modern frameworks like Next.js.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Full-Stack Generation&lt;/strong&gt;: Creates both front-end and back-end code, reducing setup time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rapid Prototyping&lt;/strong&gt;: Ideal for quickly iterating on app ideas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extensible Outputs&lt;/strong&gt;: Allows developers to modify generated code to suit specific needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-Powered Planning&lt;/strong&gt;: Analyzes requirements to propose project structures.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Choose Bolt?
&lt;/h3&gt;

&lt;p&gt;Bolt is a great choice for developers who need more than just UI components and want a tool that can jumpstart an entire project. However, its broader scope may feel overwhelming for those focused solely on UI development.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Fine
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.fine.dev/" rel="noopener noreferrer"&gt;Fine&lt;/a&gt; takes a unique approach by positioning its AI agents as "software developers that never sleep". It excels at understanding business requirements and generating production-ready React components, complete with testing and documentation. Fine's AI can analyze existing codebases to ensure consistency, making it a strong choice for enterprise teams or developers working on large-scale projects.&lt;/p&gt;

&lt;p&gt;Key Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Codebase Analysis&lt;/strong&gt;: Adapts to your project's coding style and standards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;End-to-End Development&lt;/strong&gt;: Generates, tests, and deploys components with minimal human intervention.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical Product Manager Mindset&lt;/strong&gt;: Encourages clear, detailed prompts for better results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High Efficiency&lt;/strong&gt;: Handles tedious tasks like boilerplate code and testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Choose Fine?
&lt;/h3&gt;

&lt;p&gt;Fine is ideal for teams that need AI to act as a virtual developer, handling repetitive tasks while maintaining high code quality. Its learning curve may be steeper due to the need for precise prompts, but the payoff is robust, production-ready components.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Same.new
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://same.new/" rel="noopener noreferrer"&gt;Same.new&lt;/a&gt; is an AI-powered platform focused on generating modern, responsive UI components for React and other frameworks. It emphasizes delivering clean, modular code that integrates seamlessly with existing projects. With a focus on developer experience, Same.New allows users to input design preferences or text prompts, producing components optimized for performance and scalability.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clean Code Generation&lt;/strong&gt;: Produces modular, well-documented React components.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Framework Support&lt;/strong&gt;: Works with React, Vue, and more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance Optimization&lt;/strong&gt;: Ensures components are lightweight and efficient.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customizable Templates&lt;/strong&gt;: Offers pre-built templates for common UI patterns.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Choose Same.new?
&lt;/h3&gt;

&lt;p&gt;Same.new is ideal for developers seeking a balance between rapid component generation and high-quality, production-ready code. Its focus on performance and modularity makes it a great fit for scalable applications, though it may lack some of the design-to-code features of other tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;While v0 has set a high bar for AI-powered UI component generation, alternatives like Supafine, Dyad, Bolt, Fine, and Morph offer unique strengths that cater to different developer needs. Supafine shines for React developers seeking seamless integration and customization, while Dyad appeals to those who value open-source and offline capabilities. Bolt is perfect for full-stack prototyping. Depending on your project requirements, one of these tools could be the perfect fit to enhance your UI development workflow.&lt;/p&gt;

&lt;p&gt;Explore these alternatives, starting with Supafine on Product Hunt, and find the tool that best aligns with your development goals. Happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>javascript</category>
      <category>react</category>
    </item>
    <item>
      <title>A Minimalist Python Version Manager</title>
      <dc:creator>Harsh Singh</dc:creator>
      <pubDate>Wed, 02 Oct 2024 07:17:01 +0000</pubDate>
      <link>https://dev.to/harshthedev/a-minimalist-python-version-manager-1dfn</link>
      <guid>https://dev.to/harshthedev/a-minimalist-python-version-manager-1dfn</guid>
      <description>&lt;h2&gt;
  
  
  Python Support in Shuru: Version 0.0.9
&lt;/h2&gt;

&lt;p&gt;Shuru just got an upgrade—Python version management is now live! If you’ve been using Shuru for your Node.js tasks, you'll be glad to know you can now manage your Python versions with the same ease.&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s New?
&lt;/h3&gt;

&lt;p&gt;With this latest release (v0.0.9), Shuru can download, build, and install Python from source, all by simply configuring your &lt;code&gt;shuru.toml&lt;/code&gt;. No need for extra tools like &lt;code&gt;pyenv&lt;/code&gt; anymore. Just define the Python version you need, and Shuru takes care of the rest.&lt;/p&gt;

&lt;p&gt;Here’s how it looks in your &lt;code&gt;shuru.toml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[versions]&lt;/span&gt;
&lt;span class="py"&gt;python&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"3.10.2"&lt;/span&gt;

&lt;span class="nn"&gt;[[task]]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"setup"&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"pip install -r requirements.txt"&lt;/span&gt;

&lt;span class="nn"&gt;[[task]]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"run"&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"python app.py"&lt;/span&gt;
&lt;span class="py"&gt;default&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Under the Hood
&lt;/h3&gt;

&lt;p&gt;When you specify a Python version, Shuru will:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Download the Source&lt;/strong&gt;: It grabs the specified version from the official Python website.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compile It&lt;/strong&gt;: This isn’t just a simple download and go. Shuru compiles Python from source, allowing for greater customization if you need it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install&lt;/strong&gt;: Finally, it installs Python in your designated environment.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to see the build process in real-time, set the &lt;code&gt;SHURU_BUILD_PYTHON_VERBOSE&lt;/code&gt; environment variable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;SHURU_BUILD_PYTHON_VERBOSE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this variable enabled, you’ll get detailed output during the build, making it easier to troubleshoot if anything goes wrong.&lt;/p&gt;

&lt;h3&gt;
  
  
  What About Node.js?
&lt;/h3&gt;

&lt;p&gt;Python isn’t the only language Shuru supports. It still manages your Node.js versions in the same way, so you can seamlessly switch between environments for different projects. Shuru makes it easy to configure both in a single file, ensuring you’re always running the correct versions for your applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;This addition makes Shuru a more versatile tool for developers who work in both JavaScript and Python. Managing your development environment should be straightforward, and Shuru aims to simplify that process. &lt;/p&gt;

&lt;p&gt;Check out the latest version on &lt;a href="https://github.com/harshdoesdev/shuru" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and start integrating Python management into your workflow. Happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>python</category>
      <category>beginners</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Shuru: A Simple Task Runner with Built-in Node Version Management</title>
      <dc:creator>Harsh Singh</dc:creator>
      <pubDate>Sat, 28 Sep 2024 19:11:26 +0000</pubDate>
      <link>https://dev.to/harshthedev/shuru-a-simple-task-runner-with-built-in-node-version-management-fam</link>
      <guid>https://dev.to/harshthedev/shuru-a-simple-task-runner-with-built-in-node-version-management-fam</guid>
      <description>&lt;p&gt;Alright, you’ve got projects to run, Node versions to switch between, and tasks to automate. You don’t want a bloated tool or to keep bouncing between &lt;code&gt;nvm&lt;/code&gt; and npm scripts. &lt;strong&gt;Shuru&lt;/strong&gt; is here to simplify all that: a task runner with a built-in node version manager. It’s lightweight, written in Rust, and gets out of your way while making sure your tasks run smoothly.&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s Shuru?
&lt;/h3&gt;

&lt;p&gt;Shuru does two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Manages Node.js versions&lt;/strong&gt; per project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runs project-specific tasks&lt;/strong&gt; defined in a simple config file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s it. No fancy features you’ll never use. It’s focused on making your workflow simpler by handling the stuff that’s usually a pain when switching projects — like making sure you're on the right version of Node and running the same commands every time.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Install
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Linux/macOS
&lt;/h4&gt;

&lt;p&gt;Installation is super easy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; https://raw.githubusercontent.com/harshdoesdev/shuru/main/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Windows
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Head over to the &lt;a href="https://github.com/harshdoesdev/shuru/releases" rel="noopener noreferrer"&gt;Shuru GitHub releases&lt;/a&gt; page.&lt;/li&gt;
&lt;li&gt;Download the Windows executable.&lt;/li&gt;
&lt;li&gt;Add it to your system's &lt;code&gt;PATH&lt;/code&gt; for easy access.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s it. You’re set up.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Shuru
&lt;/h3&gt;

&lt;p&gt;You define your tasks and node version in a &lt;code&gt;shuru.toml&lt;/code&gt; file at the root of your project. Here’s a basic example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[versions]&lt;/span&gt;
&lt;span class="py"&gt;node&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"v16.14.0"&lt;/span&gt;

&lt;span class="nn"&gt;[[task]]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"setup"&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"npm install"&lt;/span&gt;

&lt;span class="nn"&gt;[[task]]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"dev"&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"npm run dev"&lt;/span&gt;

&lt;span class="nn"&gt;[[task]]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"build"&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"npm run build"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shuru will make sure you’re using the specified Node.js version (&lt;code&gt;v16.14.0&lt;/code&gt; in this case) and run the tasks like &lt;code&gt;npm install&lt;/code&gt; or &lt;code&gt;npm run dev&lt;/code&gt; with a single command.&lt;/p&gt;

&lt;h3&gt;
  
  
  Running Tasks
&lt;/h3&gt;

&lt;p&gt;Once your &lt;code&gt;shuru.toml&lt;/code&gt; file is ready, you can run any task with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;shuru &amp;lt;task_name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;shuru setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shuru will switch to the correct Node.js version (if necessary) and run the command &lt;code&gt;npm install&lt;/code&gt;. Want to check the Node version your project is using? Just add this to your &lt;code&gt;shuru.toml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[[task]]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"version"&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"node --version"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;shuru version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shuru will switch to the right version of Node and give you the info in one go.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-World Example
&lt;/h3&gt;

&lt;p&gt;Let’s say you’ve got a project that needs Node.js &lt;code&gt;v18.5.0&lt;/code&gt;. You want to install dependencies, run tests, build the project, and start the dev server. Here’s what your &lt;code&gt;shuru.toml&lt;/code&gt; might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[versions]&lt;/span&gt;
&lt;span class="py"&gt;node&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"v18.5.0"&lt;/span&gt;

&lt;span class="nn"&gt;[[task]]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"setup"&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"npm install"&lt;/span&gt;

&lt;span class="nn"&gt;[[task]]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"test"&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"npm run test"&lt;/span&gt;

&lt;span class="nn"&gt;[[task]]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"build"&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"npm run build"&lt;/span&gt;

&lt;span class="nn"&gt;[[task]]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"start"&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"npm start"&lt;/span&gt;
&lt;span class="py"&gt;default&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, instead of manually running these commands or worrying about Node versions, you can just do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;shuru setup    &lt;span class="c"&gt;# Installs dependencies&lt;/span&gt;
shuru &lt;span class="nb"&gt;test&lt;/span&gt;     &lt;span class="c"&gt;# Runs tests&lt;/span&gt;
shuru build    &lt;span class="c"&gt;# Builds the project&lt;/span&gt;
shuru          &lt;span class="c"&gt;# Defaults to starting the server&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shuru ensures the right Node version is active for every command without you having to think about it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Shuru?
&lt;/h3&gt;

&lt;p&gt;Shuru is all about simplicity and focus. It doesn’t try to replace task runners like Gulp or npm scripts. Instead, it’s a lightweight tool that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manages your Node versions.&lt;/li&gt;
&lt;li&gt;Automates running project-specific tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing more, nothing less. If you want something that just works, Shuru is for you. Check it out on &lt;a href="https://github.com/harshdoesdev/shuru" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; and see if it fits your workflow. &lt;/p&gt;

&lt;p&gt;Give it a shot, contribute if you want, and simplify the way you run tasks across projects.&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Meet RayQL - A Schema and Query Language for Your SQLite Side Projects</title>
      <dc:creator>Harsh Singh</dc:creator>
      <pubDate>Tue, 30 Apr 2024 18:02:58 +0000</pubDate>
      <link>https://dev.to/harshthedev/meet-rayql-a-schema-and-query-language-for-your-sqlite-side-projects-33ib</link>
      <guid>https://dev.to/harshthedev/meet-rayql-a-schema-and-query-language-for-your-sqlite-side-projects-33ib</guid>
      <description>&lt;p&gt;Let's be real, as developers, we've all spent way too much time setting up backends, writing validation schemas, and reinventing the wheel for common tasks when working on side projects. It's a massive time sink that takes away from the actual fun of building something new.&lt;/p&gt;

&lt;p&gt;That's why I created &lt;a href="https://github.com/harshdoesdev/rayql"&gt;RayQL&lt;/a&gt;, a schema definition and query language for SQLite, built with Rust. The core goal is to provide a compact and familiar syntax that eliminates the need to reinvent the wheel for data validation, allowing you to quickly prototype and build backends without juggling multiple components. With RayQL, everything you need lives in a single executable, which makes it super-easy to get started on your side projects.&lt;/p&gt;

&lt;p&gt;RayQL gives superpowers to SQLite by providing built-in validation functions (more on that in future releases) and everything you need for building SQLite-based backends. It's designed specifically for side projects, where you want to focus on your core idea rather than getting bogged down by redundant tasks.&lt;/p&gt;

&lt;p&gt;One of the main pain points when working with databases is defining models and setting up relationships. RayQL makes this process a walk in the park:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Enum for user types
enum user_type {
  admin
  developer
  normal
}

# Model for 'user'
model user {
  id: int primary_key auto_increment,
  username: str unique,
  email: str unique,
  phone_number: str?,
  user_type: user_type default(user_type.normal)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No more dealing with string literals for enums or forgetting to set default values. It just works.&lt;/p&gt;

&lt;p&gt;Let's say you want to create a &lt;code&gt;post&lt;/code&gt; model with a foreign key relationship to the &lt;code&gt;user&lt;/code&gt; model. With RayQL, it's as simple as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;model post {
  id: int primary_key auto_increment,
  title: str default('New Post'),
  content: str,
  author_id: int foreign_key(user.id),
  created_at: timestamp default(now()),
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yup, that's it. No more jumping through hoops to set up foreign keys or default values.&lt;/p&gt;

&lt;p&gt;You can try out RayQL right now using the online editor – &lt;a href="https://harshdoesdev.github.io/rayql-studio"&gt;RayQL Studio&lt;/a&gt;, or install it locally using this simple command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; https://raw.githubusercontent.com/harshdoesdev/rayql/main/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;RayQL is an open-source project, so feel free to contribute, report issues, or propose new features on the &lt;a href="https://github.com/harshdoesdev/rayql"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The team has some exciting plans for the future, including automatic TypeScript type generation (coming in the &lt;code&gt;0.2&lt;/code&gt; release) and support for writing database queries using the RayQL syntax.&lt;/p&gt;

&lt;p&gt;So, if you're tired of spending more time on the backend than the actual project, give RayQL a try. It might just be the superpower you need to focus on what really matters – bringing your ideas to life.&lt;/p&gt;

</description>
      <category>sqlite</category>
      <category>rust</category>
      <category>dsl</category>
      <category>parser</category>
    </item>
  </channel>
</rss>
