<?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: Aleksey Razbakov</title>
    <description>The latest articles on DEV Community by Aleksey Razbakov (@razbakov).</description>
    <link>https://dev.to/razbakov</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%2F45832%2F799f8750-6bcd-4507-b69f-16f687eed44f.jpeg</url>
      <title>DEV Community: Aleksey Razbakov</title>
      <link>https://dev.to/razbakov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/razbakov"/>
    <language>en</language>
    <item>
      <title>I Built an Executive Team of 6 AI Agents to Manage My 15 Side Projects</title>
      <dc:creator>Aleksey Razbakov</dc:creator>
      <pubDate>Tue, 24 Mar 2026 19:23:52 +0000</pubDate>
      <link>https://dev.to/razbakov/i-built-an-executive-team-of-6-ai-agents-to-manage-my-15-side-projects-4k0i</link>
      <guid>https://dev.to/razbakov/i-built-an-executive-team-of-6-ai-agents-to-manage-my-15-side-projects-4k0i</guid>
      <description>&lt;p&gt;I have 15 active side projects and a full-time engineering job.&lt;/p&gt;

&lt;p&gt;The math doesn't work — unless you delegate.&lt;/p&gt;

&lt;p&gt;So I built an executive team of 6 AI agents. Each one has their own domain, personality, and skill set. I call it my &lt;strong&gt;Executive Cabinet&lt;/strong&gt;.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  The Team
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Domain&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Maya&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Chief of Staff&lt;/td&gt;
&lt;td&gt;Daily reviews, inbox triage, task routing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Viktor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;CTO&lt;/td&gt;
&lt;td&gt;Code review, PRs, architecture decisions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Luna&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Content &amp;amp; Growth&lt;/td&gt;
&lt;td&gt;Blog posts, social media, SEO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Marco&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Strategy &amp;amp; Business&lt;/td&gt;
&lt;td&gt;Ideas to plans, hypothesis validation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Personal Coach&lt;/td&gt;
&lt;td&gt;Life balance, reflection, goal tracking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Kai&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Community &amp;amp; Partnerships&lt;/td&gt;
&lt;td&gt;CRM, networking, follow-ups&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  My Role as Commander
&lt;/h2&gt;

&lt;p&gt;I focus on four things only:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Strategic decisions&lt;/strong&gt; — what to build, what to kill&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Being the face&lt;/strong&gt; — presentations, networking, relationships&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Building relationships&lt;/strong&gt; — partnerships, collaborations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validating ideas&lt;/strong&gt; — testing hypotheses with real users&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything else is delegated. Coding, inbox processing, blog posts, goal tracking, competitor research — all agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works in Practice
&lt;/h2&gt;

&lt;p&gt;I send a message (usually via Telegram). Maya triages it by domain and routes to the right agent.&lt;/p&gt;

&lt;p&gt;A typical day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Morning&lt;/strong&gt;: Maya + Sage run daily review and set priorities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Midday&lt;/strong&gt;: Viktor reviews PRs, Luna drafts content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evening&lt;/strong&gt;: Maya generates a report, Marco checks weekly goals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each agent runs in its own tmux session with an isolated git worktree. They deliver pull requests, not just local commits. Everything is reviewable.&lt;/p&gt;

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

&lt;p&gt;Nothing proprietary. No custom platform.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; (Opus) — the brain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Markdown files&lt;/strong&gt; — skill definitions, prompts, context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git worktrees&lt;/strong&gt; — isolation per agent task&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tmux&lt;/strong&gt; — parallel agent sessions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notion&lt;/strong&gt; — Kanban board for tracking&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Telegram&lt;/strong&gt; — input interface&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Governance: Sociocracy 3.0
&lt;/h2&gt;

&lt;p&gt;The team follows S3 patterns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clear domains&lt;/strong&gt; — each agent owns a specific area&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consent-based decisions&lt;/strong&gt; — no one overrides another's domain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Driver-based work&lt;/strong&gt; — every task starts with "why" (tension → driver → requirement → response)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accountability&lt;/strong&gt; — agents must deliver PRs, not just status updates&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agents need structure, not freedom.&lt;/strong&gt; Vague prompts produce vague results. Each agent has a detailed skill file with step-by-step processes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fire-and-forget beats micromanagement.&lt;/strong&gt; I dispatch tasks and check results later via a &lt;code&gt;/scrum&lt;/code&gt; command that reads all agent logs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The inbox pattern is everything.&lt;/strong&gt; One command (&lt;code&gt;/inbox: &amp;lt;task&amp;gt;&lt;/code&gt;) creates a worktree, writes a prompt, launches in tmux, and logs everything for retry.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Personality matters.&lt;/strong&gt; Giving agents names and domains isn't just fun — it creates clear routing and accountability.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;p&gt;The whole system runs on Claude Code with markdown skill files. No special infrastructure needed. Start with one agent (a Chief of Staff for daily reviews) and expand from there.&lt;/p&gt;

