<?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: Buvaneshwaran </title>
    <description>The latest articles on DEV Community by Buvaneshwaran  (@buvanesh).</description>
    <link>https://dev.to/buvanesh</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%2F1451013%2F675db00b-9625-42cf-b618-6b6744b762a9.png</url>
      <title>DEV Community: Buvaneshwaran </title>
      <link>https://dev.to/buvanesh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/buvanesh"/>
    <language>en</language>
    <item>
      <title>Vibe Coding: My Daily Workflow with Claude Code</title>
      <dc:creator>Buvaneshwaran </dc:creator>
      <pubDate>Tue, 26 May 2026 06:42:11 +0000</pubDate>
      <link>https://dev.to/buvanesh/vibe-coding-my-daily-workflow-with-claude-code-2pkg</link>
      <guid>https://dev.to/buvanesh/vibe-coding-my-daily-workflow-with-claude-code-2pkg</guid>
      <description>&lt;p&gt;This isn't a tutorial or hype piece. These are insights into how I use vibe coding efficiently in my actual work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Before you start: Is vibe coding right for this project?
&lt;/h3&gt;

&lt;p&gt;If you are using a local LLM, go ahead. If you're using commercial tools like Claude or Codex, check first, whether this project can be developed with vibe coding. It's upto client's call. &lt;/p&gt;

&lt;p&gt;No approval? Build it yourself. &lt;br&gt;
Client approves? Then you're good to proceed.&lt;/p&gt;

&lt;p&gt;I'll break this into three scenarios:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A project from scratch&lt;/li&gt;
&lt;li&gt;Core/major features&lt;/li&gt;
&lt;li&gt;Small bugfixes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;I'm assuming Claude Code for vibe coding throughout.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My standard approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Skills to organize context&lt;/li&gt;
&lt;li&gt;@ mentions for file references&lt;/li&gt;
&lt;li&gt;Esc to interrupt when needed&lt;/li&gt;
&lt;li&gt;Plan mode for decisions&lt;/li&gt;
&lt;li&gt;Session management and renaming&lt;/li&gt;
&lt;li&gt;Hooks to protect sensitive files&lt;/li&gt;
&lt;li&gt;Manual commands&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. Project from Scratch
&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%2F3sjyv56dbttekfhvgc6p.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%2F3sjyv56dbttekfhvgc6p.png" alt="Planning the project with AI vibe coding" width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most people say: &lt;em&gt;"Use AI for planning from the start because initial setup is critical."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I disagree. Initial setup is too critical to skip.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I write my own plan first, based on the requirements. I also document the requirements it in &lt;code&gt;claude.md&lt;/code&gt; or a separate skill depending on what I need. Then I ask Claude to create a plan in plan mode, and we compare. &lt;br&gt;
I research the AI's suggestions, question them, and decide to go with either mine, theirs, or merge both.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Core Feature
&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%2Fccvyrehcxj2wlyrsbxtw.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%2Fccvyrehcxj2wlyrsbxtw.png" alt="working on the feature with vibe coding" width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Same process. plan debate with Claude, create a new skill for the output. &lt;br&gt;
I use separate skills to save tokens and avoid hallucination.&lt;br&gt;
Once we agree on the plan, I tell Claude to proceed, but I stay hands-on. I interrupt and ask why before accepting any change which I don't fully understand. If I disagree, I propose my approach instead.&lt;br&gt;
This prevents sloppy code and keeps token usage down&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Bugfixes
&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%2Fkw13w8t31568d3hs4lce.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%2Fkw13w8t31568d3hs4lce.png" alt="Proper bug fixing with Vibe Coding" width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It depends on the bug.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simple bugs&lt;/strong&gt;: 
I will try to identify and fix them myself. In edge cases will go with AI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complex bugs&lt;/strong&gt;: 
I ask Claude to find the cause and report back, not to fix. I validate the diagnosis on my end, plan a fix, then ask Claude to implement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If I can't figure it out&lt;/strong&gt;: 
Then Claude fixes it with my manual approvals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token-saving trick&lt;/strong&gt;: 
I Don't paste the entire error traceback. Copy the core exception and the line number where it happened. Share that. I'll get faster, more accurate responses with half the tokens.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it. No magic, no shortcuts. just staying in control while letting AI handle the heavy lifting&lt;/p&gt;

