<?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: Israel Gabice</title>
    <description>The latest articles on DEV Community by Israel Gabice (@izzy_67ae55a540e).</description>
    <link>https://dev.to/izzy_67ae55a540e</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%2F3225474%2F8121f46b-fd16-4af3-b8e6-b8f99937e4d3.png</url>
      <title>DEV Community: Israel Gabice</title>
      <link>https://dev.to/izzy_67ae55a540e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/izzy_67ae55a540e"/>
    <language>en</language>
    <item>
      <title>Web Development Intro: HTML, CSS, JavaScript</title>
      <dc:creator>Israel Gabice</dc:creator>
      <pubDate>Mon, 09 Jun 2025 09:22:51 +0000</pubDate>
      <link>https://dev.to/izzy_67ae55a540e/web-development-intro-html-css-javascript-4h5n</link>
      <guid>https://dev.to/izzy_67ae55a540e/web-development-intro-html-css-javascript-4h5n</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction to HTML&lt;/strong&gt;&lt;br&gt;
HTML (HyperText Markup Language) is the foundation of web pages. It provides structure and content using elements called tags.&lt;br&gt;
Basic HTML Structure&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;title&amp;gt;Page Title&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;!-- Content goes here --&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Essential HTML Elements&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Headings: &lt;code&gt;&amp;lt;h1&amp;gt; to &amp;lt;h6&amp;gt;&lt;/code&gt;&lt;br&gt;
Paragraphs: &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;&lt;br&gt;
Links: &lt;code&gt;&amp;lt;a href="url"&amp;gt;Link text&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;br&gt;
Images: &lt;code&gt;&amp;lt;img src="image.jpg" alt="description"&amp;gt;&lt;/code&gt;&lt;br&gt;
Forms: &lt;code&gt;&amp;lt;form&amp;gt;, &amp;lt;input&amp;gt;, &amp;lt;button&amp;gt;&lt;/code&gt;&lt;br&gt;
Containers: &lt;code&gt;&amp;lt;div&amp;gt;, &amp;lt;section&amp;gt;, &amp;lt;header&amp;gt;, &amp;lt;main&amp;gt;, &amp;lt;footer&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Form Elements (Important for Login)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;form&amp;gt;
    &amp;lt;input type="text" placeholder="Username" required&amp;gt;
    &amp;lt;input type="password" placeholder="Password" required&amp;gt;
    &amp;lt;input type="email" placeholder="Email"&amp;gt;
    &amp;lt;button type="submit"&amp;gt;Submit&amp;lt;/button&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Introduction to CSS&lt;br&gt;
CSS (Cascading Style Sheets) controls the visual appearance of HTML elements.&lt;br&gt;
How to Include CSS&lt;/p&gt;

&lt;p&gt;Inline: &lt;code&gt;&amp;lt;div style="color: blue;"&amp;gt;&lt;/code&gt;&lt;br&gt;
Internal: &lt;code&gt;&amp;lt;style&amp;gt; tag in &amp;lt;head&amp;gt;&lt;/code&gt;&lt;br&gt;
External: &lt;code&gt;&amp;lt;link rel="stylesheet" href="styles.css"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;CSS Syntax&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;selector {
    property: value;
    property: value;
}
Common CSS Properties
css/* Colors and Backgrounds */
color: #333;
background-color: #f0f0f0;
background-image: url('image.jpg');

/* Typography */
font-family: Arial, sans-serif;
font-size: 16px;
font-weight: bold;
text-align: center;

/* Box Model */
width: 100px;
height: 50px;
padding: 10px;
margin: 20px;
border: 1px solid #ccc;

/* Layout */
display: flex;
justify-content: center;
align-items: center;
position: relative;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CSS Selectors&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* Element selector */
p { color: blue; }

/* Class selector */
.my-class { font-size: 18px; }

/* ID selector */
#my-id { background: yellow; }

/* Attribute selector */
input[type="password"] { border: 2px solid red; }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Introduction to JavaScript&lt;/strong&gt;&lt;br&gt;
JavaScript adds interactivity and dynamic behavior to web pages.&lt;br&gt;
Including JavaScript&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;html&amp;lt;!-- Internal JavaScript --&amp;gt;
&amp;lt;script&amp;gt;
    // JavaScript code here
&amp;lt;/script&amp;gt;

