<?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: Manoj sai Challagulla</title>
    <description>The latest articles on DEV Community by Manoj sai Challagulla (@manoj_saichallagulla_798).</description>
    <link>https://dev.to/manoj_saichallagulla_798</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3890304%2F09b76549-19a1-4f6e-ace7-f00909f190ac.jpg</url>
      <title>DEV Community: Manoj sai Challagulla</title>
      <link>https://dev.to/manoj_saichallagulla_798</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/manoj_saichallagulla_798"/>
    <language>en</language>
    <item>
      <title>ViewModel LifeCycle Over Navigations</title>
      <dc:creator>Manoj sai Challagulla</dc:creator>
      <pubDate>Tue, 23 Jun 2026 07:18:01 +0000</pubDate>
      <link>https://dev.to/manoj_saichallagulla_798/viewmodel-lifecycle-over-navigations-45g5</link>
      <guid>https://dev.to/manoj_saichallagulla_798/viewmodel-lifecycle-over-navigations-45g5</guid>
      <description>&lt;h2&gt;
  
  
  When is a ViewModel Created?
&lt;/h2&gt;

&lt;p&gt;Suppose you have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ProfileViewModel&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;ViewModel&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;and inside your screen:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Composable&lt;/span&gt;
&lt;span class="k"&gt;fun&lt;/span&gt; &lt;span class="nf"&gt;ProfileScreen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;viewModel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;ProfileViewModel&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;viewModel&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The ViewModel is not created when the app starts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is created when the screen first requests it.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User opens Profile Screen
          ↓
viewModel() called
          ↓
Android checks:
"Do I already have a ProfileViewModel?"
          ↓
No
          ↓
Create ProfileViewModel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What happens during recomposition?
&lt;/h2&gt;

&lt;p&gt;Suppose state changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="nc"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;changes from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Manoj
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Manoj Sai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Compose recomposes.&lt;/p&gt;

&lt;p&gt;Many beginners think:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Screen recomposed
↓
ViewModel recreated

❌ Wrong.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The same ViewModel instance is reused.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Screen Recompose #1
      ↓
Same ViewModel

Screen Recompose #2
      ↓
Same ViewModel

Screen Recompose #100
      ↓
Same ViewModel

This is why ViewModels survive recompositions.

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  What happens during screen rotation?
&lt;/h2&gt;

&lt;p&gt;Imagine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Portrait&lt;br&gt;
↓&lt;br&gt;
Rotate&lt;br&gt;
↓&lt;br&gt;
Landscape&lt;/p&gt;

&lt;p&gt;Activity gets recreated.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Without ViewModel:

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;br&gt;
Data lost&lt;/p&gt;

&lt;p&gt;With ViewModel:&lt;/p&gt;

&lt;p&gt;Activity destroyed&lt;br&gt;
↓&lt;br&gt;
New Activity created&lt;br&gt;
↓&lt;br&gt;
Same ViewModel reused&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;That's one of the biggest reasons ViewModels exist.

## When is ViewModel Destroyed?

The ViewModel lives as long as its owner lives.

For example:

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;br&gt;
Profile Screen opened&lt;br&gt;
↓&lt;br&gt;
ViewModel created&lt;br&gt;
↓&lt;br&gt;
User stays on screen&lt;br&gt;
↓&lt;br&gt;
ViewModel alive&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Then:

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;br&gt;
User presses Back&lt;br&gt;
↓&lt;br&gt;
Profile screen removed&lt;br&gt;
↓&lt;br&gt;
ViewModel no longer needed&lt;br&gt;
↓&lt;br&gt;
onCleared()&lt;br&gt;
↓&lt;br&gt;
ViewModel destroyed&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
## What is onCleared()?

Before Android destroys the ViewModel it calls:

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
kotlin&lt;br&gt;
override fun onCleared() {&lt;br&gt;
    super.onCleared()&lt;br&gt;
}&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Think of it as:

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;br&gt;
"Hey ViewModel,&lt;br&gt;
I'm about to destroy you.&lt;br&gt;
Clean up anything you're using."&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
At this moment:

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
kotlin&lt;br&gt;
viewModelScope.cancel()&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
is automatically triggered.

