<?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: SAGAR SATAPATHY</title>
    <description>The latest articles on DEV Community by SAGAR SATAPATHY (@freaking_wish).</description>
    <link>https://dev.to/freaking_wish</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%2F740067%2F2cfd125a-5214-4b2a-a01d-6f01d194c0c7.jpeg</url>
      <title>DEV Community: SAGAR SATAPATHY</title>
      <link>https://dev.to/freaking_wish</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/freaking_wish"/>
    <language>en</language>
    <item>
      <title>Introducing SafeMate — Your AI‑Powered Safety &amp; Wellness Companion (Launching Soon)</title>
      <dc:creator>SAGAR SATAPATHY</dc:creator>
      <pubDate>Sun, 06 Jul 2025 09:18:53 +0000</pubDate>
      <link>https://dev.to/freaking_wish/introducing-safemate-your-ai-powered-safety-wellness-companion-launching-soon-2oib</link>
      <guid>https://dev.to/freaking_wish/introducing-safemate-your-ai-powered-safety-wellness-companion-launching-soon-2oib</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; – &lt;strong&gt;SafeMate&lt;/strong&gt; fuses real‑time personal‑safety tech with emotional‑wellness AI.&lt;br&gt;&lt;br&gt;
Two modes (🛡 &lt;strong&gt;Safe Walk&lt;/strong&gt; &amp;amp; ❤️ &lt;strong&gt;HeartMate&lt;/strong&gt;) keep you protected &lt;strong&gt;and&lt;/strong&gt; supported, while a gamified XP system builds healthy habits.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Public beta opening soon – join the wait‑list at &lt;a href="https://getsafemate.store" rel="noopener noreferrer"&gt;getsafemate.store&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧠 Why We Built SafeMate
&lt;/h2&gt;

&lt;p&gt;Personal‑safety apps are everywhere, &lt;em&gt;but&lt;/em&gt; they’re mostly reactive panic buttons.&lt;br&gt;&lt;br&gt;
Mental‑health bots exist too, &lt;em&gt;but&lt;/em&gt; they ignore situational danger.&lt;/p&gt;

&lt;p&gt;We set out to &lt;strong&gt;merge the two worlds&lt;/strong&gt; after hearing countless stories of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Students crossing empty campuses 🌙
&lt;/li&gt;
&lt;li&gt;Women (and men) feeling uneasy on late‑night walks 🚶‍♀️
&lt;/li&gt;
&lt;li&gt;Healthcare workers leaving shifts in dim parking lots 🏥
&lt;/li&gt;
&lt;li&gt;Anyone fighting loneliness or anxiety in silence 🫂
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“What if technology could be a **guardian&lt;/em&gt;* and a &lt;strong&gt;companion&lt;/strong&gt; at the exact same time?”*&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ✨ Core Value Proposition
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;What It Delivers&lt;/th&gt;
&lt;th&gt;Tech Under the Hood&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;🛡 Safe Walk&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;em&gt;Real‑time GPS&lt;/em&gt;, AI check‑ins, SOS alerts (Telegram), route safety scoring, geofenced safe‑zones&lt;/td&gt;
&lt;td&gt;Gemini 2.5 Flash • LiveKit + Tavus • Deepgram (STT) • ElevenLabs (TTS)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;❤️ HeartMate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Emotional chat, mood tracking, guided breathing &amp;amp; meditation, calming sound‑scapes, face‑to‑face AI video&lt;/td&gt;
&lt;td&gt;Gemini 2.5 Flash • Tavus avatars • Supabase Edge Functions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;🎮 Gamification&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;XP, levels, streaks, shareable achievement cards, analytics dashboard&lt;/td&gt;
&lt;td&gt;React 18 • Tailwind • Supabase RLS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🔥 Sneak‑Peek Screens
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1 — Dashboard &amp;amp; Quick Actions
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fidoxdp0.sufydely.com%2Fdashboard.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%2Fidoxdp0.sufydely.com%2Fdashboard.png" alt="SafeMate dashboard showing level bar and quick action cards" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2 — Safe Walk Controls
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fidoxdp0.sufydely.com%2Fsafeawalk.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%2Fidoxdp0.sufydely.com%2Fsafeawalk.png" alt="SafeWalk session screen with AI companion standby" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3 — HeartMate Session (Chat + Voice)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fidoxdp0.sufydely.com%2Fheartmate.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%2Fidoxdp0.sufydely.com%2Fheartmate.png" alt="HeartMate AI chat interface with mood check &amp;amp; voice chat" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4 — Analytics &amp;amp; XP Progress
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fidoxdp0.sufydely.com%2Fanalytics.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%2Fidoxdp0.sufydely.com%2Fanalytics.png" alt="Analytics page with XP progress and mood trends" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5 — Achievements &amp;amp; Shareable Card
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fidoxdp0.sufydely.com%2Fshareable%2520achievement%2520kit.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%2Fidoxdp0.sufydely.com%2Fshareable%2520achievement%2520kit.png" alt="Achievement badges grid and shareable card preview" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;




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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Stack&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Frontend&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;React 18 + TypeScript • Vite • Tailwind CSS • Ace UI • Framer Motion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Backend&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Supabase (Auth, Postgres &lt;strong&gt;RLS&lt;/strong&gt;, Edge Functions) • Telegram Bot API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI &amp;amp; Realtime&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Gemini 2.5 Flash • LiveKit • Tavus • Deepgram • ElevenLabs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dev Ops/Deploy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vercel (web) • Netlify preview channels • Supabase hosting&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Smart Fallbacks&lt;/strong&gt; – If any AI service becomes unavailable, SafeMate automatically downgrades to the next best option so users &lt;em&gt;always&lt;/em&gt; have an active companion.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 High‑Level Architecture
&lt;/h2&gt;

&lt;p&gt;SafeMate is designed with a modular, privacy-first architecture to handle real-time audio/video safety interactions and intelligent emotional support. We combine Supabase for authentication and backend services, LiveKit and Tavus for streaming and avatars, and several cutting-edge AI APIs orchestrated via edge functions.&lt;/p&gt;

&lt;p&gt;Below is a visual representation of our system architecture:&lt;/p&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%2Fidoxdp0.sufydely.com%2FUntitled%2520diagram%2520%257C%2520Mermaid%2520Chart-2025-07-06-090845.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%2Fidoxdp0.sufydely.com%2FUntitled%2520diagram%2520%257C%2520Mermaid%2520Chart-2025-07-06-090845.png" alt="SafeMate Architecture" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🔧 Key Components
&lt;/h3&gt;

&lt;h4&gt;
  
  
  🧑‍💻 Client (Frontend)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React 18 + Tailwind + Ace UI&lt;/strong&gt;: For blazing-fast, mobile-first interfaces with clean accessibility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LiveKit&lt;/strong&gt;: WebRTC for low-latency, real-time voice/video communication.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tavus&lt;/strong&gt;: Powers AI video avatar rendering for emotional support.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  ☁️ Backend
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Supabase&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Authentication (email/password, RLS)&lt;/li&gt;
&lt;li&gt;PostgreSQL database with row-level security&lt;/li&gt;
&lt;li&gt;Edge Functions (for serverless orchestration)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Supabase Edge Functions&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Connect to various AI APIs (Gemini, ElevenLabs, Deepgram)&lt;/li&gt;
&lt;li&gt;Validate requests and fallback routing&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;PostgreSQL&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Stores user safety preferences, emergency contacts, check-in data&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  🧠 AI Services
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemini 2.5 Flash&lt;/strong&gt;: Empathetic and real-time conversational logic for HeartMate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ElevenLabs&lt;/strong&gt;: Converts AI messages to lifelike, comforting voice audio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deepgram&lt;/strong&gt;: Converts live user speech to text for commands and check-ins.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  🚨 Emergency Handling
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Telegram Bot API&lt;/strong&gt;: Triggers SOS messages to trusted contacts instantly, even if the app is closed or backgrounded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customizable Emergency Modes&lt;/strong&gt;: Silent alerts, geofence triggers, and multi-channel notifications.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🧠 Smart AI Orchestration
&lt;/h3&gt;