&lt;p&gt;The 7-minute video above walks through the full setup, presented from my Apple Vision Pro workspace.&lt;/p&gt;




&lt;p&gt;What's your approach to managing multiple projects with AI? I'd love to hear how others are doing this.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>claudecode</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>I Asked AI "Why Do I Exist?" — Here's What Happened</title>
      <dc:creator>Aleksey Razbakov</dc:creator>
      <pubDate>Fri, 20 Mar 2026 20:52:01 +0000</pubDate>
      <link>https://dev.to/razbakov/i-asked-ai-why-do-i-exist-heres-what-happened-355a</link>
      <guid>https://dev.to/razbakov/i-asked-ai-why-do-i-exist-heres-what-happened-355a</guid>
      <description>&lt;p&gt;I'm a software engineer with a full-time job, five side projects, and zero clarity on which one matters. I've been building apps for dancers, teaching salsa on Sundays, experimenting with a budgeting app, thinking about an online academy, and running an AI study group — all at the same time.&lt;/p&gt;

&lt;p&gt;None of them make money. None of them are validated. And I'm trading my time for a salary at a job where someone else decides my future.&lt;/p&gt;

&lt;p&gt;So I did something unusual. I opened a terminal, typed one command, and had a two-hour conversation with AI that changed how I think about my life.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Why does this project need to exist?"
&lt;/h2&gt;

&lt;p&gt;That was the first question. Not "what are you building?" or "who's your target market?" — but &lt;em&gt;why does this need to exist at all?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I wasn't expecting that. I sat there for a moment and then typed something I'd never said out loud:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This project is about why I exist. This is basically my ikigai. My goal is to find the reason for why I exist. What is my purpose?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I'd been telling people I was building apps. But what I was really doing was searching for meaning. The AI just made me say it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Legacy through usefulness
&lt;/h2&gt;

&lt;p&gt;The next question hit harder: &lt;em&gt;If this succeeds, what does your life look like?&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I want to be useful. Create an app that someone is using and they find helpful. Teaching someone something so that maybe after I die people still remember and find it useful.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not fame. Not wealth. Usefulness that outlives me. I'm an engineer — that means building something that works and matters. An app, a lesson, a tool. Something that people remember not because of marketing, but because it was genuinely helpful.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hypothesis
&lt;/h2&gt;

&lt;p&gt;Then something clicked. The AI took everything I said — the five projects, the full-time job, the desire for independence — and distilled it into one sentence:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If I systematically validate which of my projects can generate enough value that people happily pay for it, then I can replace my employment income with my own products and live on my own terms.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My answer: "yes."&lt;/p&gt;

&lt;p&gt;That's it. That's the whole bet. Not "build all five projects." Not "quit your job." Just: find the one thing people will pay for, and go all in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real deadlines change everything
&lt;/h2&gt;

&lt;p&gt;Right after that crystallized, I mentioned something I'd been sitting on:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Next week there is a festival. The goal is to test the hypothesis... people would pay one euro. Also I found a partner — he has 500,000 followers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AI's response was immediate: &lt;em&gt;This changes everything. You have a deadline, a price hypothesis, a distribution channel, and a partnership deal.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It was right. I'd been treating my side projects like hobbies — no deadlines, no accountability, no skin in the game. But suddenly I had all three. A festival in Vienna called Meneate. A price: one euro per festival. A partner with half a million followers on Social Dance TV. And about seven days to make it work.&lt;/p&gt;

&lt;h2&gt;
  
  
  "That's a chief of staff role"
&lt;/h2&gt;

&lt;p&gt;The conversation shifted from &lt;em&gt;what&lt;/em&gt; to &lt;em&gt;how&lt;/em&gt;. I told the AI what I actually needed help with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I need an assistant to help me organizing things, starting projects, define personal OKRs, plan week and day, manage calendar, check emails...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It didn't try to do all of that itself. Instead, it named the role: &lt;em&gt;That's a chief of staff.&lt;/em&gt; And then it proposed a system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Daily check-in&lt;/strong&gt; at 9:00 AM — what's on today, what are the priorities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weekly review&lt;/strong&gt; on Saturday — what happened, what didn't&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weekly planning&lt;/strong&gt; right after — what's next week&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simple rituals. Not a fancy productivity system. Just three recurring moments where someone asks: &lt;em&gt;are you working on what matters?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We set them up in Google Calendar right there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two AIs, one life OS
&lt;/h2&gt;

&lt;p&gt;Here's where it got weird — in a good way.&lt;/p&gt;