Real Example with Navigation

Suppose:

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;br&gt;
HomeScreen&lt;br&gt;
    ↓&lt;br&gt;
ProfileScreen&lt;/p&gt;

&lt;p&gt;User opens Profile:&lt;/p&gt;

&lt;p&gt;ProfileScreen created&lt;br&gt;
↓&lt;br&gt;
ProfileViewModel created&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
User stays there:

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;br&gt;
ProfileViewModel alive&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User returns to Home:

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;br&gt;
ProfileScreen removed from back stack&lt;br&gt;
↓&lt;br&gt;
ProfileViewModel.onCleared()&lt;br&gt;
↓&lt;br&gt;
ProfileViewModel destroyed&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
## Navigation Compose Case

Suppose:

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;br&gt;
Home&lt;br&gt;
 ↓&lt;br&gt;
Profile&lt;br&gt;
 ↓&lt;br&gt;
Settings&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;/p&gt;

&lt;p&gt;Current back stack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Home
Profile
Settings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;/p&gt;

&lt;p&gt;When you're on Settings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ProfileViewModel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;/p&gt;

&lt;p&gt;may still be alive because Profile is still in the navigation back stack.&lt;/p&gt;

&lt;p&gt;Only when Profile is removed from the back stack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Home
Settings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;/p&gt;

&lt;p&gt;then:&lt;/p&gt;

&lt;p&gt;ProfileViewModel destroyed&lt;br&gt;
Complete Lifecycle&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
User opens screen
        ↓
Android creates ViewModel
        ↓
ViewModelScope created
        ↓
Coroutines launched
        ↓
Screen recomposes many times
        ↓
Same ViewModel reused
        ↓
User leaves screen permanently
        ↓
onCleared()
        ↓
viewModelScope cancelled
        ↓
All coroutines cancelled
        ↓
ViewModel destroyed

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

&lt;/div&gt;



&lt;p&gt;This is why we say:&lt;/p&gt;

&lt;p&gt;A ViewModel survives recompositions and configuration changes (like rotation), but it is destroyed when its owner is permanently removed and Android calls onCleared().&lt;/p&gt;

</description>
      <category>android</category>
      <category>architecture</category>
      <category>beginners</category>
      <category>mobile</category>
    </item>
    <item>
      <title>ViewModel VS Coroutine Scope</title>
      <dc:creator>Manoj sai Challagulla</dc:creator>
      <pubDate>Tue, 23 Jun 2026 07:05:01 +0000</pubDate>
      <link>https://dev.to/manoj_saichallagulla_798/viewmodel-vs-coroutine-scope-oln</link>
      <guid>https://dev.to/manoj_saichallagulla_798/viewmodel-vs-coroutine-scope-oln</guid>
      <description>&lt;h2&gt;
  
  
  1. Coroutine
&lt;/h2&gt;

&lt;p&gt;A coroutine is the actual background task.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="nf"&gt;launch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getProfile&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, the work is:&lt;/p&gt;

&lt;h2&gt;
  
  
  api.getProfile()
&lt;/h2&gt;

&lt;p&gt;So coroutine means:&lt;/p&gt;

&lt;p&gt;A lightweight task that can run without blocking the main thread.&lt;/p&gt;

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

&lt;p&gt;A CoroutineScope is like a container/manager for coroutines.&lt;/p&gt;

&lt;p&gt;It decides:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Where coroutine runs
How long coroutine lives
When coroutine should be cancelled
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;scope&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;CoroutineScope&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Dispatchers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IO&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;launch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// coroutine work&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;scope = manager
launch block = coroutine

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

&lt;/div&gt;



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

&lt;p&gt;viewModelScope is a special CoroutineScope given by Android to every ViewModel.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ProfileViewModel&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;ViewModel&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="k"&gt;fun&lt;/span&gt; &lt;span class="nf"&gt;loadProfile&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;viewModelScope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;launch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;repository&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getProfile&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning:&lt;/p&gt;

&lt;p&gt;Run this coroutine inside the ViewModel’s scope.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;4. Relationship
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Very important:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CoroutineScope is the general concept.