&lt;p&gt;All AI APIs are routed through Supabase Edge Functions that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check service availability&lt;/li&gt;
&lt;li&gt;Auto-fallback to alternatives if any service is down&lt;/li&gt;
&lt;li&gt;Reduce latency by co-locating logic near the user (edge computing)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔐 Privacy &amp;amp; Security Highlights
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Row-Level Security on all user data&lt;/li&gt;
&lt;li&gt;No hardcoded API keys — all managed via &lt;code&gt;.env&lt;/code&gt; and serverless edge calls&lt;/li&gt;
&lt;li&gt;All user preferences and emergency contacts scoped to authenticated sessions&lt;/li&gt;
&lt;li&gt;Encryption and role-based access control (RBAC) for sensitive interactions&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;This architecture allows SafeMate to scale securely while maintaining a deeply personal, AI-powered experience for users during their most vulnerable moments.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚨 Emergency Response Engine
&lt;/h2&gt;

&lt;p&gt;One of the most critical parts of SafeMate is its emergency engine, which ensures that help is just a tap away — even in the worst-case scenarios.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚙️ Telegram Integration (Offline SOS)
&lt;/h3&gt;

&lt;p&gt;When users press the SOS button:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A secure Edge Function triggers from Supabase&lt;/li&gt;
&lt;li&gt;It sends an emergency message to the user’s trusted contacts via &lt;strong&gt;Telegram&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Includes:

&lt;ul&gt;
&lt;li&gt;Real-time location&lt;/li&gt;
&lt;li&gt;Time of alert&lt;/li&gt;
&lt;li&gt;User identifier&lt;/li&gt;
&lt;li&gt;Emergency type (e.g., panic tap, fall detected, or geofence breach)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;This ensures that even if the app is backgrounded or the user has weak internet, &lt;strong&gt;notifications are reliably delivered&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎮 Gamified Safety &amp;amp; Emotional Wellness
&lt;/h2&gt;