&lt;p&gt;I have another AI tool installed called OpenClaw. It runs locally, connects to my messaging apps, and can actually ping me proactively. Claude Code (the AI I was talking to) can't do that — it only works when I start a session.&lt;/p&gt;

&lt;p&gt;So I asked: &lt;em&gt;Can you become OpenClaw?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The answer was elegant: don't merge them. Make them share the same source of truth. OpenClaw handles the proactive layer — reminders, nudges, background checks. Claude Code handles the deep work — strategy, coding, planning. Both read from the same project directory. Both know my priorities, my calendar, my open questions.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The bridge is the shared project directory — both AIs read the same source of truth.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One life OS. Two AI systems. Each doing what it's best at.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I actually learned
&lt;/h2&gt;

&lt;p&gt;This wasn't a conversation about technology. It was a conversation about clarity.&lt;/p&gt;

&lt;p&gt;In two hours, I went from "I have five projects and no plan" to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A mission&lt;/strong&gt;: create tools and knowledge that outlive me&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A hypothesis&lt;/strong&gt;: find the one project people will pay for&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A test&lt;/strong&gt;: one euro at a dance festival, with a real partner and a real deadline&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A system&lt;/strong&gt;: daily check-ins, weekly reviews, calendar-driven accountability&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An architecture&lt;/strong&gt;: two AI systems sharing one source of truth&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of this required code. It required someone (something?) that asked the right questions and didn't let me hide behind busy work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The ikigai way
&lt;/h2&gt;

&lt;p&gt;The Japanese concept of ikigai sits at the intersection of what you love, what the world needs, what you can be paid for, and what you're good at. I've known this framework for years. But knowing it and &lt;em&gt;using it&lt;/em&gt; are different things.&lt;/p&gt;

&lt;p&gt;What made this conversation different was that the AI didn't just ask me to fill in a Venn diagram. It made me articulate my answers in my own words. It challenged my assumptions. It connected dots I hadn't connected. And then it helped me build the infrastructure to actually follow through.&lt;/p&gt;

&lt;p&gt;That's the ikigai way I'm trying to practice: not just thinking about purpose, but systematically testing it against reality.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;I'm heading to the Meneate festival in Vienna. Fifty dancers. One euro each. A partner with 500,000 followers. And one question: &lt;em&gt;will they pay?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If yes, I have a business. If no, I have data.&lt;/p&gt;

&lt;p&gt;Either way, I'm no longer just thinking about it.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Cool!</title>
      <dc:creator>Aleksey Razbakov</dc:creator>
      <pubDate>Thu, 01 May 2025 11:48:30 +0000</pubDate>
      <link>https://dev.to/razbakov/cool-310e</link>
      <guid>https://dev.to/razbakov/cool-310e</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/arindam_1729/i-built-an-mcp-server-for-devto-100-open-source-4f6n" class="crayons-story__hidden-navigation-link"&gt;I Built an MCP Server for DevTo (100% Open Source)🎉&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="/arindam_1729" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F965723%2Fe0982512-4de1-4154-b3c3-1869d19e9ecc.png" alt="arindam_1729 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/arindam_1729" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Arindam Majumder 
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Arindam Majumder 
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-2439179" 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="/arindam_1729" 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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F965723%2Fe0982512-4de1-4154-b3c3-1869d19e9ecc.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Arindam Majumder &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/arindam_1729/i-built-an-mcp-server-for-devto-100-open-source-4f6n" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 28 '25&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/arindam_1729/i-built-an-mcp-server-for-devto-100-open-source-4f6n" id="article-link-2439179"&gt;
          I Built an MCP Server for DevTo (100% Open Source)🎉
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mcp"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mcp&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devto"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devto&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/python"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;python&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/arindam_1729/i-built-an-mcp-server-for-devto-100-open-source-4f6n" 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/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&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 class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;270&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/arindam_1729/i-built-an-mcp-server-for-devto-100-open-source-4f6n#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              49&lt;span class="hidden s:inline"&gt; comments&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;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

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

&lt;/div&gt;


</description>
      <category>mcp</category>
      <category>devto</category>
      <category>python</category>
      <category>opensource</category>
    </item>
    <item>
      <title>AI-First Organization</title>
      <dc:creator>Aleksey Razbakov</dc:creator>
      <pubDate>Fri, 10 Jan 2025 20:08:38 +0000</pubDate>
      <link>https://dev.to/razbakov/ai-first-organization-2cf7</link>
      <guid>https://dev.to/razbakov/ai-first-organization-2cf7</guid>
      <description>&lt;p&gt;Imagine having a personal secretary that's available 24/7, understands your business inside and out, and seamlessly manages everything from documentation to team coordination. That's exactly what the AI Secretary project brings to the table!&lt;/p&gt;