viewModelScope is one specific CoroutineScope.

Coroutine is the actual task running inside the scope.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ViewModel
   owns
viewModelScope
   manages
coroutines
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Visual:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ProfileViewModel&lt;br&gt;
│&lt;br&gt;
└── viewModelScope&lt;br&gt;
      │&lt;br&gt;
      ├── coroutine 1 → API call&lt;br&gt;
      ├── coroutine 2 → DB operation&lt;br&gt;
      └── coroutine 3 → file operation&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  5. Why use viewModelScope?
&lt;/h2&gt;

&lt;p&gt;Because it automatically cancels coroutines when ViewModel is cleared.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="n"&gt;viewModelScope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;launch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Done"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If user leaves the screen before 10 seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Screen closed
↓
ViewModel cleared
↓
viewModelScope cancelled
↓
Coroutine cancelled
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So "Done" will not print.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Without viewModelScope
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;scope&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;CoroutineScope&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Dispatchers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;IO&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;launch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Done"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here you created the scope manually.&lt;/p&gt;

&lt;p&gt;So you must cancel it manually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cancel&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Otherwise it may continue even after the screen is gone.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Final Note
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Write this in your notes:

Coroutine = actual background task.

CoroutineScope = manager/container that controls coroutines.

viewModelScope = Android-provided CoroutineScope attached to ViewModel.

When ViewModel is cleared, viewModelScope is automatically cancelled.

So all coroutines launched inside viewModelScope are also cancelled.

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

&lt;/div&gt;



&lt;p&gt;Best simple line:&lt;/p&gt;

&lt;p&gt;viewModelScope.launch { } means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Run this coroutine as long as the ViewModel is alive.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>android</category>
      <category>beginners</category>
      <category>mobile</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>WINDOWS USERS CRUD</title>
      <dc:creator>Manoj sai Challagulla</dc:creator>
      <pubDate>Mon, 22 Jun 2026 18:26:41 +0000</pubDate>
      <link>https://dev.to/manoj_saichallagulla_798/windows-users-crud-4hcg</link>
      <guid>https://dev.to/manoj_saichallagulla_798/windows-users-crud-4hcg</guid>
      <description>&lt;h2&gt;
  
  
  READ
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;whoami&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Who am I currently logged in as?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;user&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Show all users.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;user&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;username&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Show details of a user.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;localgroup&lt;/span&gt; &lt;span class="kd"&gt;Administrators&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Show all admins.&lt;/p&gt;

&lt;h2&gt;
  
  
  CREATE
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;user&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;username&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;password&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="na"&gt;/add
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Create a user.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;localgroup&lt;/span&gt; &lt;span class="kd"&gt;Administrators&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;username&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="na"&gt;/add
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Make a user an admin.&lt;/p&gt;

&lt;h2&gt;
  
  
  UPDATE
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;user&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;username&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;new_password&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Change password.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;user&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;username&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="na"&gt;/active&lt;/span&gt;&lt;span class="nl"&gt;:no&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Disable a user.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;user&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;username&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="na"&gt;/active&lt;/span&gt;&lt;span class="nl"&gt;:yes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Enable a user.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;localgroup&lt;/span&gt; &lt;span class="kd"&gt;Administrators&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;username&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="na"&gt;/delete
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Remove admin rights.&lt;/p&gt;

&lt;h2&gt;
  
  
  DELETE
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;user&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;username&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="na"&gt;/delete
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ Delete a user.&lt;/p&gt;

&lt;p&gt;The 8 commands I'd memorize&lt;br&gt;
whoami&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;user&lt;/span&gt;

&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;user&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;username&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;localgroup&lt;/span&gt; &lt;span class="kd"&gt;Administrators&lt;/span&gt;

&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;user&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;username&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;password&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="na"&gt;/add

&lt;/span&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;localgroup&lt;/span&gt; &lt;span class="kd"&gt;Administrators&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;username&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="na"&gt;/add

&lt;/span&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;localgroup&lt;/span&gt; &lt;span class="kd"&gt;Administrators&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;username&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="na"&gt;/delete