&amp;lt;!-- External JavaScript --&amp;gt;
&amp;lt;script src="script.js"&amp;gt;&amp;lt;/script&amp;gt;
JavaScript Basics
javascript// Variables
let username = "john";
const maxAttempts = 3;
var isLoggedIn = false;

// Functions
function greetUser(name) {
    return "Hello, " + name + "!";
}

// Arrow functions
const calculateAge = (birthYear) =&amp;gt; 2024 - birthYear;

// Conditionals
if (username === "admin") {
    console.log("Admin user detected");
} else {
    console.log("Regular user");
}

// Arrays and Objects
const users = ["john", "jane", "bob"];
const user = {
    name: "John Doe",
    email: "john@example.com",
    age: 25
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;DOM Manipulation&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;// Selecting elements
const loginForm = document.getElementById("loginForm");
const usernameInput = document.querySelector(".username");
const allButtons = document.querySelectorAll("button");

// Changing content
document.getElementById("welcome").textContent = "Welcome, John!";
document.querySelector(".profile-image").src = "new-image.jpg";

// Adding event listeners
loginForm.addEventListener("submit", function(event) {
    event.preventDefault(); // Prevent form submission
    // Handle login logic here
});

// Changing styles
document.getElementById("errorMessage").style.display = "block";
document.querySelector(".container").classList.add("hidden");
Local Storage (Data Persistence)
javascript// Save data
localStorage.setItem("username", "john");
localStorage.setItem("userProfile", JSON.stringify(userObject));

// Retrieve data
const savedUsername = localStorage.getItem("username");
const userProfile = JSON.parse(localStorage.getItem("userProfile"));

// Remove data
localStorage.removeItem("username");
localStorage.clear(); // Remove all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Assignment&lt;/strong&gt;: Building a Login System&lt;br&gt;
Project Overview&lt;br&gt;
Create a simple login system with two pages:&lt;/p&gt;

&lt;p&gt;Login Page: Username/password form with validation&lt;br&gt;
Profile Page: Display user information and profile image&lt;/p&gt;

&lt;p&gt;Requirements&lt;/p&gt;

&lt;p&gt;Login Page:&lt;/p&gt;

&lt;p&gt;Username and password input fields&lt;br&gt;
Form validation (check for empty fields)&lt;br&gt;
Hardcoded credentials for testing (username: "intern", password: "welcome123")&lt;br&gt;
Error message display for invalid credentials&lt;br&gt;
Redirect to profile page on successful login&lt;/p&gt;

&lt;p&gt;Profile Page:&lt;/p&gt;

&lt;p&gt;Display user profile information&lt;br&gt;
Show profile image&lt;br&gt;
Display welcome message with username&lt;br&gt;
Logout button that returns to login page&lt;br&gt;
Should only be accessible after login&lt;/p&gt;

&lt;p&gt;Technical Requirements:&lt;/p&gt;

&lt;p&gt;Use semantic HTML elements&lt;br&gt;
Responsive design with CSS&lt;br&gt;
Form validation with JavaScript&lt;br&gt;
Use localStorage to persist login state&lt;br&gt;
Clean, professional styling&lt;/p&gt;

&lt;p&gt;Step-by-Step Implementation&lt;br&gt;
&lt;strong&gt;Step 1&lt;/strong&gt;: Create the HTML Structure&lt;br&gt;
Create two HTML files: login.html and profile.html&lt;/p&gt;

&lt;p&gt;insert the code below into login.html:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;title&amp;gt;Login - Web Dev Tutorial&amp;lt;/title&amp;gt;
    &amp;lt;link rel="stylesheet" href="styles.css"&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div class="container"&amp;gt;
        &amp;lt;div class="login-form"&amp;gt;
            &amp;lt;h1&amp;gt;Welcome Back&amp;lt;/h1&amp;gt;
            &amp;lt;form id="loginForm"&amp;gt;
                &amp;lt;div class="form-group"&amp;gt;
                    &amp;lt;input type="text" id="username" placeholder="Username" required&amp;gt;
                &amp;lt;/div&amp;gt;
                &amp;lt;div class="form-group"&amp;gt;
                    &amp;lt;input type="password" id="password" placeholder="Password" required&amp;gt;
                &amp;lt;/div&amp;gt;
                &amp;lt;button type="submit"&amp;gt;Sign In&amp;lt;/button&amp;gt;
                &amp;lt;div id="errorMessage" class="error-message"&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;/form&amp;gt;
            &amp;lt;div class="demo-credentials"&amp;gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Demo Credentials:&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
                &amp;lt;p&amp;gt;Username: intern&amp;lt;/p&amp;gt;
                &amp;lt;p&amp;gt;Password: welcome123&amp;lt;/p&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;script src="login.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;next profile.html:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;title&amp;gt;Profile - Web Dev Tutorial&amp;lt;/title&amp;gt;
    &amp;lt;link rel="stylesheet" href="styles.css"&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div class="container"&amp;gt;
        &amp;lt;div class="profile-container"&amp;gt;
            &amp;lt;header class="profile-header"&amp;gt;
                &amp;lt;h1 id="welcomeMessage"&amp;gt;Welcome!&amp;lt;/h1&amp;gt;
                &amp;lt;button id="logoutBtn" class="logout-btn"&amp;gt;Logout&amp;lt;/button&amp;gt;
            &amp;lt;/header&amp;gt;

            &amp;lt;div class="profile-content"&amp;gt;
                &amp;lt;div class="profile-image-container"&amp;gt;
                    &amp;lt;img id="profileImage" src="https://via.placeholder.com/150" alt="Profile Picture" class="profile-image"&amp;gt;
                &amp;lt;/div&amp;gt;

                &amp;lt;div class="profile-info"&amp;gt;
                    &amp;lt;h2&amp;gt;Profile Information&amp;lt;/h2&amp;gt;
                    &amp;lt;div class="info-item"&amp;gt;
                        &amp;lt;strong&amp;gt;Username:&amp;lt;/strong&amp;gt; &amp;lt;span id="profileUsername"&amp;gt;-&amp;lt;/span&amp;gt;
                    &amp;lt;/div&amp;gt;
                    &amp;lt;div class="info-item"&amp;gt;
                        &amp;lt;strong&amp;gt;Email:&amp;lt;/strong&amp;gt; &amp;lt;span id="profileEmail"&amp;gt;-&amp;lt;/span&amp;gt;
                    &amp;lt;/div&amp;gt;
                    &amp;lt;div class="info-item"&amp;gt;
                        &amp;lt;strong&amp;gt;Role:&amp;lt;/strong&amp;gt; &amp;lt;span id="profileRole"&amp;gt;-&amp;lt;/span&amp;gt;
                    &amp;lt;/div&amp;gt;
                    &amp;lt;div class="info-item"&amp;gt;
                        &amp;lt;strong&amp;gt;Last Login:&amp;lt;/strong&amp;gt; &amp;lt;span id="lastLogin"&amp;gt;-&amp;lt;/span&amp;gt;
                    &amp;lt;/div&amp;gt;
                &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;script src="profile.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Adding Style with CSS&lt;/p&gt;

&lt;p&gt;styles.css:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
}