&lt;h2&gt;
  
  
  🌟 What Makes It Special?
&lt;/h2&gt;

&lt;p&gt;The AI Secretary is a groundbreaking project that transforms how teams work by providing an AI-first organizational experience. Built on top of the powerful Cursor IDE, it offers a suite of intelligent experts ready to assist with various aspects of your business. This project builds upon the principles outlined in our &lt;a href="https://razbakov.com/blog/2025-01-08-multi-agent" rel="noopener noreferrer"&gt;Building Effective Multi-Agent AI Systems&lt;/a&gt; guide and implements them using the &lt;a href="https://razbakov.com/blog/2025-01-09-architect-ai-framework" rel="noopener noreferrer"&gt;Architect framework&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📋 &lt;strong&gt;Personal Secretary&lt;/strong&gt;: Handles daily check-ins, tracks decisions, and guides your next steps&lt;/li&gt;
&lt;li&gt;💼 &lt;strong&gt;Business Expert&lt;/strong&gt;: Provides insights on strategy, partnerships, and resource allocation&lt;/li&gt;
&lt;li&gt;👥 &lt;strong&gt;Community Expert&lt;/strong&gt;: Manages events and community engagement&lt;/li&gt;
&lt;li&gt;🛠️ &lt;strong&gt;Product Expert&lt;/strong&gt;: Offers technical guidance and architecture decisions&lt;/li&gt;
&lt;li&gt;📚 &lt;strong&gt;Documentation Manager&lt;/strong&gt;: Keeps all documentation in sync automatically&lt;/li&gt;
&lt;li&gt;🔄 &lt;strong&gt;Version Control&lt;/strong&gt;: Manages your commits with smart, descriptive messages&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No Ticketing System Needed&lt;/strong&gt;: The AI intelligently manages priorities and tells you what to do next&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Onboarding&lt;/strong&gt;: Personalizes the experience based on your role and team&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple Expert Roles&lt;/strong&gt;: Switch between different AI experts based on your current needs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Documentation&lt;/strong&gt;: Keeps everything in sync without manual intervention&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intelligent Decision Tracking&lt;/strong&gt;: Never lose track of important decisions and their context, similar to our &lt;a href="https://razbakov.com/blog/2025-01-07-personal-life-management-system" rel="noopener noreferrer"&gt;Personal Life Management System&lt;/a&gt; approach&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎯 Perfect For
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Startups looking to stay lean and efficient&lt;/li&gt;
&lt;li&gt;Teams transitioning to AI-first workflows&lt;/li&gt;
&lt;li&gt;Organizations wanting to reduce administrative overhead&lt;/li&gt;
&lt;li&gt;Anyone seeking a more intelligent way to manage projects&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🏃‍♂️ How to Get Started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Visit &lt;a href="https://github.com/razbakov/ai-secretary/" rel="noopener noreferrer"&gt;https://github.com/razbakov/ai-secretary/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Clone the repository&lt;/li&gt;
&lt;li&gt;Open it in &lt;a href="https://www.cursor.com/" rel="noopener noreferrer"&gt;Cursor IDE&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Configure &lt;strong&gt;Claude 3 Sonnet&lt;/strong&gt; in Cursor settings&lt;/li&gt;
&lt;li&gt;Say "hi" to start your personalized onboarding&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  💡 The Future of Work
&lt;/h2&gt;

&lt;p&gt;This isn't just another productivity tool – it's a glimpse into the future of how teams will work. By combining AI expertise across multiple domains with seamless integration into your development workflow, AI Secretary represents a new paradigm in team organization and productivity. It builds upon our experience with &lt;a href="https://razbakov.com/blog/2025-01-08-multi-agent" rel="noopener noreferrer"&gt;multi-agent systems&lt;/a&gt; and the robust architecture of the &lt;a href="https://razbakov.com/blog/2025-01-09-architect-ai-framework" rel="noopener noreferrer"&gt;Architect framework&lt;/a&gt;, while incorporating the systematic approach of our &lt;a href="https://razbakov.com/blog/2025-01-07-personal-life-management-system" rel="noopener noreferrer"&gt;Personal Life Management System&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Ready to revolutionize your workflow? &lt;a href="https://github.com/razbakov/ai-secretary/" rel="noopener noreferrer"&gt;Try AI Secretary today&lt;/a&gt; and experience the future of team organization!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>My Journey with AI Agents: Revolutionizing WeDance Development 🚀</title>
      <dc:creator>Aleksey Razbakov</dc:creator>
      <pubDate>Sat, 04 Jan 2025 18:16:44 +0000</pubDate>
      <link>https://dev.to/razbakov/my-journey-with-ai-agents-revolutionizing-wedance-development-5a5</link>
      <guid>https://dev.to/razbakov/my-journey-with-ai-agents-revolutionizing-wedance-development-5a5</guid>
      <description>&lt;p&gt;I have worked every day since the musicality festival with Anichi Perez in Freiburg on the new concept of &lt;a href="https://t.me/WeDancePlatform" rel="noopener noreferrer"&gt;WeDance&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I couldn't even sleep. And it was an impressive journey as I was not alone. The team of AI agents was helping me. I never had anything like this since I played video games when I was younger. Even Netflix is not so much fun, where you just observe but don't really participate.&lt;/p&gt;