&lt;/span&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;user&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;username&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="na"&gt;/delete
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>USERS AND GROUPS IN WINDOWS</title>
      <dc:creator>Manoj sai Challagulla</dc:creator>
      <pubDate>Mon, 22 Jun 2026 18:01:12 +0000</pubDate>
      <link>https://dev.to/manoj_saichallagulla_798/users-and-groups-in-windows-1073</link>
      <guid>https://dev.to/manoj_saichallagulla_798/users-and-groups-in-windows-1073</guid>
      <description>&lt;h2&gt;
  
  
  First Principle
&lt;/h2&gt;

&lt;p&gt;A User and a Group are different things.&lt;/p&gt;

&lt;p&gt;Think of a college.&lt;/p&gt;

&lt;h2&gt;
  
  
  Students
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Manoj&lt;br&gt;
Rahul&lt;br&gt;
Priya&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;These are people.&lt;/p&gt;
&lt;h2&gt;
  
  
  Groups
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Students
Faculty
Principal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;These are roles.&lt;/p&gt;

&lt;p&gt;A person can belong to one or more groups.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Manoj
└── Students

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

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Principal
└── Faculty
└── Management
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Windows works exactly the same way.&lt;/p&gt;

&lt;p&gt;Windows Internal Structure&lt;/p&gt;

&lt;p&gt;When you create:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
manoj
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Windows only creates an identity.&lt;/p&gt;

&lt;p&gt;At this point Windows knows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="err"&gt;User&lt;/span&gt; &lt;span class="py"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;manoj&lt;/span&gt;
&lt;span class="py"&gt;SID&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;S-1-5-21-xxxx...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SID = Security Identifier.&lt;/p&gt;

&lt;p&gt;Internally Windows doesn't really care about the name.&lt;/p&gt;

&lt;p&gt;It identifies users by SID.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Groups Exist
&lt;/h2&gt;

&lt;p&gt;Imagine Windows had 1000 users.&lt;/p&gt;

&lt;p&gt;Without groups Microsoft would have to store permissions separately for every user.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Manoj -&amp;gt; Can install software
Rahul -&amp;gt; Can install software
Priya -&amp;gt; Can install software
John -&amp;gt; Can install software
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's inefficient.&lt;/p&gt;

&lt;p&gt;Instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Administrators
    ├── Manoj
    ├── Rahul
    ├── Priya
    └── John
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now Windows says:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Anyone inside Administrators
gets these permissions.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Much easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Windows Groups
&lt;/h2&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;localgroup&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see many groups.&lt;/p&gt;

&lt;p&gt;The important ones are:&lt;/p&gt;

&lt;h2&gt;
  
  
  Administrators
&lt;/h2&gt;

&lt;p&gt;Most powerful group.&lt;/p&gt;

&lt;p&gt;Members can:&lt;/p&gt;

&lt;p&gt;✅ Install software&lt;/p&gt;

&lt;p&gt;✅ Create users&lt;/p&gt;

&lt;p&gt;✅ Delete users&lt;/p&gt;

&lt;p&gt;✅ Access all files&lt;/p&gt;

&lt;p&gt;✅ Change passwords&lt;/p&gt;

&lt;p&gt;✅ Install drivers&lt;/p&gt;

&lt;p&gt;✅ Change system settings&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Administrators
├── Administrator
└── thriv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Users
&lt;/h2&gt;

&lt;p&gt;Default group.&lt;/p&gt;

&lt;p&gt;Almost everyone belongs here.&lt;/p&gt;

&lt;p&gt;Can:&lt;/p&gt;

&lt;p&gt;✅ Use apps&lt;/p&gt;

&lt;p&gt;✅ Browse internet&lt;/p&gt;

&lt;p&gt;✅ Save files&lt;/p&gt;

&lt;p&gt;Cannot:&lt;/p&gt;

&lt;p&gt;❌ Create users&lt;/p&gt;

&lt;p&gt;❌ Install drivers&lt;/p&gt;

&lt;p&gt;❌ Change system security&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Guests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Temporary users.&lt;/p&gt;

&lt;p&gt;Very limited access.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Someone borrows your laptop.&lt;/p&gt;