</description>
      <category>ai</category>
      <category>vibecoding</category>
      <category>programming</category>
      <category>claude</category>
    </item>
    <item>
      <title>From Rails to Django: Bringing Rails Magic into Django Development (Part 1)</title>
      <dc:creator>Buvaneshwaran </dc:creator>
      <pubDate>Sun, 27 Apr 2025 15:12:07 +0000</pubDate>
      <link>https://dev.to/buvanesh/from-rails-to-django-bringing-rails-magic-into-django-development-part-1-24o8</link>
      <guid>https://dev.to/buvanesh/from-rails-to-django-bringing-rails-magic-into-django-development-part-1-24o8</guid>
      <description>&lt;p&gt;I’ve been working with Ruby on Rails for a long time, and honestly, it always felt like pure magic.&lt;/p&gt;

&lt;p&gt;Rails' elegance, its conventions, the way things just worked with minimal setup. It made development fast and enjoyable.&lt;/p&gt;

&lt;p&gt;Recently, I wanted to work with Django (Python’s popular web framework). Especially because of the growing interest in Python and AI.&lt;br&gt;
But when I started, I really missed the convenience and flow that Rails gave me.&lt;/p&gt;

&lt;p&gt;So, I started exploring:&lt;br&gt;
&lt;strong&gt;How can we get that Rails-like magic in Django too?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s take a look 👇&lt;/p&gt;
&lt;h2&gt;
  
  
  Serializers — Handling Data Representation
&lt;/h2&gt;

&lt;p&gt;In Rails, we use serializers to control how our model data looks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# app/serializers/post_serializer.rb
class PostSerializer &amp;lt; ActiveModel::Serializer
  attributes :id, :title, :content
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Django, it's similar using Django REST Framework:&lt;br&gt;
First, install the &lt;code&gt;djangorestframework&lt;/code&gt; package&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip install djangorestframework&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# serializers.py
from rest_framework import serializers
from .models import Post

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = ['id', 'title', 'content']
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And how to call those serializers?!. &lt;br&gt;
No worries, we going to see in upcoming.😎&lt;/p&gt;
&lt;h2&gt;
  
  
  Controllers and Views — Managing Requests
&lt;/h2&gt;

&lt;p&gt;In Rails, we use controllers like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# app/controllers/posts_controller.rb
class PostsController &amp;lt; ApplicationController
  def index
    @posts = Post.all
    render json: @posts
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Django, you can use &lt;strong&gt;ViewSets&lt;/strong&gt; to do the same:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# views.py
from rest_framework import viewsets
from .models import Post
from .serializers import PostSerializer

class PostViewSet(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Auto CRUD — no manual GET, POST, PUT handling! 😃&lt;/p&gt;

&lt;h2&gt;
  
  
  Routing — Clean and Automatic
&lt;/h2&gt;

&lt;p&gt;In Rails, adding routes is super simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# config/routes.rb
resources :posts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Django, you can achieve the same using &lt;strong&gt;DRF’s routers&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# urls.py
from rest_framework.routers import DefaultRouter
from .views import PostViewSet

router = DefaultRouter()
router.register(r'posts', PostViewSet, basename='post')

urlpatterns = router.urls

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resourceful routes with a few lines! ✌️&lt;/p&gt;

&lt;h2&gt;
  
  
  Callbacks — Hooking into Model Events
&lt;/h2&gt;

&lt;p&gt;In Rails&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Post &amp;lt; ApplicationRecord
  before_save :capitalize_title
end

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Django (with signals):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django.db.models.signals import pre_save
from django.dispatch import receiver

@receiver(pre_save, sender=Post)
def capitalize_title(sender, instance, **kwargs):
    instance.title = instance.title.capitalize()

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅Behavior before/after saving models — sorted!&lt;/p&gt;

&lt;h2&gt;
  
  
  Validations — Ensuring Data Integrity
&lt;/h2&gt;

&lt;p&gt;In Rails&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Post &amp;lt; ApplicationRecord
  validates :title, presence: true
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Django&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=100)

    def clean(self):
        if not self.title:
            raise ValidationError('Title cannot be empty')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Django models come with built-in validation hooks.&lt;br&gt;
(Also, Django’s CharField automatically validates max_length like Rails does!)&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;Even though Rails and Django have different styles, you can recreate almost all of Rails' magic in Django — once you know where to look!&lt;/p&gt;

&lt;p&gt;From &lt;strong&gt;serializers, viewsets, routers, callbacks, validations&lt;/strong&gt;, and beyond — Django can feel just as developer-friendly as Rails.&lt;/p&gt;

&lt;p&gt;And this is just the beginning!&lt;/p&gt;

&lt;p&gt;In upcoming parts, we'll dive deeper into topics like building APIs, authentication, background jobs, and more.&lt;/p&gt;

&lt;p&gt;Stay tuned for Part 2! 🚀&lt;/p&gt;

</description>
      <category>rails</category>
      <category>ruby</category>
      <category>django</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