&lt;p&gt;I was so hooked! I felt so powerful, like a CEO of a big corporation or even a president. It was so difficult to take any breaks like eating or even the toilet. For the last few days I am going to sleep in the morning... 8am... 10am... Waking up and back to work. 24h a day is not enough.&lt;/p&gt;

&lt;p&gt;I think I discovered a new way of working with AI. Outstanding results! Imagine you are doing design, what's the most difficult part? Finding inspirations, lightning demos and alternative solutions. And you need an enormous amount of time for that, and good sources and libraries. Same for marketing, product development, coding. With Claude I get 10 alternative best of the best solutions in seconds! That's a game changer! All I need to do is to decide which option is better. Also not necessarily, I can also ask it to choose and explain.&lt;/p&gt;

&lt;p&gt;I am an expert in code, but not an expert in a lot of areas. Now it's not a problem anymore. I have a team of experts who are never tired and super cheap. And they won't get pissed off by anything. I can ask stupid questions. I can get emotional. Doesn't matter. There were a few funny moments, in our conversations. I laughed a lot. I will share them in my channel.&lt;/p&gt;

&lt;p&gt;I am planning to shoot a series of YouTube videos about my newly discovered way of working with AI. You can either send me a list of your questions and I will make a video answer, or we have a recorded video call and do it live together. All videos I will post in my channel.&lt;/p&gt;

&lt;p&gt;Now back to WeDance. A team of AI expert agents in &lt;a href="https://www.cursor.com/" rel="noopener noreferrer"&gt;Cursor AI&lt;/a&gt; and me as a decision maker created a new concept of WeDance and now it's time for user testing. We are looking for dancers, organizers, and artists for  interviews. Drop a comment below if you are interested.&lt;/p&gt;

&lt;p&gt;Follow my journey with AI &lt;a href="https://t.me/razbakov" rel="noopener noreferrer"&gt;@razbakov&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>startup</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Git Rebase like a Pro</title>
      <dc:creator>Aleksey Razbakov</dc:creator>
      <pubDate>Wed, 18 Dec 2024 09:06:02 +0000</pubDate>
      <link>https://dev.to/razbakov/git-rebase-like-a-pro-25n3</link>
      <guid>https://dev.to/razbakov/git-rebase-like-a-pro-25n3</guid>
      <description>&lt;p&gt;Jira Release is a CLI tool that helps you compare Jira issues in Git commits against a release plan by pasting Jira release notes directly into the tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extracts Jira issue keys directly from release notes.&lt;/li&gt;
&lt;li&gt;Compares issues against Git commit messages.&lt;/li&gt;
&lt;li&gt;Detects missing and extra Jira issues in the selected branch.&lt;/li&gt;
&lt;li&gt;Simple and user-friendly interactive workflow.&lt;/li&gt;
&lt;li&gt;Supports specifying a custom branch for comparison.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/razbakov/jira-release" rel="noopener noreferrer"&gt;https://github.com/razbakov/jira-release&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devops</category>
      <category>productivity</category>
      <category>github</category>
    </item>
    <item>
      <title>Responsive Images: Best Practices in 2025</title>
      <dc:creator>Aleksey Razbakov</dc:creator>
      <pubDate>Sun, 15 Dec 2024 15:33:00 +0000</pubDate>
      <link>https://dev.to/razbakov/responsive-images-best-practices-in-2025-4dlb</link>
      <guid>https://dev.to/razbakov/responsive-images-best-practices-in-2025-4dlb</guid>
      <description>&lt;p&gt;When designing responsive websites, choosing between &lt;code&gt;max-width&lt;/code&gt; and &lt;code&gt;min-width&lt;/code&gt; in your responsive image setup can influence how your site adapts to different screen sizes. Let's explore the differences, their applications, and which image sizes work best to ensure optimal performance and user experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Max-Width or Min-Width: What’s the Difference?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For &lt;strong&gt;mobile-first&lt;/strong&gt; designs, &lt;code&gt;max-width&lt;/code&gt; tends to be more intuitive since it aligns with CSS conventions for smaller-to-larger progressions. The &lt;strong&gt;&lt;code&gt;max-width&lt;/code&gt; approach&lt;/strong&gt; starts with smaller screens and cascades up.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="n"&gt;sizes&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"
  (max-width: 768px) 100vw,
  50vw