&lt;p&gt;You don't want them accessing your files.&lt;/p&gt;

&lt;p&gt;Create Guest account.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remote Desktop Users
&lt;/h2&gt;

&lt;p&gt;Can log into the computer remotely.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Remote Desktop Users
└── Manoj
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now Manoj can connect using Remote Desktop.&lt;/p&gt;

&lt;p&gt;What Happens During Login?&lt;/p&gt;

&lt;p&gt;Suppose:&lt;/p&gt;

&lt;p&gt;User = manoj&lt;/p&gt;

&lt;p&gt;Windows checks:&lt;/p&gt;

&lt;p&gt;Which groups does manoj belong to?&lt;/p&gt;

&lt;p&gt;Maybe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;manoj
├── Users
└── Administrators
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Windows loads permissions from both groups.&lt;/p&gt;

&lt;p&gt;Result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;manoj gets admin rights
Permission Calculation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Suppose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Administrators
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;has:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install Software
Delete Users
Change Settings
&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;Users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;has:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Run Programs
Save Files
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If Manoj belongs to both:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;manoj
├── Users
└── Administrators
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then Manoj gets:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Run Programs
Save Files
Install Software
Delete Users
Change Settings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Windows combines permissions.&lt;/p&gt;

&lt;p&gt;Real Example From Your Laptop&lt;/p&gt;

&lt;p&gt;Earlier:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;localgroup&lt;/span&gt; &lt;span class="kd"&gt;Administrators&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;showed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Administrator
thriv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;thriv
└── Administrators
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Therefore:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;thriv can:
- create users
- delete users
- install software
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;manoj
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;was not in that group.&lt;/p&gt;

&lt;p&gt;So:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;manoj
└── Users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only normal permissions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding User to Group
&lt;/h2&gt;

&lt;p&gt;This command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;localgroup&lt;/span&gt; &lt;span class="kd"&gt;Administrators&lt;/span&gt; &lt;span class="kd"&gt;manoj&lt;/span&gt; &lt;span class="na"&gt;/add
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;does NOT create a new user.&lt;/p&gt;

&lt;p&gt;It simply changes:&lt;/p&gt;

&lt;p&gt;Before:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;manoj
└── Users

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

&lt;/div&gt;



&lt;p&gt;After:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;manoj
├── Users
└── Administrators
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now Manoj becomes admin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Removing User From Group
&lt;/h2&gt;

&lt;p&gt;This command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;localgroup&lt;/span&gt; &lt;span class="kd"&gt;Administrators&lt;/span&gt; &lt;span class="kd"&gt;manoj&lt;/span&gt; &lt;span class="na"&gt;/delete
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;changes:&lt;/p&gt;

&lt;p&gt;Before:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;manoj
├── Users
└── Administrators
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;manoj
└── Users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Admin powers gone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Important Concept: UAC (User Account Control)
&lt;/h3&gt;

&lt;p&gt;You might have noticed:&lt;/p&gt;

&lt;p&gt;Even when you're an Administrator, Windows still asks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Do you want to allow this app to make changes?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because Windows doesn't want malware to get full admin power automatically.&lt;/p&gt;

&lt;p&gt;So even Admin users run with limited rights initially.&lt;/p&gt;

&lt;p&gt;When you click:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Run as Administrator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Windows temporarily gives full admin privileges.&lt;/p&gt;

&lt;p&gt;Linux Comparison (Useful for Backend Engineers)&lt;/p&gt;

&lt;p&gt;Since you're learning Django and servers:&lt;/p&gt;

&lt;p&gt;Windows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
↓
Group
↓
Permissions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Linux:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
↓
Group
↓
Permissions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exactly the same concept.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;in Linux is very similar to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Run as Administrator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;in Windows.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>microsoft</category>
      <category>security</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Troubleshooting Git Authentication: Fixing "Repository Not Found" on Private Repositories</title>
      <dc:creator>Manoj sai Challagulla</dc:creator>
      <pubDate>Mon, 22 Jun 2026 02:57:19 +0000</pubDate>
      <link>https://dev.to/manoj_saichallagulla_798/troubleshooting-git-authentication-fixing-repository-not-found-on-private-repositories-56hd</link>
      <guid>https://dev.to/manoj_saichallagulla_798/troubleshooting-git-authentication-fixing-repository-not-found-on-private-repositories-56hd</guid>
      <description>&lt;p&gt;When working with private Git repositories, running into a fatal: repository '...' not found error is incredibly common. It’s a frustrating roadblock, especially when you know the repository exists and that you have access to it in your web browser.&lt;/p&gt;