.container {
    width: 100%;
    max-width: 400px;
    padding: 20px;
}

/* Login Form Styles */
.login-form {
    background: white;
    padding: 2rem;
    border-radius: 10px;
    box-shadow: 0 15px 35px rgba(0, 0, 0, 0.1);
}

.login-form h1 {
    text-align: center;
    margin-bottom: 1.5rem;
    color: #333;
}

.form-group {
    margin-bottom: 1rem;
}

.form-group input {
    width: 100%;
    padding: 12px;
    border: 2px solid #ddd;
    border-radius: 5px;
    font-size: 14px;
    transition: border-color 0.3s;
}

.form-group input:focus {
    outline: none;
    border-color: #667eea;
}

button {
    width: 100%;
    padding: 12px;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    color: white;
    border: none;
    border-radius: 5px;
    font-size: 16px;
    cursor: pointer;
    transition: transform 0.2s;
}

button:hover {
    transform: translateY(-2px);
}

.error-message {
    color: #e74c3c;
    text-align: center;
    margin-top: 1rem;
    display: none;
}

.demo-credentials {
    margin-top: 1.5rem;
    padding: 1rem;
    background: #f8f9fa;
    border-radius: 5px;
    font-size: 14px;
    text-align: center;
}

/* Profile Page Styles */
.profile-container {
    background: white;
    padding: 2rem;
    border-radius: 10px;
    box-shadow: 0 15px 35px rgba(0, 0, 0, 0.1);
    width: 100%;
    max-width: 500px;
}

.profile-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 2rem;
    padding-bottom: 1rem;
    border-bottom: 2px solid #f0f0f0;
}

.profile-header h1 {
    color: #333;
}