"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For &lt;strong&gt;desktop-first&lt;/strong&gt; designs, &lt;code&gt;min-width&lt;/code&gt; might make more sense as you start with larger screens and adapt downward. The &lt;strong&gt;&lt;code&gt;min-width&lt;/code&gt; approach&lt;/strong&gt; starts with larger screens and cascades down.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="n"&gt;sizes&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"
  (min-width: 1536px) 1536px,
  (min-width: 1280px) 1280px,
  (min-width: 1024px) 1024px,
  (min-width: 768px) 768px,
  100vw
"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Which Should You Use?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Mobile-First Approach (&lt;code&gt;max-width&lt;/code&gt;)&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Best for most projects, aligning with modern design trends where the focus is on smaller screens and scaling up.&lt;/li&gt;
&lt;li&gt;Easier to maintain and test due to the natural progression of styles.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What Image Sizes Should You Use?
&lt;/h3&gt;

&lt;p&gt;Responsive images rely on the &lt;code&gt;srcset&lt;/code&gt; and &lt;code&gt;sizes&lt;/code&gt; attributes to deliver the most appropriate image for each screen size. Here are the recommended image widths to include in your &lt;code&gt;srcset&lt;/code&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Small Screens (Mobile)&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Images around &lt;strong&gt;640px to 768px&lt;/strong&gt; wide work well for most smartphones.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Medium Screens (Tablets)&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use widths between &lt;strong&gt;1024px and 1280px&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Large Screens (Desktops)&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Common widths include &lt;strong&gt;1920px&lt;/strong&gt; and &lt;strong&gt;2560px&lt;/strong&gt; for full-width images.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Biggest Image You Should Generate
&lt;/h3&gt;

&lt;p&gt;While 8K displays have resolutions of &lt;strong&gt;7680x4320 pixels&lt;/strong&gt;, generating images this large is rarely practical for web use.&lt;/p&gt;

&lt;p&gt;Stick to a maximum image size of &lt;strong&gt;2560px&lt;/strong&gt;. This is sufficient for most designs, including Retina screens, without excessive file sizes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Not Always Use the Largest Size?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Larger images increase load times and consume more bandwidth.&lt;/li&gt;
&lt;li&gt;Most users don’t view images at their maximum resolution, even on high-resolution displays. Browsers scale images down, so serving overly large files often wastes resources.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example: Responsive Image Implementation
&lt;/h3&gt;

&lt;p&gt;Here's how to use the &lt;code&gt;srcset&lt;/code&gt; and &lt;code&gt;sizes&lt;/code&gt; attributes to serve responsive images efficiently:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt;
  &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"example-1024.jpg"&lt;/span&gt;
  &lt;span class="na"&gt;srcset=&lt;/span&gt;&lt;span class="s"&gt;"
    example-640.webp 640w,
    example-1024.webp 1024w,
    example-1920.webp 1920w,
    example-2560.webp 2560w,
    example-5120.webp 5120w
  "&lt;/span&gt;
  &lt;span class="na"&gt;sizes=&lt;/span&gt;&lt;span class="s"&gt;"
    (max-width: 640px) 100vw,
    50vw
  "&lt;/span&gt;
  &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"Responsive image example"&lt;/span&gt;
&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;srcset&lt;/strong&gt;: Defines available image sizes in WebP format for better compression and performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;sizes&lt;/strong&gt;: Specifies how much of the viewport the image should occupy at different screen widths.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fallback src&lt;/strong&gt;: Uses image in JPG format to ensure compatibility with browsers that don’t support WebP. Choosing size:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Balanced Dimensions:&lt;/strong&gt; Choose a fallback image size that offers acceptable quality on both small and medium-sized devices. A common recommendation is to use an image around &lt;strong&gt;800px&lt;/strong&gt; wide, as it provides a middle ground suitable for various screen sizes.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoid Extremes:&lt;/strong&gt; Using the smallest image as a fallback can lead to poor visual quality on larger screens, while using the largest image can cause unnecessary data usage and slower load times on smaller devices. Therefore, a mid-sized image is often the most practical choice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consider Aspect Ratio Consistency:&lt;/strong&gt; Ensure that the fallback image maintains the same aspect ratio as the images specified in the &lt;code&gt;srcset&lt;/code&gt;. This consistency helps prevent layout shifts and maintains design integrity across different devices.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;This setup ensures that smaller images load on mobile devices, saving bandwidth, while larger images are served to users with bigger screens when needed.&lt;/p&gt;

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