&lt;p&gt;This article walks through why this error happens and exactly how to fix it by clearing outdated credentials in Windows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Misconception: user.email vs. Authentication
&lt;/h2&gt;

&lt;p&gt;A common trap many developers fall into is assuming that configuring their global Git identity acts as a login key:&lt;/p&gt;

&lt;p&gt;Bash&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Your Name"&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"your.email@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Reality
&lt;/h2&gt;

&lt;p&gt;These commands only sign your work. They act like a handwritten signature at the bottom of a letter—anyone can write any email address they want there.&lt;/p&gt;

&lt;p&gt;git config settings are strictly used to stamp a name and profile picture onto commits.&lt;/p&gt;

&lt;p&gt;Authentication (cloning, pushing, pulling) relies entirely on separate cryptographic keys or Personal Access Tokens (PATs) managed by your operating system.&lt;/p&gt;

&lt;p&gt;When you attempt to clone a private repository and your local machine passes a stale, invalid token, GitHub won't say "Access Denied." For security reasons, it completely masks the repository and returns a Repository not found error so unauthorized users cannot verify a private project's existence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step-by-Step Resolution
&lt;/h2&gt;

&lt;p&gt;If you can see the repository perfectly fine in Google Chrome but your terminal throws a not found error, follow these steps to reset your connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Clear Caching in Windows Credential Manager
&lt;/h2&gt;

&lt;p&gt;Windows caches your Git authentication tokens using a tool called Credential Manager. If your token expires or changes, Windows keeps trying to use the old one anyway.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Press the Windows Key, type Credential Manager, and hit Enter.&lt;/li&gt;
&lt;li&gt;Click on Windows Credentials on the right side.&lt;/li&gt;
&lt;li&gt;Scroll down to the Generic Credentials section.&lt;/li&gt;
&lt;li&gt;Locate the entry named git:&lt;a href="https://github.com" rel="noopener noreferrer"&gt;https://github.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Click the small down arrow (˅) to expand it and click Remove or Delete.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 2: Trigger a Fresh Clone
&lt;/h2&gt;

&lt;p&gt;With the broken, cached token completely erased, head back to your terminal and execute your clone command again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Bash
git clone https://github.com/username/repository-name.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3: Authorize via Browser OAuth
&lt;/h2&gt;

&lt;p&gt;Because your saved credentials were deleted, Git Credential Manager will instantly prompt an automated browser popup to securely verify your identity.&lt;/p&gt;

&lt;p&gt;Click Sign in with your browser on the popup.&lt;/p&gt;

&lt;p&gt;Authorize the application on GitHub's secure page.&lt;/p&gt;

&lt;p&gt;Note on a common quirk: Once authorized, your browser might display a This site can’t be reached or 127.0.0.1 refused to connect error. You can safely ignore this!&lt;/p&gt;

&lt;p&gt;This happens because the temporary background authentication server closed the exact millisecond your token was successfully transferred to your terminal. Check your command line, and you will see the files downloading flawlessly:&lt;/p&gt;

&lt;p&gt;Plaintext&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;Cloning into 'repository'...
info: please complete authentication in your browser...
remote: Enumerating objects: 4913, done.
remote: Counting objects: 100% (306/306), done.
Updating files: 100% (405/405), done.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Conclusion&lt;br&gt;
Next time Git insists a private repository doesn't exist, skip editing your config file and head straight to the Windows Credential Manager. Wiping out the stale git:&lt;a href="https://github.com" rel="noopener noreferrer"&gt;https://github.com&lt;/a&gt; entry forces a clean handshake, getting you back to coding in less than a minute.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>cli</category>
      <category>git</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