&lt;p&gt;To encourage long-term engagement and build safety habits, SafeMate features a &lt;strong&gt;gamification layer&lt;/strong&gt; that blends purpose with motivation:&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;XP System&lt;/strong&gt;: Gain experience for completing walks, check-ins, and daily wellness sessions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Achievement Badges&lt;/strong&gt;: Unlockable awards for milestones (first walk, 7-day streak, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Daily Streaks&lt;/strong&gt;: Encourages consistency with check-ins and reflection activities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leaderboard (Coming Soon)&lt;/strong&gt;: Track your progress with friends or community members&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All elements are built using local state (Phase 2), with support for syncing to Supabase in later phases.&lt;/p&gt;




&lt;h2&gt;
  
  
  📈 Analytics &amp;amp; Insights
&lt;/h2&gt;

&lt;p&gt;SafeMate includes a powerful insights dashboard to help users visualize their physical and emotional safety patterns.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Mood trendline (based on check-ins and HeartMate feedback)&lt;/li&gt;
&lt;li&gt;Safety event timeline (SOS events, location alerts)&lt;/li&gt;
&lt;li&gt;Check-in frequency and completion history&lt;/li&gt;
&lt;li&gt;Achievement and XP tracker&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These insights help users better understand their habits, triggers, and improvements over time.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What We Learned
&lt;/h2&gt;

&lt;p&gt;This project taught our team more than we ever expected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI-Oriented Architecture&lt;/strong&gt;: We learned to orchestrate multiple AI services behind a unified interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supabase Mastery&lt;/strong&gt;: From RLS to Edge Functions, Supabase enabled us to build fast and secure without worrying about DevOps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile Audio Workarounds&lt;/strong&gt;: We implemented dynamic handlers to trigger TTS/audio after user gestures (overcoming autoplay limits).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessible UX for High-Stress&lt;/strong&gt;: We designed every interaction to be accessible under panic or stress — bold buttons, keyboard nav, voice triggers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fallback-First AI Systems&lt;/strong&gt;: We introduced a smart detection mechanism to select the best available service automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gamification with Purpose&lt;/strong&gt;: Unlike novelty-based rewards, our gamification system encourages &lt;strong&gt;real-world safety engagement&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔮 What’s Next?
&lt;/h2&gt;

&lt;p&gt;We’re just getting started. Here’s what’s coming:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📱 &lt;strong&gt;Mobile App Launch&lt;/strong&gt;: iOS &amp;amp; Android with offline-mode and wearable integration&lt;/li&gt;
&lt;li&gt;🧑‍🤝‍🧑 &lt;strong&gt;Trusted Network&lt;/strong&gt;: Friends and family mutual monitoring with presence indicators&lt;/li&gt;
&lt;li&gt;🧘 &lt;strong&gt;Wellness Expansion&lt;/strong&gt;: More meditations, breathing patterns, and AI mood exercises&lt;/li&gt;
&lt;li&gt;🚓 &lt;strong&gt;Emergency Services API&lt;/strong&gt;: Integration with regional 911/112 systems (via country code)&lt;/li&gt;
&lt;li&gt;⌚ &lt;strong&gt;Smartwatch Support&lt;/strong&gt;: Hands-free check-ins and panic triggers&lt;/li&gt;
&lt;li&gt;🌍 &lt;strong&gt;Localization &amp;amp; Global Scaling&lt;/strong&gt;: Support for Indian, European, and US safety systems&lt;/li&gt;
&lt;li&gt;🏢 &lt;strong&gt;Enterprise Version&lt;/strong&gt;: Institutions like universities, hospitals, and BPOs can deploy SafeMate for their employees/students&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔗 Join the Movement
&lt;/h2&gt;

&lt;p&gt;SafeMate isn’t just an app — it’s a movement for &lt;strong&gt;tech-enabled compassion&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We’re currently in closed beta, and launching soon.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Sign up now&lt;/strong&gt; at &lt;a href="https://getsafemate.store" rel="noopener noreferrer"&gt;https://getsafemate.store&lt;/a&gt;&lt;br&gt;&lt;br&gt;
👉 Or follow our Telegram bot for live alerts and demos: &lt;a href="https://t.me/safemate_guardian" rel="noopener noreferrer"&gt;t.me/safemate_guardian&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🙌 Built With ❤️ by &lt;a class="mentioned-user" href="https://dev.to/freaking_wish"&gt;@freaking_wish&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React 18, Tailwind CSS, Aceternity UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Supabase, PostgreSQL, Edge Functions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI&lt;/strong&gt;: Gemini 2.5, ElevenLabs, Deepgram, Tavus&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice/RTC&lt;/strong&gt;: LiveKit, Telegram Bot API&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“The guardian you trust. The companion you need.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let us know what you think. Feedback, ideas, or hugs → drop them in the comments!&lt;/p&gt;

&lt;p&gt;🧠💙 Stay safe,&lt;br&gt;&lt;br&gt;
— Wish&lt;/p&gt;

</description>
      <category>ai</category>
      <category>genai</category>
      <category>welness</category>
      <category>startup</category>
    </item>
    <item>
      <title>Getting started with Harness CI</title>
      <dc:creator>SAGAR SATAPATHY</dc:creator>
      <pubDate>Thu, 17 Nov 2022 15:36:30 +0000</pubDate>
      <link>https://dev.to/freaking_wish/getting-started-with-harness-ci-g68</link>
      <guid>https://dev.to/freaking_wish/getting-started-with-harness-ci-g68</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;What is Harness?&lt;/strong&gt;🐤
&lt;/h2&gt;

&lt;p&gt;Harness is the industry's first Software Delivery Platform to use AI to simplify your DevOps processes - CI, CD, Feature Flags, Cloud Costs, and much more.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Harness?&lt;/strong&gt;🐤
&lt;/h2&gt;

&lt;p&gt;Harness is a modern software delivery platform that allows engineers and DevOps to build, test, deploy, and verify software, on-demand.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What is Harness CI?&lt;/strong&gt;🐤
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Harness CI simplifies the development and testing of code.&lt;/li&gt;
&lt;li&gt;Each stage includes steps for building,testing, and pushing your code.&lt;/li&gt;
&lt;li&gt;CI executes steps as containers , packaging code, and dependencies in isolation from other steps. &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;PreFlight Checklist!&lt;/strong&gt;🐤
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://github.com/harness-community/python-pipeline-samples" rel="noopener noreferrer"&gt;Forking the Repository&lt;/a&gt;✔️&lt;/li&gt;
&lt;li&gt;Microsoft Azure Account✔️(Optional,You can use Harness prebuild)&lt;/li&gt;
&lt;li&gt;A Docker Hub account✔️&lt;/li&gt;
&lt;li&gt;Kubernetes cluster✔️(Optional,You can use Harness prebuild)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fibt19yu4w1481cfg01ta.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fibt19yu4w1481cfg01ta.png" alt="CI pipeline"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;WorkFlow&lt;/strong&gt;🐤
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Build the code and run unit tests.&lt;/li&gt;
&lt;li&gt;Package the app as a Docker image and upload it to Docker Hub.&lt;/li&gt;
&lt;li&gt;Pull the uploaded image to the build farm as a Background 
Task.Check out more about background tasks here&lt;/li&gt;
&lt;li&gt;Run an integration test against the sample app.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 1: Fork the repository&lt;/strong&gt;🐤
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;a href="https://github.com/harness-community/python-pipeline-samples" rel="noopener noreferrer"&gt;Python-Pipeline-Samples Repo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Now fork this repository in your Github &lt;a href="https://docs.github.com/en/get-started/quickstart/fork-a-repo" rel="noopener noreferrer"&gt;Forking a repository in Github&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 2: Create your Harness Project&lt;/strong&gt;🐤
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Move to the Harness Platform &amp;amp; click on Project -&amp;gt; New Project&lt;/li&gt;
&lt;li&gt;Configure the project settings as below
&lt;code&gt;Name: (Default Project Name)&lt;/code&gt;
&lt;code&gt;Organization: Default&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F109092049%2F192598400-7254737b-ff8b-4e1c-bdc8-6efd2895f011.png" class="article-body-image-wrapper"&gt;&lt;img alt="Screenshot 2022-09-09 at 10 24 17 AM" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F109092049%2F192598400-7254737b-ff8b-4e1c-bdc8-6efd2895f011.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select CI Module in the modules sections&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 3: Pipeline Creation &amp;amp; Configure Stages&lt;/strong&gt;🐤
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Click on &lt;code&gt;Pipelines&lt;/code&gt; -&amp;gt; Create a Pipeline &lt;/li&gt;
&lt;li&gt;Configure the pipeline as below
&lt;code&gt;Name: CI-Python-Quickstart&lt;/code&gt;
&lt;code&gt;Set up pipeline as: Inline&lt;/code&gt;
&lt;img alt="Screenshot 2022-09-09 at 10 32 57 AM" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F109092049%2F192598502-92912fe7-3102-4b77-845c-ba914b684754.png"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To know more about Pipelines &lt;a href="https://github.com/wishsagarks/python-pipeline-samples/blob/main/docs/overview.md" rel="noopener noreferrer"&gt;check out the docs here&lt;/a&gt;&lt;br&gt;
Next, we are going to add Stages and steps to our Pipeline and compile our Python code.&lt;/p&gt;

&lt;p&gt;Click on &lt;strong&gt;Start&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 4: Build Step&lt;/strong&gt;🐤
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Hover over to Build tab.&lt;/li&gt;
&lt;li&gt;Click on &lt;code&gt;Add Stage&lt;/code&gt; to get started with the pipeline creation&lt;/li&gt;
&lt;li&gt;Select the type of stage as &lt;code&gt;Build&lt;/code&gt;
&lt;img alt="Screenshot 2022-09-09 at 10 53 12 AM" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F109092049%2F192598696-a311f0b8-5c8e-46be-9a48-779d1c358bbb.png"&gt;
&lt;/li&gt;
&lt;li&gt;Configure the Stage Settings as below

&lt;ul&gt;
&lt;li&gt;Name: &lt;code&gt;build test and run&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Make sure to turn on &lt;code&gt;clone codebase&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Setup the Connector as follows&lt;/strong&gt;&lt;br&gt;
Select &lt;code&gt;Connectors&lt;/code&gt; -&amp;gt; Click on &lt;code&gt;+ New Connector&lt;/code&gt;&lt;br&gt;
Connector Type: &lt;code&gt;Github&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F109092049%2F192598730-107417b7-4aa3-410b-9379-346b66d3e58d.png" class="article-body-image-wrapper"&gt;&lt;img alt="Screenshot 2022-09-09 at 10 55 35 AM" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F109092049%2F192598730-107417b7-4aa3-410b-9379-346b66d3e58d.png"&gt;&lt;/a&gt;&lt;br&gt;
Name: &lt;code&gt;python-sample-connector&lt;/code&gt;&lt;br&gt;
URL Type : &lt;code&gt;Repository&lt;/code&gt;&lt;br&gt;
Connection Type: &lt;code&gt;HTTP&lt;/code&gt;&lt;br&gt;
GitHub Repository URL: Paste the link of your forked repository&lt;br&gt;
Username: (Your Github Username)&lt;br&gt;
Personal Access Token: &lt;a href="https://dev.to/freaking_wish/cd-onboarding-with-harness-using-azure-2k04"&gt;Check out how to create personal access token&lt;/a&gt;&lt;br&gt;
Secret Name: &lt;code&gt;Git-Token&lt;/code&gt;&lt;br&gt;
Secret  Value: PAT value generated in Github&lt;br&gt;
Click on &lt;strong&gt;Save&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This will allow the repository to be fetched click on it and click &lt;code&gt;Apply Selected&lt;/code&gt;&lt;br&gt;
Make Enable API access (ON) with the secret token created&lt;br&gt;
Click on &lt;strong&gt;Connect through Harness Platform&lt;/strong&gt;.&lt;br&gt;
To develop more understanding on Connectors &lt;a href="//overview.md"&gt;check out the docs here&lt;/a&gt;&lt;br&gt;
Go the Infrastructure settings of stage and click on &lt;code&gt;Hosted by Harness&lt;/code&gt;.&lt;br&gt;
Then go to Execution (In this step we are going to compile the code)&lt;/p&gt;

&lt;h4&gt;
  
  
  Code Compilation
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Click on &lt;code&gt;Add step&lt;/code&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;code&gt;Build&lt;/code&gt; and click on &lt;code&gt;Run&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Change the settings as following &lt;/li&gt;
&lt;li&gt;Name: &lt;code&gt;Code compile&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Container Registry -&amp;gt; Choose &lt;code&gt;New connector&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click on &lt;code&gt;Docker Registry&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Change the settings as following 

&lt;ul&gt;
&lt;li&gt;Overview 

&lt;ul&gt;
&lt;li&gt;Name- &lt;code&gt;docker quickstart&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Details 

&lt;ul&gt;
&lt;li&gt;Docker registry url -  &lt;code&gt;https://index.docker.io/v1/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Provider type - &lt;code&gt;Docker Hub&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Authentication - &lt;code&gt;Username and Password&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Username - Docker hub username &lt;/li&gt;
&lt;li&gt;Secret Token - &lt;a href="https://dev.to/freaking_wish/getting-started-with-harness-ci-16dn-temp-slug-3271428"&gt;Check out how to create docker PAT&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Connect to Provider 

&lt;ul&gt;
&lt;li&gt;Choose to connect through the Harness Platform&lt;/li&gt;
&lt;li&gt;It will take sometime to verify your credentials.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;Image: &lt;code&gt;python:3.10.6-alpine&lt;/code&gt;
&lt;/li&gt;

&lt;li&gt;Shell: &lt;code&gt;Sh&lt;/code&gt;
&lt;/li&gt;

&lt;li&gt;Command:
&lt;code&gt;python -m compileall ./&lt;/code&gt;
&lt;/li&gt;

&lt;li&gt;Then click &lt;code&gt;Apply changes&lt;/code&gt;
Next we are going to create Image and Push the image to docker registry 
Click on &lt;strong&gt;Create Image and Push to Docker Registry&lt;/strong&gt;
&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 5: DockerFile Creation&lt;/strong&gt;🐤
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Click on &lt;code&gt;Add step&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to builds and click on run &lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Change the settings as following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name: &lt;code&gt;create Docker file&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Container registry: Click on the Docker connecter created in the previous step &lt;/li&gt;
&lt;li&gt;Image: &lt;code&gt;alpine&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Commands: Copy the following command and click on apply changes.
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt; touch pythondockerfile
 cat &amp;gt; pythondockerfile &amp;lt;&amp;lt;- EOM
 FROM python:3.10.6-alpine
 WORKDIR /python-pipeline-samples
 ADD . /python-pipeline-samples
 RUN pip install -r requirements.txt
 CMD ["python" , "app.py"]
 EOM
 cat pythondockerfile
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Build and Push Image to Docker Registry
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Click on &lt;code&gt;Add step&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Go to &lt;code&gt;builds&lt;/code&gt; and click on &lt;code&gt;build and push an image to docker registry&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt; Change the settings as following:

&lt;ul&gt;
&lt;li&gt;Name: &lt;code&gt;Build and push image to docker hub&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Docker connector: select the Docker connector you created previously &lt;/li&gt;
&lt;li&gt;Docker repository: &lt;code&gt;&amp;lt;docker-hub-username&amp;gt;/&amp;lt;docker-repository name&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Tags: &lt;code&gt;latest&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;In the optional Configuration

&lt;ul&gt;
&lt;li&gt;Dockerfile -

&lt;code&gt;pythondockerfile&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Now we move to Integration Testing and running our Pipeline.&lt;br&gt;
Click on &lt;strong&gt;Integration Test and Run Pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 6: Integration Testing&lt;/strong&gt;🐤
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Python server
&lt;/h3&gt;

&lt;p&gt;Now you have a Stage to clone, build, containerize, and then push your image to Docker Hub. In this step you'll add a Stage to pull that image, run it in a container, and run integration tests on it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Add stage and select &lt;code&gt;build&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Name it as &lt;code&gt;integration test&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Turn off &lt;code&gt;clone from codebase&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Click &lt;code&gt;setup stage&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Go to the &lt;code&gt;Stage overview&lt;/code&gt; turn on &lt;code&gt;Clone Codebase&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Now we will setup Stage Infrastructure&lt;/li&gt;
&lt;li&gt;Go to Infrastructure and select propagate from an existing 
stage.&lt;/li&gt;
&lt;li&gt;Select the previous stage&lt;/li&gt;
&lt;li&gt;Click &lt;code&gt;Next&lt;/code&gt;
In the Build Test and Push stage, you built your code and pushed your built image to Docker Hub.
Harness will pull the image onto the container in your infrastructure. Next, it will start the Hello World Server in the image.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note:According to new flow and UI** Propagate from an existing stage** is already enabled.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to execution tab in run integration stage &lt;/li&gt;
&lt;li&gt;Select &lt;code&gt;add step&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Go to builds and select background &lt;/li&gt;
&lt;li&gt;Change the settings as following &lt;/li&gt;
&lt;li&gt;Name: &lt;code&gt;python server&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Description(optional): &lt;code&gt;server connection&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Container registry: select the Docker connector you created 
 previously&lt;/li&gt;
&lt;li&gt;Image : docker-hub-username/docker-hub-repo-name
      - Shell: &lt;code&gt;Sh&lt;/code&gt;
      - Command: &lt;code&gt;python3 /python-pipeline-samples/app.py&lt;/code&gt;
      - Select &lt;code&gt;Apply changes&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Connecting to server
&lt;/h3&gt;

&lt;p&gt;Next, we can run an integration test. We'll simply test the connection to the server.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Select add step in the execution tab of run integration stage &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to Builds and select Run &lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Change the settings as following &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name: &lt;code&gt;test connection to server&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Container registry: select Docker connector you created .&lt;/li&gt;
&lt;li&gt;Image: &lt;code&gt;curlimages/curl:7.73.0&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Commands:
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sleep 10
curl localhost:5000
&lt;/code&gt;&lt;/pre&gt;



&lt;ul&gt;
&lt;li&gt;Select &lt;code&gt;Apply Changes&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Step 7: Run the Pipeline&lt;/strong&gt;🐤
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Click ↑Save.&lt;/li&gt;
&lt;li&gt;Click &lt;code&gt;Run&lt;/code&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Pipeline Inputs settings appear.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under CI Codebase, select &lt;code&gt;Git branch&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In Git Branch, enter the name of the branch where the codebase is, here

&lt;code&gt;main&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;Click Run Pipeline.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hoooray we have completed our CI pipeline.&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.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%2F57lgkpod099ynmr9rzmm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F57lgkpod099ynmr9rzmm.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👌Happy hacking,see you until next time!अलविदा&lt;/strong&gt;&lt;br&gt;
  About me:&lt;a href="https://wishtree.vercel.app/" rel="noopener noreferrer"&gt;freaking_wish&lt;/a&gt; 😊&lt;br&gt;
  doc ref:&lt;a href="https://github.com/harness-community/python-pipeline-samples" rel="noopener noreferrer"&gt;Github repo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>docker</category>
      <category>kubernetes</category>
      <category>harness</category>
    </item>
    <item>
      <title>CD onboarding with Harness using Azure.</title>
      <dc:creator>SAGAR SATAPATHY</dc:creator>
      <pubDate>Mon, 07 Nov 2022 09:23:36 +0000</pubDate>
      <link>https://dev.to/freaking_wish/cd-onboarding-with-harness-using-azure-2k04</link>
      <guid>https://dev.to/freaking_wish/cd-onboarding-with-harness-using-azure-2k04</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;What is Harness?&lt;/strong&gt;⚓
&lt;/h2&gt;

&lt;p&gt;Harness is the industry's first Software Delivery Platform to use AI to simplify your DevOps processes - CI, CD, Feature Flags, Cloud Costs, and much more.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Harness?&lt;/strong&gt;⚓
&lt;/h2&gt;

&lt;p&gt;Harness is a modern software delivery platform that allows engineers and DevOps to build, test, deploy, and verify software, on-demand.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What is Cloud Delivery Pipeline (CD Pipeline)?&lt;/strong&gt;⚓
&lt;/h3&gt;

&lt;p&gt;A CD Pipeline is a series of Stages where each Stage deploys a Service to an Environment.A CD Pipeline can perform many additional CD operations, including, but not limited to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Propagating Services and their definitions across Stages&lt;/li&gt;
&lt;li&gt;  Approvals using integrations like Jira and ServiceNow.&lt;/li&gt;
&lt;li&gt;  Synchronizing stage deployments using barriers.&lt;/li&gt;
&lt;li&gt;  Notifications.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Aim: Setting up and running the pipeline which can run an Nginx image on your cluster with &lt;strong&gt;Harness&lt;/strong&gt; using Microsoft &lt;strong&gt;Azure&lt;/strong&gt;!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fgzu4dmpqee9x1egzmw2u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fgzu4dmpqee9x1egzmw2u.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;PreFlight Checklist!&lt;/strong&gt;⚓
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://github.com/harness-community/cd-pipeline-sample" rel="noopener noreferrer"&gt;Forking the Repository&lt;/a&gt;✔️&lt;/li&gt;
&lt;li&gt;Microsoft Azure Account✔️&lt;/li&gt;
&lt;li&gt;A Docker Hub account✔️&lt;/li&gt;
&lt;li&gt;Kubernetes cluster✔️
&lt;img src="https://media.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%2F89tgtohfx7locwxbghpk.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Steps to set up Azure-kubernetes cluster&lt;/strong&gt;⚓
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Log in to &lt;a href="https://portal.azure.com/" rel="noopener noreferrer"&gt;Microsoft Azure Portal&lt;/a&gt;,using student id gives you free credit.&lt;/li&gt;
&lt;li&gt;Search for Kubernetes Services.&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Create&lt;/strong&gt;.Then click on &lt;strong&gt;Create Kubernetes cluster&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Fill up all the necessary details like Kubernetes cluster name-demo(example).&lt;/li&gt;
&lt;li&gt;Finally Click &lt;strong&gt;Review+Create&lt;/strong&gt; button then &lt;strong&gt;Create&lt;/strong&gt; and give it some time to Initialize deployment.You will be notified once it's deployed.
6.Click &lt;strong&gt;connect&lt;/strong&gt; and get ready for using Harness.
&lt;img src="https://media.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%2Fsqaf3osg1e4z8t5ouv48.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Steps to set up the Harness Delegate&lt;/strong&gt;⚓
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Log in to your &lt;a href="https://harness.io/" rel="noopener noreferrer"&gt;Harness Account&lt;/a&gt;.
&lt;img src="https://media.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%2Ffqcq5y7mus93hu06wsn6.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;li&gt;In The Project Setup tab choose &lt;strong&gt;Delegates&lt;/strong&gt; and hit &lt;strong&gt;+ 
Create a Delegate&lt;/strong&gt; after &lt;strong&gt;setting up project:firstproject&lt;/strong&gt;.
&lt;img src="https://media.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%2Fz2zkygutmxwq87m5yfzq.png" alt="Image description"&gt;
&lt;img src="https://media.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%2Fncd04zs3fjhdcyhooih0.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;Kubernetes&lt;/strong&gt; and continue.
 Enter the following details: 

&lt;ul&gt;
&lt;li&gt;Delegate Name:newdelegate&lt;/li&gt;
&lt;li&gt;Delegate Size:Small&lt;/li&gt;
&lt;li&gt;What installer do you want to use?:Kubernetes
&lt;img src="https://media.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%2Fs971k32lk5vwr4lsppf3.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Press &lt;strong&gt;Continue&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Download YAML file&lt;/strong&gt; and then Continue&lt;/li&gt;
&lt;li&gt;Open Kubernetes Cluster tab and Press &lt;strong&gt;Connect&lt;/strong&gt; then &lt;strong&gt;Open 
Cloud Shell&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Upload the YAML file in the cli or copy the content of YAML file to cli of Cloud Shell &lt;/li&gt;
&lt;li&gt;Enter the following code
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f harness-delegate.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.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%2Fmztl4f748lwa5f1lcpvl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fmztl4f748lwa5f1lcpvl.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
   Press &lt;strong&gt;Done&lt;/strong&gt; once you see green check mark in Checking for &lt;br&gt;
   Heartbeat section in Harness tab.&lt;br&gt;
&lt;a href="https://media.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%2Fy7xful0yauq9jns4sc34.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fy7xful0yauq9jns4sc34.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Secrets and steps to set them up&lt;/strong&gt;⚓
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;GitHub Personal Access Token&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Harness needs a Personal Access Token to access GitHub repositories.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Login to &lt;strong&gt;GitHub&lt;/strong&gt; and click on &lt;strong&gt;Settings&lt;/strong&gt; from the top-right menu&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Developer Settings&lt;/strong&gt; from the list of &lt;strong&gt;Account Settings&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Personal access tokens-&amp;gt;Token(Classic)-&amp;gt;generate new Token&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click on Generate new token (&lt;strong&gt;grant ALL permissions&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Copy the generated token and save it.
&lt;img src="https://media.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%2Fiogcg8dmao8d9sjf3614.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;li&gt;Now go to Harness Secret Tab&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Click New Secret-&amp;gt;Text&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Fill up the details and copy the secret key from github token generated and paste it in harness secret just created.
&lt;img src="https://media.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%2Fv4wor8ys69bisq4la22n.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;DockerHub Access Token&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Sign-in to Docker Hub&lt;br&gt;
 Go to &lt;strong&gt;Account Setting&lt;/strong&gt; then &lt;strong&gt;Security&lt;/strong&gt; and generate &lt;strong&gt;New &lt;br&gt;
 Access Token&lt;/strong&gt; and generate.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fa29sv5z4szn3bpxdrmuz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fa29sv5z4szn3bpxdrmuz.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Now go to Harness Secret Tab and click New Secret-&amp;gt;Text&lt;/li&gt;
&lt;li&gt;Fill up details and paste the key generated from docker hub and hit save.
&lt;img src="https://media.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%2Fevxkaq6gu2jdzuxu2iae.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Steps the to set up GitHub Connector&lt;/strong&gt;⚓
&lt;/h2&gt;

&lt;p&gt;In Harness Dashboard you will notice Connector tab under your &lt;br&gt;
   project setup section.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;+ New Connector&lt;/strong&gt; and choose Github from &lt;strong&gt;Code 
Repositories&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Name:githubconnector&lt;/li&gt;
&lt;li&gt;GitHub Account URL: YOUR_GITHUB_URL&lt;/li&gt;
&lt;li&gt;Test Repository:cd-pipeline-sample and &lt;strong&gt;Continue&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Username:YOUR_GITHUB_USERNAME&lt;/li&gt;
&lt;li&gt;Personal Access Token:choose your github secret created in 
harness&lt;/li&gt;
&lt;li&gt;Check the Enable API access (recommended)☑️&lt;/li&gt;
&lt;li&gt;Personal Access Token:choose your github secret created in 
harness and &lt;strong&gt;Continue&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Select how you would like to connect to the provider:Connect 
through a Harness Delegate&lt;/li&gt;
&lt;li&gt;Choose the Delegate you created-newdelegate then &lt;strong&gt;Save and Continue&lt;/strong&gt; and &lt;strong&gt;Finish&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Steps the to set up Docker Connector&lt;/strong&gt;⚓
&lt;/h2&gt;

&lt;p&gt;In Harness Dashboard you will notice Connector tab under your &lt;br&gt;
   project setup section.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;+ New Connector&lt;/strong&gt; and choose &lt;strong&gt;Docker Repositories&lt;/strong&gt; 
from &lt;strong&gt;Artifact Repositories&lt;/strong&gt;.

&lt;ul&gt;
&lt;li&gt;Name:dockerconnector&lt;/li&gt;
&lt;li&gt;Docker Registry URL:&lt;a href="https://registry.hub.docker.com/v2/" rel="noopener noreferrer"&gt;https://registry.hub.docker.com/v2/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Username:DOCKER_USERNAME&lt;/li&gt;
&lt;li&gt;Password:Docker secret you created in Harness Secret Tab and 
&lt;strong&gt;Continue&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Select how you would like to connect to the provider:Connect 
 through a Harness Delegate&lt;/li&gt;
&lt;li&gt;Select the Delegates this Connector will use:Use Delegate you 
 created-newdelegate then &lt;strong&gt;Save and Continue&lt;/strong&gt; and 
&lt;strong&gt;Finish&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Setting up Project&lt;/strong&gt;⚓
&lt;/h2&gt;

&lt;p&gt;We have already &lt;strong&gt;forked&lt;/strong&gt; the &lt;a href="https://github.com/harness-community/cd-pipeline-sample" rel="noopener noreferrer"&gt;cd-pipeline-sample&lt;/a&gt;.&lt;br&gt;
Its time to create Pipeline and see what we have created.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Setting up the Pipeline&lt;/strong&gt;⚓
&lt;/h2&gt;

&lt;p&gt;Go to &lt;strong&gt;cd-pipeline-sample repo&lt;/strong&gt; which you forked browse &lt;br&gt;
   through*&lt;em&gt;.harness folder&lt;/em&gt;* and edit &lt;strong&gt;Pipeline.yaml file&lt;/strong&gt;&lt;br&gt;
   Name the projectIdentifier:PROJECT_NAME_CREATED_IN_HARNESS&lt;br&gt;
   (for eg:my project name is firstproject)&lt;br&gt;
   So &lt;strong&gt;Pipeline.yaml&lt;/strong&gt; will be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pipeline:
  name: testk8s
  identifier: testk8s
  projectIdentifier: firstproject
  orgIdentifier: default
  tags: {}
  stages:
    - stage:
        name: k8deploy
        identifier: k8deploy
        description: ""
        type: Deployment
        spec:
          serviceConfig:
            serviceRef: k8service
            serviceDefinition:
              spec:
                variables: []
                manifests:
                  - manifest:
                      identifier: manifest
                      type: K8sManifest
                      spec:
                        store:
                          type: Github
                          spec:
                            connectorRef: testhelp
                            gitFetchType: Branch
                            paths:
                              - default-k8s-manifests/Manifests/Files/templates
                            repoName: harness-docs
                            branch: main
                        skipResourceVersioning: false
                  - manifest:
                      identifier: values
                      type: Values
                      spec:
                        store:
                          type: Github
                          spec:
                            connectorRef: testhelp
                            gitFetchType: Branch
                            paths:
                              - default-k8s-manifests/Manifests/Files/ng_values_dockercfg.yaml
                            repoName: harness-docs
                            branch: main
                artifacts:
                  primary:
                    spec:
                      connectorRef: harnessdocker
                      imagePath: &amp;lt;+input&amp;gt;
                      tag: &amp;lt;+input&amp;gt;
                    type: DockerRegistry
              type: Kubernetes
          infrastructure:
            environmentRef: K8Env
            infrastructureDefinition:
              type: KubernetesDirect
              spec:
                connectorRef: test
                namespace: default
                releaseName: release-&amp;lt;+INFRA_KEY&amp;gt;
            allowSimultaneousDeployments: false
          execution:
            steps:
              - step:
                  name: Rollout Deployment
                  identifier: rolloutDeployment
                  type: K8sRollingDeploy
                  timeout: 10m
                  spec:
                    skipDryRun: false
            rollbackSteps:
              - step:
                  name: Rollback Rollout Deployment
                  identifier: rollbackRolloutDeployment
                  type: K8sRollingRollback
                  timeout: 10m
                  spec: {}
        tags: {}
        failureStrategies:
          - onFailure:
              errors:
                - AllErrors
              action:
                type: StageRollback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Choose the Pipeline tab from your project in Harness Dashboard 
and click on &lt;strong&gt;+ Import From Git&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;Fill the details according to image
&lt;img src="https://media.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%2F8uk1pjmuj2is8ewwa7cf.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;li&gt;Now open the pipeline you created and click on &lt;strong&gt;k8deploy&lt;/strong&gt;
&lt;img src="https://media.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%2Fdlc2uve2vb8bn3o3fymo.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Services&lt;/strong&gt; -&amp;gt; Select Service click &lt;strong&gt;New Service&lt;/strong&gt; and 
name it as &lt;strong&gt;nginx&lt;/strong&gt; then choose it from dropdown
&lt;img src="https://media.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%2Fw21z8km4yfg1a0qnibhj.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;li&gt; Lets setup the manifest now
&lt;img src="https://media.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%2F2birwgs7cwo7y3l7gb9f.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;li&gt; Click on &lt;strong&gt;manifest&lt;/strong&gt; edit button -&amp;gt;Continue
GitHub Connector:CONNECTOR_CREATED_FOR_GITHUB_IN_HARNESS i.e 
githubconnector.
&lt;img src="https://media.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%2Fws4wh6w2ipafs5zbi5tl.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;li&gt; Edit &lt;strong&gt;values&lt;/strong&gt; by clicking its edit button then &lt;strong&gt;Continue&lt;/strong&gt;
and choose the &lt;strong&gt;Connector&lt;/strong&gt; created for Github in Harness 
Connector and &lt;strong&gt;Submit&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Finally lets edit the Docker Artifact-&amp;gt;&lt;strong&gt;Continue&lt;/strong&gt;
Choose the Docker connecter you created in Harness Connector 
section.&lt;/li&gt;
&lt;li&gt; Click on the button shown in the image and give the path as 
&lt;strong&gt;library/nginx&lt;/strong&gt; and &lt;strong&gt;Submit&lt;/strong&gt;.
&lt;img src="https://media.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%2F160cx0z2zkodtccg4bqk.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continue&lt;/strong&gt; it will take you to Infrastructure section
 Specify Environment:+ New Environment .
&lt;img src="https://media.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%2Fc24c0t97wd3d221lq36t.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Connector: + New Connector&lt;/li&gt;
&lt;li&gt;Name:kubernetesinfraconnector&lt;/li&gt;
&lt;li&gt;Details:Use the credentials of a specific Harness Delegate (IAM role, service account, etc) and &lt;strong&gt;Continue&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Delegate:Delegate you created in harness-newdelegate&lt;/li&gt;
&lt;li&gt;Finally &lt;strong&gt;Save and Continue&lt;/strong&gt; and &lt;strong&gt;Finish&lt;/strong&gt; then &lt;strong&gt;Continue&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Now hit &lt;strong&gt;Save&lt;/strong&gt; and &lt;strong&gt;Save&lt;/strong&gt; again then &lt;strong&gt;Run&lt;/strong&gt;.
&lt;img src="https://media.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%2Fur387titiovsee7ekuwr.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Give tag:&lt;strong&gt;latest&lt;/strong&gt; and click &lt;strong&gt;Run Pipeline&lt;/strong&gt; &lt;br&gt;
🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈🦈&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hoooray we have completed our cd pipeline.&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.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%2F3em1uxs2gg2l3q8r2ovs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F3em1uxs2gg2l3q8r2ovs.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.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%2F0jqklwikd8gyo4zotrhl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F0jqklwikd8gyo4zotrhl.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👌Happy hacking,see you until next time!अलविदा&lt;/strong&gt;&lt;br&gt;
  About me:&lt;a href="https://wishtree.vercel.app/" rel="noopener noreferrer"&gt;freaking_wish&lt;/a&gt; 😊&lt;br&gt;
  ref:&lt;a href="https://github.com/harness-community/cd-%20&amp;lt;br&amp;gt;%0A%20%20pipeline-sample" rel="noopener noreferrer"&gt;Github repo&lt;/a&gt;&lt;br&gt;
  vid ref:&lt;a href="https://youtu.be/yz-HNgHCLHE" rel="noopener noreferrer"&gt;Harness community&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>devops</category>
      <category>kubernetes</category>
      <category>docker</category>
    </item>
    <item>
      <title>CSS Selectors That Every Developer Should Know</title>
      <dc:creator>SAGAR SATAPATHY</dc:creator>
      <pubDate>Thu, 03 Mar 2022 16:10:10 +0000</pubDate>
      <link>https://dev.to/freaking_wish/css-selectors-that-every-developer-should-know-2dme</link>
      <guid>https://dev.to/freaking_wish/css-selectors-that-every-developer-should-know-2dme</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Css is the tool to Responsive Web Design always plays an &lt;br&gt;
important role whenever going to promote your website.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is css?
&lt;/h2&gt;

&lt;p&gt;Cascading Style Sheets (CSS) is a language for specifying the appearance of a document written in a markup language like HTML. Along with HTML and JavaScript, CSS is a key component of the World Wide Web.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is CSS important?
&lt;/h2&gt;

&lt;p&gt;CSS allows you to keep a document's informative content distinct from the specifics of how it should be &lt;strong&gt;displayed&lt;/strong&gt;. The style of a document refers to the specifics of how it should be presented. You separate the style from the substance in order to: Duplicate work should be avoided.Facilitate upkeep.&lt;br&gt;
For different reasons, use the same text in several styles.&lt;br&gt;
Thousands of pages on your website may have the same appearance. The style information is stored in common files that are shared by all pages when using CSS. When a user views a web page, the style information is loaded together with the page's content by the user's browser.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Sr. No.&lt;/th&gt;
&lt;th&gt;CSS Selector&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Element Selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Class Selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;ID Selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Attribute Selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Descendant Selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Child Selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Adjacent Selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;General Sibling Selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Universal Selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Pseudo Class Selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Pseudo Element Selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;nth-of-type&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;nth-child&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Lets understand the selectors in detailed manner&lt;/strong&gt;&lt;br&gt;
1.⚓Element Selector&lt;br&gt;
This is one of the most fundamental selectors in CSS. You may use the element selector to pick and style all elements with the same name. Because you won't have to use class for each piece, you'll end up writing a lot less code.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ccRmgZ-p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lbfxm51itlkfphkmf11r.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ccRmgZ-p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lbfxm51itlkfphkmf11r.jpg" alt="Image description" width="680" height="346"&gt;&lt;/a&gt;&lt;br&gt;
2.⚓Class Selector&lt;br&gt;
Perhaps the most often used CSS selection is the class selector. The class selector is defined by a period (.) followed by the class name. Every element that matches the class inherits the style you write. A single element can have numerous classes applied to it.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--udY_-vFE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/brreifebzmnzyf1n1mpi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--udY_-vFE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/brreifebzmnzyf1n1mpi.jpg" alt="Image description" width="679" height="381"&gt;&lt;/a&gt;&lt;br&gt;
3.⚓ID Selector&lt;br&gt;
The ID selector styles a single element with a unique ID. The # sign is followed by the element's unique ID to utilise the ID selector. Because IDs are unique to each element, they can't be used to style many elements at the same time.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--R_1PwwQL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0te9nwrn26lq036ui2u0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R_1PwwQL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0te9nwrn26lq036ui2u0.jpg" alt="Image description" width="680" height="382"&gt;&lt;/a&gt;&lt;br&gt;
4.⚓Attribute Selector&lt;br&gt;
You may pick all elements by the name or value of a particular attribute and apply style to them using [square brackets] using an attribute selector. If you need to style point-specific components, it can be quite beneficial.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oMWz0R_H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kbmlqh22twcpc0jt72z8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oMWz0R_H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kbmlqh22twcpc0jt72z8.jpg" alt="Image description" width="679" height="326"&gt;&lt;/a&gt;&lt;br&gt;
5.⚓Descendant Selector&lt;br&gt;
Only those elements that are descendants of a given element are styled with descendant selectors. &lt;em&gt;element space&amp;gt; descendant&lt;/em&gt; is the syntax. For example, any h1 inside a div with the class name "myDiv" may be styled.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GzQaG1wR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dxn9vibktjy9drssqcc0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GzQaG1wR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dxn9vibktjy9drssqcc0.jpg" alt="Image description" width="679" height="382"&gt;&lt;/a&gt;&lt;br&gt;
6.⚓Child Selector&lt;br&gt;
You may use the DesceChild selector to pick all items that are children of a given element. &lt;em&gt;parent &amp;gt; child&lt;/em&gt; is the syntax. Child selectors are different from descendant selectors in that the latter only selects direct children. Only those elements that are descendants of a particular element are styled using ndant selectors. &lt;em&gt;element space&amp;gt; descendant&lt;/em&gt; is the syntax. For example, any h1 inside a div with the class name "myDiv" may be styled.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QATa557n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4hk9pzfbraeny3i2tg6k.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QATa557n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4hk9pzfbraeny3i2tg6k.jpg" alt="Image description" width="679" height="382"&gt;&lt;/a&gt;&lt;br&gt;
7.⚓Adjacent Selector&lt;br&gt;
When you wish to pick the items that come after the specified element, you use this selector (adjacent siblings). You'd have to use the syntax "element + sibling" to utilise this.&lt;br&gt;
8.⚓General Sibling Selector&lt;br&gt;
These are less rigorous than selectors for nearby siblings. It allows you to choose all siblings of a given element, even if they are not contiguous. We use " instead of '+' like we did in the neighbouring selection.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3laHPw3v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfqcquc6grkntn4ezkc9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3laHPw3v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zfqcquc6grkntn4ezkc9.jpg" alt="Image description" width="679" height="382"&gt;&lt;/a&gt;&lt;br&gt;
9.⚓Universal Selector&lt;br&gt;
It's also known as the star selector since it selects everything in the document and styles it. The element's style is defined by default by your browser, and you may alter it using the star selector. Simply type a (*) to utilise it.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rjofJdGx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/98p5ky6s86zdq7bnihow.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rjofJdGx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/98p5ky6s86zdq7bnihow.jpg" alt="Image description" width="680" height="409"&gt;&lt;/a&gt;&lt;br&gt;
10.⚓Pseudo Class Selector&lt;br&gt;
You may use pseudo-classes to style one element based on the status of another element, such as hover or active (:). Hover, active, visited, target, focus, and many other classes are available. 'element:pseudo-class' is the syntax.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jgKNlTxa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g325nnuuvodqs0rt0p0p.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jgKNlTxa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g325nnuuvodqs0rt0p0p.jpg" alt="Image description" width="679" height="382"&gt;&lt;/a&gt;&lt;br&gt;
11.⚓Pseudo Element Selector&lt;br&gt;
You may apply style to a specific chunk or fragment of the chosen element using the pseudo-element selector (::). Style the initial character, or line, of an element, for example. 'selector::pseudo-element' is the syntax.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FiH9_Sbg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ilrg31ofgtk6u891uemx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FiH9_Sbg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ilrg31ofgtk6u891uemx.jpg" alt="Image description" width="680" height="406"&gt;&lt;/a&gt;&lt;br&gt;
12.⚓nth-of-type&lt;br&gt;
This selector is used when you wish to apply a style to a 'nth' number of elements. Consider the following scenario: you have four lists. You may use the nth-of-type property to apply CSS solely to the second item of the ul (n).&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ARC_YhYv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c6l1iq17m4ba8w6j2858.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ARC_YhYv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c6l1iq17m4ba8w6j2858.jpg" alt="Image description" width="680" height="381"&gt;&lt;/a&gt;&lt;br&gt;
13.⚓nth-child&lt;br&gt;
The nth-child(n) selector matches any element that is the nth child of its parent, regardless of type. n can be a number, a keyword, or a formula that specifies an element's position among a set of siblings.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c-P5sGCY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/83zytea84hd51583260g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c-P5sGCY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/83zytea84hd51583260g.jpg" alt="Image description" width="680" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Burn it Down💥🍗! Feel to drop your favourite CSS Selector in the comments!To Know more about me &lt;a href="https://linktr.ee/freaking_wish"&gt;Click here&lt;/a&gt;!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>web3</category>
      <category>webcomponents</category>
    </item>
    <item>
      <title>Front-End Web Development with React #CompleteRoadMap</title>
      <dc:creator>SAGAR SATAPATHY</dc:creator>
      <pubDate>Mon, 21 Feb 2022 18:21:38 +0000</pubDate>
      <link>https://dev.to/freaking_wish/front-end-web-development-with-react-completeroadmap-1m3j</link>
      <guid>https://dev.to/freaking_wish/front-end-web-development-with-react-completeroadmap-1m3j</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Better you Practice Better you &lt;strong&gt;React&lt;/strong&gt; to it&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The goal of this chapter is to provide you with an understanding of the Frontend Development that focuses on the React ecosystem and to assist you in guiding your study if you are puzzled. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is ReactJs?
&lt;/h2&gt;

&lt;p&gt;ReactJs is an open-source JavaScript package used to create user interfaces for single-page apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is React a Library or a Framework?
&lt;/h2&gt;

&lt;p&gt;Before jumping to concluusion lets know about &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Library:-
A library is a set of methods that enable us to easily construct web apps. So, when you use a library to develop web apps, your code is in charge and just calls on the library's methods to achieve some recurring common action.&lt;/li&gt;
&lt;li&gt;Framework:-
A framework is a specific implementation of a web application in which the framework offers general functionality and your code fills in the specifics to modify that framework for the unique application functionality that you wish to implement.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Finally coming back to question ,React is a JavaScript library for building user interfaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why React?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Declarative :
&lt;/h3&gt;

&lt;p&gt;React makes it simple to design interactive user interfaces. Create basic views for each state of your application, and React will update and render only the necessary components when your data changes. Declarative views improve the predictability and debugability of your code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Component-Based:
&lt;/h3&gt;

&lt;p&gt;Create enclosed components that handle their own state, then combine them to create complicated user interfaces. Because component logic is implemented in JavaScript rather than templates, it is simple to transfer rich data around your app while keeping state out of the DOM.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn Once, Write Anywhere
&lt;/h3&gt;

&lt;p&gt;React may also be used to render on the server with Node and to power mobile apps with React Native. React allows you to create new features without having to rewrite current code.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Mind Map for React till Framework Selection&lt;br&gt;
&lt;a href="https://media.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%2Fpetk16laj0ntd3zor4q6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fpetk16laj0ntd3zor4q6.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  4 weeks React Topics:
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Week&lt;/th&gt;
&lt;th&gt;Topic&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Week 1&lt;/td&gt;
&lt;td&gt;Introduction to React&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Week 2&lt;/td&gt;
&lt;td&gt;React Router and Single Page Applications&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Week 3&lt;/td&gt;
&lt;td&gt;React Forms, Flow Architecture and Introduction to Redux&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Week 4&lt;/td&gt;
&lt;td&gt;More Redux and Client-Server Communication&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Detailed Weekwise Topics to be covered
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fhyjjpe8w6fpgpironol8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fhyjjpe8w6fpgpironol8.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Whatever library or framework you choose to study for web development, you must first master the fundamentals of the web, which include HTML, CSS, and JavaScript.&lt;/p&gt;

&lt;p&gt;There are a lot of common skills that you will need to master in order to become a developer, including:&lt;/p&gt;

&lt;p&gt;🐱‍💻GIT (Version Control System)&lt;br&gt;
🐱‍💻HTTP/HTTPS Protocol&lt;br&gt;
🐱‍💻Terminal Usage&lt;br&gt;
🐱‍💻Data Structures &amp;amp; Algorithm&lt;br&gt;
🐱‍💻Design Patterns&lt;/p&gt;

&lt;h1&gt;
  
  
  Knowledge You Need Have To Become a React Developer
&lt;/h1&gt;

&lt;p&gt;🐱‍🏍Build tools are software or programmes that automate the creation of executable applications from source code. It converts code into an executable format by linking, compiling, and packaging it.&lt;/p&gt;

&lt;p&gt;🐱‍🏍A system's state is its representation at a specific point in time. It refers to the data in the programme that is saved as an array, objects, or strings.&lt;/p&gt;

&lt;p&gt;🐱‍🏍Routing is the method of selecting a path for traffic across networks.&lt;/p&gt;

&lt;p&gt;🐱‍🏍API clients provide an interface for different applications to communicate with each other when a request is made.&lt;/p&gt;

&lt;p&gt;🐱‍🏍It's crucial to understand how to integrate backend frameworks with frontend frameworks so that they can operate together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Burn it Down💥🍗!To Know more about me &lt;a href="https://linktr.ee/freaking_wish" rel="noopener noreferrer"&gt;Click here&lt;/a&gt;!
&lt;/h2&gt;

</description>
      <category>react</category>
      <category>opensource</category>
      <category>github</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