&lt;p&gt;Choosing between &lt;code&gt;max-width&lt;/code&gt; and &lt;code&gt;min-width&lt;/code&gt; depends on your design approach, but a mobile-first strategy with &lt;code&gt;max-width&lt;/code&gt; is often the most effective. When deciding image sizes, aim for the smallest size that maintains quality at the target resolution. For most projects, &lt;strong&gt;2560px is the largest size&lt;/strong&gt; you'll need, with exceptions for high-resolution or fullscreen applications.&lt;/p&gt;

&lt;p&gt;By following these practices, you can create responsive, performance-optimized websites that look great across all devices.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>webdesign</category>
      <category>bestpractices</category>
      <category>performance</category>
    </item>
    <item>
      <title>ChatGPT Advanced Voice Mode in Germany</title>
      <dc:creator>Aleksey Razbakov</dc:creator>
      <pubDate>Fri, 04 Oct 2024 23:29:54 +0000</pubDate>
      <link>https://dev.to/razbakov/chatgpt-advanced-voice-mode-in-germany-20fe</link>
      <guid>https://dev.to/razbakov/chatgpt-advanced-voice-mode-in-germany-20fe</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/eAusB6cscBI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Code Lynch Live: Submit Your GitHub Projects for a Live Code Review on Twitch!</title>
      <dc:creator>Aleksey Razbakov</dc:creator>
      <pubDate>Thu, 26 Sep 2024 10:28:15 +0000</pubDate>
      <link>https://dev.to/razbakov/code-lynch-live-submit-your-github-projects-for-a-live-code-review-on-twitch-fh8</link>
      <guid>https://dev.to/razbakov/code-lynch-live-submit-your-github-projects-for-a-live-code-review-on-twitch-fh8</guid>
      <description>&lt;p&gt;Hey everyone! 👋&lt;/p&gt;

&lt;p&gt;I’m excited to announce that I'll be doing a &lt;strong&gt;Code Lynch&lt;/strong&gt; live stream on Twitch where I’ll be reviewing your GitHub projects in real-time! This is a great opportunity to get feedback on your code, learn new tips and tricks, and improve your projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Participate:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Drop a link to your GitHub repository in the comments below.&lt;/li&gt;
&lt;li&gt;I’ll pick a few projects to review live on stream.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don’t miss this chance to level up your coding skills and connect with other developers. See you on Twitch!&lt;/p&gt;

</description>
      <category>twitch</category>
      <category>codereview</category>
      <category>opensource</category>
      <category>github</category>
    </item>
    <item>
      <title>HTML+CSS Workshop</title>
      <dc:creator>Aleksey Razbakov</dc:creator>
      <pubDate>Thu, 16 Feb 2023 18:16:47 +0000</pubDate>
      <link>https://dev.to/razbakov/htmlcss-workshop-283h</link>
      <guid>https://dev.to/razbakov/htmlcss-workshop-283h</guid>
      <description>&lt;p&gt;Want to learn how to publish websites for free and fast?&lt;/p&gt;

&lt;p&gt;Fill the survey by the end of today.&lt;br&gt;
&lt;a href="https://forms.gle/rixbocSN3foveiES7" rel="noopener noreferrer"&gt;https://forms.gle/rixbocSN3foveiES7&lt;/a&gt;&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>javascript</category>
      <category>css</category>
      <category>html</category>
    </item>
    <item>
      <title>Vue3 Challenge: Form Editor</title>
      <dc:creator>Aleksey Razbakov</dc:creator>
      <pubDate>Wed, 19 Oct 2022 16:12:53 +0000</pubDate>
      <link>https://dev.to/razbakov/vue3-challenge-form-editor-16p4</link>
      <guid>https://dev.to/razbakov/vue3-challenge-form-editor-16p4</guid>
      <description>&lt;p&gt;As a Developer I need a component &lt;code&gt;XForm&lt;/code&gt; that generates a form defined in schema and can edit an object.&lt;/p&gt;