.logout-btn {
    width: auto;
    padding: 8px 16px;
    background: #e74c3c;
    font-size: 14px;
}

.logout-btn:hover {
    background: #c0392b;
}

.profile-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2rem;
}

.profile-image-container {
    text-align: center;
}

.profile-image {
    width: 150px;
    height: 150px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid #667eea;
}

.profile-info {
    width: 100%;
}

.profile-info h2 {
    margin-bottom: 1rem;
    color: #333;
    text-align: center;
}

.info-item {
    display: flex;
    justify-content: space-between;
    padding: 0.5rem 0;
    border-bottom: 1px solid #f0f0f0;
}

.info-item:last-child {
    border-bottom: none;
}

/* Responsive Design */
@media (max-width: 480px) {
    .container {
        padding: 10px;
    }

    .profile-header {
        flex-direction: column;
        gap: 1rem;
        text-align: center;
    }

    .profile-content {
        gap: 1.5rem;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Add JavaScript Functionality&lt;br&gt;
login.js:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Check if user is already logged in
document.addEventListener('DOMContentLoaded', function() {
    const isLoggedIn = localStorage.getItem('isLoggedIn');
    if (isLoggedIn === 'true') {
        window.location.href = 'profile.html';
    }
});

// Handle login form submission
document.getElementById('loginForm').addEventListener('submit', function(event) {
    event.preventDefault();

    const username = document.getElementById('username').value;
    const password = document.getElementById('password').value;
    const errorMessage = document.getElementById('errorMessage');

    // Clear previous error messages
    errorMessage.style.display = 'none';
    errorMessage.textContent = '';

    // Validate inputs
    if (!username || !password) {
        showError('Please fill in all fields');
        return;
    }

    // Check credentials (hardcoded for demo)
    if (username === 'intern' &amp;amp;&amp;amp; password === 'welcome123') {
        // Successful login
        const userData = {
            username: username,
            email: 'intern@company.com',
            role: 'Web Development Intern',
            lastLogin: new Date().toLocaleString()
        };

        // Save login state and user data
        localStorage.setItem('isLoggedIn', 'true');
        localStorage.setItem('userData', JSON.stringify(userData));

        // Redirect to profile page
        window.location.href = 'profile.html';
    } else {
        showError('Invalid username or password');

        // Clear password field for security
        document.getElementById('password').value = '';
    }
});

function showError(message) {
    const errorMessage = document.getElementById('errorMessage');
    errorMessage.textContent = message;
    errorMessage.style.display = 'block';
}

// Handle Enter key press
document.addEventListener('keypress', function(event) {
    if (event.key === 'Enter') {
        document.getElementById('loginForm').dispatchEvent(new Event('submit'));
    }
});

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

&lt;/div&gt;



&lt;p&gt;profile.js:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Check if user is logged in
document.addEventListener('DOMContentLoaded', function() {
    const isLoggedIn = localStorage.getItem('isLoggedIn');
    const userData = localStorage.getItem('userData');

    if (isLoggedIn !== 'true' || !userData) {
        // Redirect to login if not logged in
        window.location.href = 'login.html';
        return;
    }

    // Parse user data and populate profile
    const user = JSON.parse(userData);
    populateProfile(user);
});

function populateProfile(user) {
    // Update welcome message
    document.getElementById('welcomeMessage').textContent = `Welcome, ${user.username}!`;

    // Update profile information
    document.getElementById('profileUsername').textContent = user.username;
    document.getElementById('profileEmail').textContent = user.email;
    document.getElementById('profileRole').textContent = user.role;
    document.getElementById('lastLogin').textContent = user.lastLogin;

    // Set profile image (you can customize this)
    const profileImage = document.getElementById('profileImage');
    profileImage.src = `https://ui-avatars.com/api/?name=${user.username}&amp;amp;background=667eea&amp;amp;color=fff&amp;amp;size=150`;
}

// Handle logout
document.getElementById('logoutBtn').addEventListener('click', function() {
    // Clear login state
    localStorage.removeItem('isLoggedIn');
    localStorage.removeItem('userData');

    // Redirect to login page
    window.location.href = 'login.html';
});

// Prevent back button after logout
window.addEventListener('pageshow', function(event) {
    if (event.persisted) {
        window.location.reload();
    }
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: Testing Your Application&lt;/p&gt;

&lt;p&gt;Open login.html in your browser&lt;br&gt;
Try logging in with incorrect credentials (should show error)&lt;br&gt;
Log in with correct credentials (username: "intern", password: "welcome123")&lt;br&gt;
Verify redirection to profile page&lt;br&gt;
Check that profile information displays correctly&lt;br&gt;
Test the logout functionality&lt;br&gt;
Try accessing profile.html directly (should redirect to login)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenges&lt;/strong&gt;&lt;br&gt;
Once you've completed the basic assignment, try these enhancements:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Form Validation: Add more detailed validation (minimum password length, email format)&lt;/li&gt;
&lt;li&gt;Loading States: Show loading spinner during login process&lt;/li&gt;
&lt;li&gt;Remember Me: Add checkbox to keep user logged in longer&lt;/li&gt;
&lt;li&gt;Password Visibility: Add toggle to show/hide password&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Git &amp; GitHub: The Complete Guide</title>
      <dc:creator>Israel Gabice</dc:creator>
      <pubDate>Fri, 30 May 2025 09:43:54 +0000</pubDate>
      <link>https://dev.to/izzy_67ae55a540e/git-github-the-complete-guide-24jm</link>
      <guid>https://dev.to/izzy_67ae55a540e/git-github-the-complete-guide-24jm</guid>
      <description>&lt;p&gt;Git &amp;amp; GitHub: The Complete Guide&lt;/p&gt;

&lt;p&gt;Git and GitHub together form the foundation of modern software development, used by everyone from solo developers to Fortune 500 companies. The platform continues to evolve with new features like Copilot X (AI-assisted development) and enhanced security tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Git?&lt;/strong&gt;&lt;br&gt;
Git is a distributed version control system created by Linus Torvalds in 2005. It allows developers to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track every change in their codebase&lt;/li&gt;
&lt;li&gt;Collaborate without overwriting each other's work&lt;/li&gt;
&lt;li&gt;Revert to previous versions if something breaks&lt;/li&gt;
&lt;li&gt;Maintain a complete history of all modifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key Features of Git:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Distributed Architecture: Every developer has a full copy of the repository with complete history&lt;/li&gt;
&lt;li&gt;Branching &amp;amp; Merging: Isolate new features or bug fixes in branches before merging&lt;/li&gt;
&lt;li&gt;Staging Area: Lets you choose exactly which changes get committed&lt;/li&gt;
&lt;li&gt;Speed &amp;amp; Efficiency: Optimized for performance even with large codebases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What is GitHub?&lt;/strong&gt;&lt;br&gt;
GitHub is a cloud-based hosting service for Git repositories with added collaboration features. Acquired by Microsoft in 2018, it offers:&lt;/p&gt;

&lt;p&gt;** GitHub's Core Features:**&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Repository Hosting: Cloud storage for Git projects&lt;/li&gt;
&lt;li&gt;Pull Requests: Code review system for team collaboration&lt;/li&gt;
&lt;li&gt;Issues: Bug tracking and project management&lt;/li&gt;
&lt;li&gt;Actions: CI/CD automation pipelines&lt;/li&gt;
&lt;li&gt;Pages: Free static website hosting&lt;/li&gt;
&lt;li&gt;Community: 100M+ developers and open-source projects&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Common Workflows&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Individual Developer Flow&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git init&lt;/code&gt; - Initialize new repo&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git add&lt;/code&gt; - Stage changes&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git commit&lt;/code&gt; - Save changes locally&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git push&lt;/code&gt; - Upload to GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Team Collaboration Flow&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;git clone&lt;/code&gt; -  existing repo&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git checkout -b feature-branch&lt;/code&gt; - Create new branch&lt;/li&gt;
&lt;li&gt;Make changes and commit&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git push origin feature-branch&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Create Pull Request on GitHub&lt;/li&gt;
&lt;li&gt;Teammates review and merge&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A Detailed Walkthrough of Every Concept and Command&lt;/p&gt;

&lt;p&gt;🎯 Lesson 1: Setting Up Git &amp;amp; GitHub&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Installing Git
What's Happening:
Git is a distributed version control system that tracks changes to your code. Installing it gives you access to all Git commands in your terminal.
Windows: The installer sets up Git Bash (a Unix-like terminal) and adds Git to your PATH.
Mac/Linux: Git integrates directly with the terminal.
Verify Installation:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git --version  # Output: git version 2.34.1 (or similar)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Configuring Git&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why This Matters:
Git needs to know who you are to attribute commits correctly.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config --global user.name "Your Name"       # Sets author name for all commits
git config --global user.email "your@email.com" # Sets author email
git config --global init.defaultBranch main     # Changes default branch from 'master' to 'main'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Behind the Scenes:
These settings are saved in ~/.gitconfig (home directory).&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Creating a GitHub Account
You can create a github account by visiting the url: github.com
Key Points:
GitHub hosts your repositories in the cloud.
Verified emails are required to create repositories.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;📂 Lesson 2: Creating Your First Repository&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Initializing a Local Repo
Step-by-Step:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir my-project      # Creates a directory
cd my-project         # Navigates into it
git init              # Initializes Git in this folder
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What Happens:&lt;br&gt;
A hidden .git folder is created (stores all version control data).&lt;br&gt;
Your directory is now a Git repository.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Making Your First Commit
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo "# My Project" &amp;gt; README.md  # Creates a README file
git add README.md                # Stages the file
git commit -m "Initial commit"   # Saves the changes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key Concepts:&lt;br&gt;
git add: Stages changes (prepares them for commit).&lt;br&gt;
git commit: Takes a snapshot of staged files.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connecting to GitHub
Process:
Create a new empty repository on GitHub (don’t initialize README).
Link your local repo:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote add origin https://github.com/yourusername/my-project.git
git push -u origin main  # Pushes to GitHub and sets 'main' as 
upstream branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What This Does:&lt;br&gt;
remote add origin: Links your local repo to GitHub.&lt;br&gt;
push -u origin main: Uploads commits and sets tracking.&lt;/p&gt;

&lt;p&gt;🌟 Lesson 3: Crafting Your GitHub Profile&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Profile Repository
Why It Works:
GitHub displays the README.md from yourusername/yourusername at the top of your profile.
Steps:
Create a repo exactly matching your username.
GitHub automatically recognizes it as your profile README.&lt;/li&gt;
&lt;li&gt;Writing a Dynamic README
Example with Badges:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# 👋 Hi, I'm Jane Doe  

## 🛠️ Tech Stack  
![Python](https://img.shields.io/badge/Python-3776AB?logo=python&amp;amp;logoColor=white)  
![Git](https://img.shields.io/badge/Git-F05032?logo=git&amp;amp;logoColor=white)  

## 📈 Stats  
![GitHub Stats](https://github-readme-stats.vercel.app/api?username=yourusername&amp;amp;show_icons=true)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key Tools:&lt;br&gt;
Shields.io: Creates badges.&lt;br&gt;
GitHub Readme Stats: Live stats.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Updating Your Profile
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add README.md
git commit -m "Update profile"
git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🌿 Lesson 4: Branching &amp;amp; Merging&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating a Branch
Why Branch?
Isolates new work (e.g., features, bug fixes) from the main codebase.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout -b add-feature  # Creates and switches to a new branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What Happens:&lt;br&gt;
Git creates a pointer (add-feature) to the current commit.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Making Changes in a Branch
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo "function hello() { return 'Hi!'; }" &amp;gt; script.js
git add script.js
git commit -m "Add hello function"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Merging to Main
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout main      # Switch back to main
git merge add-feature  # Brings changes from 'add-feature' into 'main'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Merge Types:&lt;br&gt;
Fast-forward: If no diverging changes.&lt;br&gt;
3-way merge: If branches diverged (creates a new commit).&lt;/p&gt;

&lt;p&gt;🤝 Lesson 5: Collaboration Workflows&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Forking a Repository
Purpose:
Creates your copy of someone else’s project (to propose changes via Pull Requests).
Steps:
Click "Fork" on any GitHub repo (e.g., Spoon-Knife).
Clone your fork:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
git clone https://github.com/yourusername/Spoon-Knife.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Syncing with Upstream
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote add upstream https://github.com/original/Spoon-Knife.git  # Links original repo
git pull upstream main  # Fetches latest changes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why This Matters:&lt;br&gt;
Keeps your fork updated with the original project.&lt;/p&gt;

&lt;p&gt;This is not a comprehensive tutorial on github but it helps you get started using git in your project. Git tracks changes via commits and branches while gitHub hosts repos and enables collaboration. After a couple of projects you'll realise the most used git commands are commit, push and pull. I hope this tutorial helps you to get started.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>git</category>
      <category>github</category>
    </item>
  </channel>
</rss>