&lt;h2&gt;
  
  
  Acceptance criteria
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;it accepts object in v-model&lt;/li&gt;
&lt;li&gt;it accepts array of objects in &lt;code&gt;fields&lt;/code&gt; property&lt;/li&gt;
&lt;li&gt;it renders &lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt; with same amount of child elements as length of &lt;code&gt;fields&lt;/code&gt; array&lt;/li&gt;
&lt;li&gt;each &lt;code&gt;field&lt;/code&gt; in fields describes a configuration for a child&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;field.component&lt;/code&gt; gets the name of the component (or tag) that should be rendered (for example it can be &lt;code&gt;input&lt;/code&gt;, or &lt;code&gt;select&lt;/code&gt;, or &lt;code&gt;div&lt;/code&gt;, etc.). Default: &lt;code&gt;input&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;field.field&lt;/code&gt; get the name of the key of the v-model object to edit&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;field.field&lt;/code&gt; value is used as &lt;code&gt;name&lt;/code&gt; attribute of the child&lt;/li&gt;
&lt;li&gt;all other properties are binded as html attributes (such as &lt;code&gt;type&lt;/code&gt;, &lt;code&gt;placeholder&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;li&gt;when value of input is changed, it updates v-model&lt;/li&gt;
&lt;li&gt;examples in &lt;code&gt;App.vue&lt;/code&gt; work as expected: &lt;code&gt;XForm&lt;/code&gt; with paramteres &lt;code&gt;myObjectN&lt;/code&gt; and &lt;code&gt;myFieldsN&lt;/code&gt; should render into html &lt;code&gt;myResultN&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;Let's say that&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;object = {
  name: 'Alex',
  dateOfBirth: '06.01.1989',
  eyeColor: 'blue',
  bio: 'I love apples'
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;schema = [
  {
    field: 'name',
    component: 'input',
    type: 'text',
    placeholder: 'Name',
  },
  {
    field: 'dateOfBirth',
    component: 'input',
    type: 'datetime-local' 
  },
  {
    field: 'eyeColor'
  },
  {
    field: 'bio',
    component: 'textarea'
  }
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Given &lt;strong&gt;Vue Template&lt;/strong&gt; should result into &lt;strong&gt;Resulting HTML&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vue Template
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;XForm&lt;/span&gt; &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"object"&lt;/span&gt; &lt;span class="na"&gt;:fields=&lt;/span&gt;&lt;span class="s"&gt;"schema"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Resulting HTML
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;form&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Name"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"dateOfBirth"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"datetime-local"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"eyeColor"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;textarea&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"bio"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to submit?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Write in the comments "Challenge accepted".&lt;/li&gt;
&lt;li&gt;Fork &lt;a href="https://stackblitz.com/edit/vitejs-vite-2koc2h?file=README.md" rel="noopener noreferrer"&gt;stackblitz project&lt;/a&gt; and send a new link with your solution as a reply to your original comment.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Unit tests are good to have, but optional.&lt;/p&gt;

&lt;p&gt;Share useful articles in the comments.&lt;/p&gt;

&lt;p&gt;In a meantime I will start working on a tutorial and a solution. Don't miss it - subscribe to discussion and follow me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;If you are new to Vuejs, start with &lt;a href="https://vuejs.org/tutorial/" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Vue3 Challenge: Array Editor</title>
      <dc:creator>Aleksey Razbakov</dc:creator>
      <pubDate>Tue, 20 Sep 2022 16:51:59 +0000</pubDate>
      <link>https://dev.to/razbakov/vue3-challenge-array-editor-1c8o</link>
      <guid>https://dev.to/razbakov/vue3-challenge-array-editor-1c8o</guid>
      <description>&lt;p&gt;As a Developer I need a component &lt;code&gt;XArray&lt;/code&gt; that can edit arrays of strings.&lt;/p&gt;

&lt;h2&gt;
  
  
  Acceptance criteria
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;XArray&lt;/code&gt; accepts array of strings in v-model&lt;/li&gt;
&lt;li&gt;It renders each string as separate input&lt;/li&gt;
&lt;li&gt;When value of input is changed, it's written back to the array&lt;/li&gt;
&lt;li&gt;If value is empty the element is removed from array&lt;/li&gt;
&lt;li&gt;There is always one extra input shown, so that it is possible to add new values&lt;/li&gt;
&lt;li&gt;Last input is not loosing the focus on typing and new extra input is shown below it&lt;/li&gt;
&lt;li&gt;Examples in &lt;code&gt;App.vue&lt;/code&gt; work as expected&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;Let's say that &lt;code&gt;myArray=['one', 'two']&lt;/code&gt;&lt;br&gt;
Given &lt;strong&gt;Vue Template&lt;/strong&gt; should result into &lt;strong&gt;Resulting HTML&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vue Template
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;XArray&lt;/span&gt; &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"myArray"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Resulting HTML
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"2"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to submit?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Write in the comments "Challenge accepted".&lt;/li&gt;
&lt;li&gt;Fork &lt;a href="https://stackblitz.com/edit/vitejs-vite-sqvsky?file=README.md" rel="noopener noreferrer"&gt;stackblitz project&lt;/a&gt; and send a new link with your solution as a reply to your original comment.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Unit tests are good to have, but optional.&lt;/p&gt;

&lt;p&gt;Share useful articles in the comments.&lt;/p&gt;

&lt;p&gt;In a meantime I will start working on a tutorial and a solution. Don't miss it - subscribe to discussion and follow me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;If you are new to Vuejs, start with &lt;a href="https://vuejs.org/tutorial/" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

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