<?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: Ashish prajapati</title>
    <description>The latest articles on DEV Community by Ashish prajapati (@anticoder03).</description>
    <link>https://dev.to/anticoder03</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%2F1980090%2F4795ddaa-747b-4400-996c-d9b6ad841839.png</url>
      <title>DEV Community: Ashish prajapati</title>
      <link>https://dev.to/anticoder03</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anticoder03"/>
    <language>en</language>
    <item>
      <title>🚀 Spring Boot Journey – Day 6: Securing My Application with Spring Security</title>
      <dc:creator>Ashish prajapati</dc:creator>
      <pubDate>Fri, 17 Jul 2026 15:54:30 +0000</pubDate>
      <link>https://dev.to/anticoder03/spring-boot-journey-day-6-securing-my-application-with-spring-security-2281</link>
      <guid>https://dev.to/anticoder03/spring-boot-journey-day-6-securing-my-application-with-spring-security-2281</guid>
      <description>&lt;p&gt;Welcome to &lt;strong&gt;Day 6&lt;/strong&gt; of my Spring Boot learning journey! 🔐💚&lt;/p&gt;

&lt;p&gt;After building a complete Product Management System with a modern UI, it was time to make the application secure.&lt;/p&gt;

&lt;p&gt;A real-world application isn't just about displaying data—it also needs to ensure that only authorized users can access sensitive features. Today, I explored &lt;strong&gt;Spring Security&lt;/strong&gt; and learned how to implement &lt;strong&gt;Authentication&lt;/strong&gt; and &lt;strong&gt;Authorization&lt;/strong&gt; in a Spring Boot application.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛡️ Adding Spring Security
&lt;/h2&gt;

&lt;p&gt;The first step was adding the Spring Security dependency to my project.&lt;/p&gt;

&lt;p&gt;Once added, Spring Boot automatically secured the entire application by providing a &lt;strong&gt;default login page&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This was my first introduction to how easily Spring Boot can protect web applications with minimal configuration.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔑 Understanding Authentication
&lt;/h2&gt;

&lt;p&gt;Authentication answers one simple question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Who are you?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Spring Security provides multiple ways to authenticate users.&lt;/p&gt;

&lt;h3&gt;
  
  
  1️⃣ Default Authentication (Auto Generated)
&lt;/h3&gt;

&lt;p&gt;This is Spring Boot's default behavior.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Username: &lt;strong&gt;user&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Password: Automatically generated and printed in the console.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every time the application restarts, a new password is generated.&lt;/p&gt;

&lt;p&gt;While useful for testing, this isn't suitable for real applications because the password changes every time.&lt;/p&gt;




&lt;h3&gt;
  
  
  2️⃣ Username &amp;amp; Password in Properties File
&lt;/h3&gt;

&lt;p&gt;The second approach is to configure credentials directly inside the application's properties file.&lt;/p&gt;

&lt;p&gt;This allows developers to define a fixed username and password without relying on randomly generated credentials.&lt;/p&gt;

&lt;p&gt;It's simple and useful for small demo projects but still not ideal for production systems.&lt;/p&gt;




&lt;h3&gt;
  
  
  3️⃣ Custom Authentication
&lt;/h3&gt;

&lt;p&gt;Today I explored two custom authentication strategies:&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ In-Memory Authentication
&lt;/h2&gt;

&lt;p&gt;With In-Memory Authentication, users are stored directly inside the application.&lt;/p&gt;

&lt;p&gt;I created multiple users with different roles such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ADMIN&lt;/li&gt;
&lt;li&gt;USER&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Passwords were encrypted using &lt;strong&gt;BCryptPasswordEncoder&lt;/strong&gt;, ensuring they were stored securely rather than in plain text.&lt;/p&gt;

&lt;p&gt;This approach is great for learning, testing, and small applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ DAO Authentication
&lt;/h2&gt;

&lt;p&gt;The most exciting part of today's session was implementing &lt;strong&gt;DAO Authentication&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of hardcoding users, authentication now happens using data stored inside the database.&lt;/p&gt;

&lt;p&gt;The application fetches user details dynamically through a custom &lt;code&gt;UserDetailsService&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This approach is much closer to how authentication works in production applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔒 Understanding Authorization
&lt;/h2&gt;

&lt;p&gt;Authentication identifies the user.&lt;/p&gt;

&lt;p&gt;Authorization decides &lt;strong&gt;what that user is allowed to do&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Using Spring Security, I configured role-based access control.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;👤 &lt;strong&gt;USER&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View Products&lt;/li&gt;
&lt;li&gt;Add Products&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👨‍💼 &lt;strong&gt;ADMIN&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View Products&lt;/li&gt;
&lt;li&gt;Add Products&lt;/li&gt;
&lt;li&gt;Update Products&lt;/li&gt;
&lt;li&gt;Delete Products&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This ensures that sensitive operations are restricted to authorized users only.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔑 Password Encryption
&lt;/h2&gt;

&lt;p&gt;One important lesson today was never storing passwords in plain text.&lt;/p&gt;

&lt;p&gt;I used &lt;strong&gt;BCryptPasswordEncoder&lt;/strong&gt;, which hashes passwords before saving or comparing them.&lt;/p&gt;

&lt;p&gt;This is one of the most important security practices in modern web applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  👥 Custom UserDetailsService
&lt;/h2&gt;

&lt;p&gt;To connect Spring Security with the database, I implemented a custom &lt;code&gt;UserDetailsService&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Its responsibilities include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Searching users in the database&lt;/li&gt;
&lt;li&gt;Validating usernames&lt;/li&gt;
&lt;li&gt;Returning user information to Spring Security&lt;/li&gt;
&lt;li&gt;Loading user roles and permissions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows Spring Security to authenticate users using database records instead of hardcoded values.&lt;/p&gt;




&lt;h2&gt;
  
  
  🗃️ Role-Based Database Design
&lt;/h2&gt;

&lt;p&gt;To support multiple roles, I designed separate database tables for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Users&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Roles&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tables are connected through a relationship table, allowing a user to have one or more roles.&lt;/p&gt;

&lt;p&gt;This design is flexible and scalable for real-world applications where permissions may grow over time.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔄 Security Flow
&lt;/h2&gt;

&lt;p&gt;User Opens Application&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Spring Security Login Page&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Authentication&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Database Verification&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Load User &amp;amp; Roles&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Authorization Check&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Grant or Deny Access&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Application Dashboard&lt;/p&gt;




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

&lt;p&gt;✅ Spring Security&lt;/p&gt;

&lt;p&gt;✅ Authentication&lt;/p&gt;

&lt;p&gt;✅ Authorization&lt;/p&gt;

&lt;p&gt;✅ Default Login Page&lt;/p&gt;

&lt;p&gt;✅ In-Memory Authentication&lt;/p&gt;

&lt;p&gt;✅ DAO Authentication&lt;/p&gt;

&lt;p&gt;✅ UserDetailsService&lt;/p&gt;

&lt;p&gt;✅ UserDetails&lt;/p&gt;

&lt;p&gt;✅ AuthenticationProvider&lt;/p&gt;

&lt;p&gt;✅ BCrypt Password Encoding&lt;/p&gt;

&lt;p&gt;✅ Role-Based Authorization&lt;/p&gt;

&lt;p&gt;✅ SecurityFilterChain&lt;/p&gt;

&lt;p&gt;✅ Access Control&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 My Biggest Takeaway
&lt;/h2&gt;

&lt;p&gt;Today's session completely changed my understanding of backend development.&lt;/p&gt;

&lt;p&gt;Building APIs and beautiful user interfaces is important, but without proper security, an application isn't ready for real users.&lt;/p&gt;

&lt;p&gt;Learning how Spring Security handles authentication and authorization gave me a glimpse into how enterprise applications protect sensitive data and manage user access.&lt;/p&gt;

&lt;p&gt;With database-backed authentication and role-based authorization, my application now feels much closer to a production-ready system.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 What's Next?
&lt;/h2&gt;

&lt;p&gt;In the next stage of my journey, I plan to explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Registration Module&lt;/li&gt;
&lt;li&gt;User Signup&lt;/li&gt;
&lt;li&gt;Custom Login Page&lt;/li&gt;
&lt;li&gt;JWT Authentication&lt;/li&gt;
&lt;li&gt;OAuth2&lt;/li&gt;
&lt;li&gt;Session Management&lt;/li&gt;
&lt;li&gt;Remember Me&lt;/li&gt;
&lt;li&gt;Email Verification&lt;/li&gt;
&lt;li&gt;Password Reset&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every new concept brings me one step closer to becoming a full-stack Java developer. 💚&lt;/p&gt;




&lt;h3&gt;
  
  
  #SpringBootJourney Day 6
&lt;/h3&gt;

&lt;p&gt;Today's Achievements:&lt;/p&gt;

&lt;p&gt;✔ Spring Security Integration&lt;/p&gt;

&lt;p&gt;✔ Authentication&lt;/p&gt;

&lt;p&gt;✔ Authorization&lt;/p&gt;

&lt;p&gt;✔ Default Login Page&lt;/p&gt;

&lt;p&gt;✔ In-Memory Authentication&lt;/p&gt;

&lt;p&gt;✔ DAO Authentication&lt;/p&gt;

&lt;p&gt;✔ BCrypt Password Encoding&lt;/p&gt;

&lt;p&gt;✔ Database Users &amp;amp; Roles&lt;/p&gt;

&lt;p&gt;✔ Role-Based Access Control&lt;/p&gt;

&lt;p&gt;✔ Secure Product Management System&lt;/p&gt;

&lt;p&gt;Security isn't an extra feature—it's the foundation of every modern application. 🔐🚀&lt;/p&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>java</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🚀 Spring Boot Journey – Day 5: Building a Complete Product Management UI with CRUD Operations</title>
      <dc:creator>Ashish prajapati</dc:creator>
      <pubDate>Thu, 16 Jul 2026 17:36:58 +0000</pubDate>
      <link>https://dev.to/anticoder03/spring-boot-journey-day-5-building-a-complete-product-management-ui-with-crud-operations-4knk</link>
      <guid>https://dev.to/anticoder03/spring-boot-journey-day-5-building-a-complete-product-management-ui-with-crud-operations-4knk</guid>
      <description>&lt;p&gt;Welcome to &lt;strong&gt;Day 5&lt;/strong&gt; of my Spring Boot learning journey! 💚&lt;/p&gt;

&lt;p&gt;After creating my first user interface with &lt;strong&gt;Thymeleaf&lt;/strong&gt; and &lt;strong&gt;Tailwind CSS&lt;/strong&gt;, today's goal was to make the application fully interactive.&lt;/p&gt;

&lt;p&gt;Instead of just displaying products, I implemented a complete &lt;strong&gt;Product Management System&lt;/strong&gt; where users can create, update, delete, search, and even upload product images—all through a clean web interface.&lt;/p&gt;

&lt;p&gt;This felt like my first real-world CRUD application.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 What I Built Today
&lt;/h2&gt;

&lt;p&gt;Today's application supports complete &lt;strong&gt;CRUD (Create, Read, Update, Delete)&lt;/strong&gt; operations directly from the browser.&lt;/p&gt;

&lt;p&gt;Users can now:&lt;/p&gt;

&lt;p&gt;✅ View all products&lt;/p&gt;

&lt;p&gt;✅ Add a new product&lt;/p&gt;

&lt;p&gt;✅ Update existing products&lt;/p&gt;

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

&lt;p&gt;✅ Filter products by category&lt;/p&gt;

&lt;p&gt;✅ Upload product images&lt;/p&gt;

&lt;p&gt;Everything happens through the UI without needing Postman.&lt;/p&gt;




&lt;h2&gt;
  
  
  📝 Product Registration Form
&lt;/h2&gt;

&lt;p&gt;One of the biggest additions today was creating a product registration form.&lt;/p&gt;

&lt;p&gt;Instead of sending JSON requests manually, users can now enter product details through a web form.&lt;/p&gt;

&lt;p&gt;Spring Boot automatically maps the form fields to the Product object using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@ModelAttribute&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes form handling simple and eliminates the need for manually extracting request parameters.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖼️ Image Upload
&lt;/h2&gt;

&lt;p&gt;Today's most exciting feature was adding &lt;strong&gt;image upload support&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Using &lt;code&gt;MultipartFile&lt;/code&gt;, users can now upload a product image while creating a new product.&lt;/p&gt;

&lt;p&gt;The application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Receives the uploaded image&lt;/li&gt;
&lt;li&gt;Creates an uploads directory if it doesn't exist&lt;/li&gt;
&lt;li&gt;Generates a unique filename&lt;/li&gt;
&lt;li&gt;Saves the image locally&lt;/li&gt;
&lt;li&gt;Stores the image path in the database&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was my first experience handling file uploads in Spring Boot, and it made the application feel much more like a real e-commerce system.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✏️ Updating Products
&lt;/h2&gt;

&lt;p&gt;I also implemented the &lt;strong&gt;Update&lt;/strong&gt; functionality.&lt;/p&gt;

&lt;p&gt;When the user clicks the Edit button:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The selected product is loaded.&lt;/li&gt;
&lt;li&gt;Existing data is displayed in a form.&lt;/li&gt;
&lt;li&gt;Users can modify the details.&lt;/li&gt;
&lt;li&gt;The updated information is saved back to the database.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This taught me how to pre-fill forms with existing data and update records efficiently.&lt;/p&gt;




&lt;h2&gt;
  
  
  ❌ Delete Functionality
&lt;/h2&gt;

&lt;p&gt;Deleting products became much easier today.&lt;/p&gt;

&lt;p&gt;Users can simply click the Delete button, and Spring Boot removes the selected product from the database.&lt;/p&gt;

&lt;p&gt;Simple, fast, and user-friendly.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 Category-Based Search
&lt;/h2&gt;

&lt;p&gt;To improve the application further, I added category filtering.&lt;/p&gt;

&lt;p&gt;Now users can browse products based on their category instead of scrolling through the entire list.&lt;/p&gt;

&lt;p&gt;This feature demonstrates how backend filtering can provide a much better user experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎨 Improving the UI
&lt;/h2&gt;

&lt;p&gt;The project now feels much more complete thanks to &lt;strong&gt;Tailwind CSS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Today's improvements include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Responsive forms&lt;/li&gt;
&lt;li&gt;Styled buttons&lt;/li&gt;
&lt;li&gt;Product cards and tables&lt;/li&gt;
&lt;li&gt;Better spacing&lt;/li&gt;
&lt;li&gt;Hover animations&lt;/li&gt;
&lt;li&gt;Cleaner layout&lt;/li&gt;
&lt;li&gt;Improved user experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application is becoming more polished with every update.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔄 Complete Application Flow
&lt;/h2&gt;

&lt;p&gt;Browser&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Thymeleaf Form&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Controller&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Service&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Repository&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;MySQL Database&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Updated UI&lt;/p&gt;

&lt;p&gt;This flow helped me understand how frontend and backend work together in a Spring Boot MVC application.&lt;/p&gt;




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

&lt;p&gt;✅ Spring MVC Form Handling&lt;/p&gt;

&lt;p&gt;✅ &lt;code&gt;@ModelAttribute&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ &lt;code&gt;MultipartFile&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ File Upload in Spring Boot&lt;/p&gt;

&lt;p&gt;✅ Local File Storage&lt;/p&gt;

&lt;p&gt;✅ CRUD Operations through UI&lt;/p&gt;

&lt;p&gt;✅ Update Forms&lt;/p&gt;

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

&lt;p&gt;✅ Category-Based Filtering&lt;/p&gt;

&lt;p&gt;✅ Redirect After Form Submission&lt;/p&gt;

&lt;p&gt;✅ Dynamic Thymeleaf Pages&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 My Biggest Takeaway
&lt;/h2&gt;

&lt;p&gt;Today's session was one of the most rewarding so far.&lt;/p&gt;

&lt;p&gt;My application has evolved from a simple REST API into a functional web application where users can interact with data through an intuitive interface.&lt;/p&gt;

&lt;p&gt;Adding image uploads, CRUD operations, and search functionality made the project feel much closer to a production-ready product.&lt;/p&gt;

&lt;p&gt;Every new feature is helping me understand how full-stack applications are built using Spring Boot.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 What's Next?
&lt;/h2&gt;

&lt;p&gt;In the next phase of my journey, I plan to explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User Authentication &amp;amp; Login&lt;/li&gt;
&lt;li&gt;Spring Security&lt;/li&gt;
&lt;li&gt;Pagination &amp;amp; Sorting&lt;/li&gt;
&lt;li&gt;Validation&lt;/li&gt;
&lt;li&gt;Exception Handling for UI&lt;/li&gt;
&lt;li&gt;Dashboard &amp;amp; Analytics&lt;/li&gt;
&lt;li&gt;Deploying the Application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The journey continues—one feature at a time. 💚&lt;/p&gt;




&lt;h3&gt;
  
  
  #SpringBootJourney Day 5
&lt;/h3&gt;

&lt;p&gt;Today's Achievements:&lt;/p&gt;

&lt;p&gt;✔ Complete CRUD UI&lt;/p&gt;

&lt;p&gt;✔ Product Registration Form&lt;/p&gt;

&lt;p&gt;✔ Image Upload&lt;/p&gt;

&lt;p&gt;✔ Edit &amp;amp; Delete Products&lt;/p&gt;

&lt;p&gt;✔ Category Filter&lt;/p&gt;

&lt;p&gt;✔ Dynamic Thymeleaf Pages&lt;/p&gt;

&lt;p&gt;✔ Tailwind CSS Interface&lt;/p&gt;

&lt;p&gt;From REST APIs to a fully interactive Product Management System—one step closer to building production-ready web applications. 🚀&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>java</category>
      <category>springboot</category>
      <category>productivity</category>
    </item>
    <item>
      <title>🚀 Spring Boot Journey – Day 4: Building My First UI with Thymeleaf &amp; Tailwind CSS</title>
      <dc:creator>Ashish prajapati</dc:creator>
      <pubDate>Wed, 15 Jul 2026 17:34:56 +0000</pubDate>
      <link>https://dev.to/anticoder03/spring-boot-journey-day-4-building-my-first-ui-with-thymeleaf-tailwind-css-hg4</link>
      <guid>https://dev.to/anticoder03/spring-boot-journey-day-4-building-my-first-ui-with-thymeleaf-tailwind-css-hg4</guid>
      <description>&lt;p&gt;Welcome to &lt;strong&gt;Day 4&lt;/strong&gt; of my Spring Boot learning journey! 💚&lt;/p&gt;

&lt;p&gt;Until now, I had been testing all my REST APIs using &lt;strong&gt;Postman&lt;/strong&gt;. While Postman is an excellent tool for API development and testing, it's not something that end users interact with.&lt;/p&gt;

&lt;p&gt;So today, I took the next step toward building a real-world application by creating a &lt;strong&gt;web interface&lt;/strong&gt; using &lt;strong&gt;Thymeleaf&lt;/strong&gt; and &lt;strong&gt;Tailwind CSS&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Why Move Beyond Postman?
&lt;/h2&gt;

&lt;p&gt;REST APIs are the backbone of backend development, but users don't interact with APIs directly.&lt;/p&gt;

&lt;p&gt;Instead, they use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Websites&lt;/li&gt;
&lt;li&gt;Dashboards&lt;/li&gt;
&lt;li&gt;Admin Panels&lt;/li&gt;
&lt;li&gt;E-commerce Applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To bridge the gap between the backend and the frontend, I integrated &lt;strong&gt;Thymeleaf&lt;/strong&gt; into my Spring Boot project.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Setting Up Thymeleaf
&lt;/h2&gt;

&lt;p&gt;The first step was adding the &lt;strong&gt;Thymeleaf dependency&lt;/strong&gt; to my project.&lt;/p&gt;

&lt;p&gt;Thymeleaf is a Java template engine that allows us to create dynamic HTML pages by rendering data directly from Spring Boot.&lt;/p&gt;

&lt;p&gt;After adding the dependency, I created a new folder named:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src
 └── main
      └── resources
            └── templates
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every HTML page that Spring Boot renders is placed inside the &lt;strong&gt;templates&lt;/strong&gt; folder.&lt;/p&gt;




&lt;h2&gt;
  
  
  📦 Creating the Product Page
&lt;/h2&gt;

&lt;p&gt;Instead of returning JSON responses, I created a controller that returns an HTML page.&lt;/p&gt;

&lt;p&gt;The controller fetches all products from the database, stores them inside the &lt;strong&gt;Model&lt;/strong&gt;, and passes that data to the view.&lt;/p&gt;

&lt;p&gt;The flow now looks like this:&lt;/p&gt;

&lt;p&gt;Browser Request&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Controller&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Service&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Repository&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;MySQL&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Model&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Thymeleaf HTML Page&lt;/p&gt;




&lt;h2&gt;
  
  
  📄 Displaying Dynamic Data
&lt;/h2&gt;

&lt;p&gt;Using &lt;strong&gt;Thymeleaf&lt;/strong&gt;, I displayed all product records inside an HTML table.&lt;/p&gt;

&lt;p&gt;Instead of hardcoding values, I used dynamic expressions to display:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product ID&lt;/li&gt;
&lt;li&gt;Product Title&lt;/li&gt;
&lt;li&gt;Price&lt;/li&gt;
&lt;li&gt;Description&lt;/li&gt;
&lt;li&gt;Category&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;th:each&lt;/code&gt; attribute made it incredibly easy to loop through every product and generate table rows automatically.&lt;/p&gt;

&lt;p&gt;This was my first experience connecting backend data directly to the frontend.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎨 Styling with Tailwind CSS
&lt;/h2&gt;

&lt;p&gt;A plain HTML table works, but it doesn't look very attractive.&lt;/p&gt;

&lt;p&gt;To improve the UI, I integrated &lt;strong&gt;Tailwind CSS&lt;/strong&gt; using the CDN version.&lt;/p&gt;

&lt;p&gt;With just utility classes, I created:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clean table layout&lt;/li&gt;
&lt;li&gt;Responsive container&lt;/li&gt;
&lt;li&gt;Rounded corners&lt;/li&gt;
&lt;li&gt;Hover effects&lt;/li&gt;
&lt;li&gt;Modern typography&lt;/li&gt;
&lt;li&gt;Better spacing&lt;/li&gt;
&lt;li&gt;Shadow effects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without writing a single line of traditional CSS, the page looked much more professional.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔄 MVC Architecture in Action
&lt;/h2&gt;

&lt;p&gt;Today's project helped me understand the &lt;strong&gt;Model-View-Controller (MVC)&lt;/strong&gt; pattern.&lt;/p&gt;

&lt;h3&gt;
  
  
  Model
&lt;/h3&gt;

&lt;p&gt;Contains the data fetched from the database.&lt;/p&gt;

&lt;h3&gt;
  
  
  View
&lt;/h3&gt;

&lt;p&gt;The Thymeleaf HTML page responsible for displaying the data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Controller
&lt;/h3&gt;

&lt;p&gt;Receives the request, fetches the data from the Service layer, and sends it to the View.&lt;/p&gt;

&lt;p&gt;This architecture keeps the application clean, modular, and easy to maintain.&lt;/p&gt;




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

&lt;p&gt;✅ Thymeleaf Template Engine&lt;/p&gt;

&lt;p&gt;✅ MVC Architecture&lt;/p&gt;

&lt;p&gt;✅ Model Object&lt;/p&gt;

&lt;p&gt;✅ Passing Data from Controller to View&lt;/p&gt;

&lt;p&gt;✅ Dynamic HTML using Thymeleaf&lt;/p&gt;

&lt;p&gt;✅ &lt;code&gt;th:each&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ &lt;code&gt;th:text&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ Tailwind CSS Integration&lt;/p&gt;

&lt;p&gt;✅ Responsive Table Design&lt;/p&gt;

&lt;p&gt;✅ Rendering Database Records on a Web Page&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 My Biggest Takeaway
&lt;/h2&gt;

&lt;p&gt;Today was an exciting milestone in my Spring Boot journey.&lt;/p&gt;

&lt;p&gt;Until yesterday, everything existed only as APIs returning JSON responses.&lt;/p&gt;

&lt;p&gt;Today, I transformed those APIs into an actual user interface.&lt;/p&gt;

&lt;p&gt;Seeing data from MySQL displayed beautifully inside a browser made the application feel much closer to a real-world product.&lt;/p&gt;

&lt;p&gt;This also showed me how Spring Boot and Thymeleaf work seamlessly together to build dynamic web applications.&lt;/p&gt;

&lt;p&gt;The combination of &lt;strong&gt;Spring Boot + Thymeleaf + Tailwind CSS&lt;/strong&gt; provides a powerful foundation for creating modern, responsive, and user-friendly applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 What's Next?
&lt;/h2&gt;

&lt;p&gt;In the upcoming days, I plan to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add forms to insert new products&lt;/li&gt;
&lt;li&gt;Edit existing products&lt;/li&gt;
&lt;li&gt;Delete products from the UI&lt;/li&gt;
&lt;li&gt;Upload product images&lt;/li&gt;
&lt;li&gt;Build a complete Product Management Dashboard&lt;/li&gt;
&lt;li&gt;Make the interface fully responsive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The journey continues, one project at a time. 💚&lt;/p&gt;




&lt;h3&gt;
  
  
  #SpringBootJourney Day 4
&lt;/h3&gt;

&lt;p&gt;Today's Progress:&lt;/p&gt;

&lt;p&gt;✔ Integrated Thymeleaf&lt;/p&gt;

&lt;p&gt;✔ Created Templates Folder&lt;/p&gt;

&lt;p&gt;✔ Connected Spring Boot with HTML&lt;/p&gt;

&lt;p&gt;✔ Passed Data Using Model&lt;/p&gt;

&lt;p&gt;✔ Displayed Dynamic Product Data&lt;/p&gt;

&lt;p&gt;✔ Styled the UI with Tailwind CSS&lt;/p&gt;

&lt;p&gt;From APIs to beautiful user interfaces—one step closer to building complete full-stack applications. 🚀&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>beginners</category>
      <category>java</category>
      <category>springboot</category>
    </item>
    <item>
      <title>🚀 Spring Boot Journey – Day 3: Mastering CRUD Operations, Lombok &amp; JPA Query Methods</title>
      <dc:creator>Ashish prajapati</dc:creator>
      <pubDate>Mon, 13 Jul 2026 17:14:37 +0000</pubDate>
      <link>https://dev.to/anticoder03/spring-boot-journey-day-3-mastering-crud-operations-lombok-jpa-query-methods-ank</link>
      <guid>https://dev.to/anticoder03/spring-boot-journey-day-3-mastering-crud-operations-lombok-jpa-query-methods-ank</guid>
      <description>&lt;p&gt;Welcome to &lt;strong&gt;Day 3&lt;/strong&gt; of my Spring Boot learning journey! 💚&lt;/p&gt;

&lt;p&gt;Today's session was packed with practical concepts that are used in almost every real-world Spring Boot application. I moved beyond creating simple APIs and started building a complete CRUD application while learning how Spring Boot simplifies backend development.&lt;/p&gt;




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

&lt;p&gt;Today I implemented the complete &lt;strong&gt;CRUD (Create, Read, Update, Delete)&lt;/strong&gt; functionality for my Student Management application.&lt;/p&gt;

&lt;p&gt;The REST APIs now support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;➕ Create a Student&lt;/li&gt;
&lt;li&gt;📖 Read all Students&lt;/li&gt;
&lt;li&gt;🔍 Read a single Student&lt;/li&gt;
&lt;li&gt;✏️ Update Student details&lt;/li&gt;
&lt;li&gt;❌ Delete a Student&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also learned how different HTTP methods map to REST APIs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;POST&lt;/strong&gt; → Create Data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GET&lt;/strong&gt; → Fetch Data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PUT&lt;/strong&gt; → Update Data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DELETE&lt;/strong&gt; → Remove Data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding these methods helped me see how backend APIs communicate with frontend applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Adding Multiple Records
&lt;/h2&gt;

&lt;p&gt;Instead of inserting one record at a time, I learned how to save &lt;strong&gt;multiple student records&lt;/strong&gt; using a single API request.&lt;/p&gt;

&lt;p&gt;Spring Data JPA provides the &lt;code&gt;saveAll()&lt;/code&gt; method, making bulk insertion extremely simple and efficient.&lt;/p&gt;

&lt;p&gt;This feature is especially useful when importing large datasets.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Making Code Cleaner with Lombok
&lt;/h2&gt;

&lt;p&gt;One of my favorite topics today was &lt;strong&gt;Lombok&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Previously, every entity required writing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Constructors&lt;/li&gt;
&lt;li&gt;Getters&lt;/li&gt;
&lt;li&gt;Setters&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toString()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;equals()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hashCode()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, with just a few annotations like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@Data&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@NoArgsConstructor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@AllArgsConstructor&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lombok generates all that code automatically.&lt;/p&gt;

&lt;p&gt;This makes the project cleaner, shorter, and much easier to maintain.&lt;/p&gt;




&lt;h2&gt;
  
  
  🗄️ Repository Layer with Spring Data JPA
&lt;/h2&gt;

&lt;p&gt;Today I explored the power of &lt;strong&gt;Spring Data JPA&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of writing SQL queries manually, Spring Boot generates queries automatically based on method names.&lt;/p&gt;

&lt;p&gt;Some custom repository methods I added include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find students by department&lt;/li&gt;
&lt;li&gt;Find students whose date of birth is after a given date&lt;/li&gt;
&lt;li&gt;Find students whose date of birth is before a given date&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It was amazing to see that simply naming methods correctly allows Spring Boot to generate the required SQL behind the scenes.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 JPA Query Methods
&lt;/h2&gt;

&lt;p&gt;Today I learned about &lt;strong&gt;Query Method Naming&lt;/strong&gt; in Spring Data JPA.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;findByDepartment()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;findByDobAfter()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;findByDobBefore()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Spring Boot automatically understands these method names and creates the appropriate database queries without requiring any SQL.&lt;/p&gt;

&lt;p&gt;This is one of the features that makes Spring Data JPA so powerful and developer-friendly.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚠️ Exception Handling
&lt;/h2&gt;

&lt;p&gt;Applications should never fail silently.&lt;/p&gt;

&lt;p&gt;To improve my project, I implemented exception handling for situations where a student record doesn't exist.&lt;/p&gt;

&lt;p&gt;Now, instead of unexpected behavior, the application returns a meaningful error message when someone tries to access or delete a student that isn't available.&lt;/p&gt;

&lt;p&gt;This improves both reliability and user experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ Project Architecture
&lt;/h2&gt;

&lt;p&gt;My project now follows the standard layered architecture:&lt;/p&gt;

&lt;p&gt;Client Request&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Controller&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Service&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Repository&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;MySQL Database&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Response&lt;/p&gt;

&lt;p&gt;Keeping responsibilities separated makes the application easier to understand, test, and maintain.&lt;/p&gt;




&lt;h2&gt;
  
  
  📖 Key Concepts Covered Today
&lt;/h2&gt;

&lt;p&gt;✅ CRUD Operations&lt;/p&gt;

&lt;p&gt;✅ HTTP Methods (GET, POST, PUT, DELETE)&lt;/p&gt;

&lt;p&gt;✅ Bulk Insert using &lt;code&gt;saveAll()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ Lombok Annotations&lt;/p&gt;

&lt;p&gt;✅ Spring Data JPA Repository&lt;/p&gt;

&lt;p&gt;✅ JPA Query Methods&lt;/p&gt;

&lt;p&gt;✅ Filtering Data using Repository Methods&lt;/p&gt;

&lt;p&gt;✅ Exception Handling&lt;/p&gt;

&lt;p&gt;✅ Layered Architecture&lt;/p&gt;




&lt;h2&gt;
  
  
  💭 My Takeaway
&lt;/h2&gt;

&lt;p&gt;Today's session made me realize how much Spring Boot reduces repetitive work.&lt;/p&gt;

&lt;p&gt;With Lombok, I no longer need to write boilerplate code.&lt;/p&gt;

&lt;p&gt;With Spring Data JPA, I can fetch filtered data without writing SQL.&lt;/p&gt;

&lt;p&gt;And with proper exception handling, my APIs become much more reliable.&lt;/p&gt;

&lt;p&gt;Every day I'm getting closer to building production-ready backend applications, and it's exciting to see how everything connects together.&lt;/p&gt;

&lt;p&gt;Looking forward to learning more advanced Spring Boot concepts in the coming days! 🚀&lt;/p&gt;




&lt;h3&gt;
  
  
  #SpringBootJourney Day 3
&lt;/h3&gt;

&lt;p&gt;Today's progress:&lt;/p&gt;

&lt;p&gt;✔ CRUD Operations&lt;/p&gt;

&lt;p&gt;✔ Lombok&lt;/p&gt;

&lt;p&gt;✔ JPA Repository&lt;/p&gt;

&lt;p&gt;✔ Query Methods&lt;/p&gt;

&lt;p&gt;✔ Exception Handling&lt;/p&gt;

&lt;p&gt;One day. One project. One step closer to becoming a Java Backend Developer. 💚&lt;/p&gt;

</description>
      <category>java</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>🚀 Spring Boot Journey – Day 2: Setting Up My Development Environment &amp; Building My First REST API</title>
      <dc:creator>Ashish prajapati</dc:creator>
      <pubDate>Sat, 11 Jul 2026 17:23:43 +0000</pubDate>
      <link>https://dev.to/anticoder03/spring-boot-journey-day-2-setting-up-my-development-environment-building-my-first-rest-api-30ho</link>
      <guid>https://dev.to/anticoder03/spring-boot-journey-day-2-setting-up-my-development-environment-building-my-first-rest-api-30ho</guid>
      <description>&lt;p&gt;Welcome to &lt;strong&gt;Day 2&lt;/strong&gt; of my Spring Boot learning journey! 👋&lt;/p&gt;

&lt;p&gt;After understanding the fundamentals of Spring Boot on Day 1, today I moved from theory to practice by setting up my complete development environment and building my very first Spring Boot application.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Development Environment
&lt;/h2&gt;

&lt;p&gt;To begin my Spring Boot development, I set up the following tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Eclipse IDE&lt;/strong&gt; – For writing and managing Java code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MySQL&lt;/strong&gt; – To store application data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spring Boot&lt;/strong&gt; – The backend framework.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maven&lt;/strong&gt; – For dependency management and project building.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With everything installed and configured, I was finally ready to write some code.&lt;/p&gt;




&lt;h2&gt;
  
  
  📦 Creating My First Entity: Product
&lt;/h2&gt;

&lt;p&gt;The first class I created was a simple &lt;code&gt;Product&lt;/code&gt; class.&lt;/p&gt;

&lt;p&gt;It contains three fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;price&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Along with that, I manually wrote:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Constructors&lt;/li&gt;
&lt;li&gt;Getters&lt;/li&gt;
&lt;li&gt;Setters&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;toString()&lt;/code&gt; method&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At first glance, the code looks quite lengthy because Java requires a lot of boilerplate code for a simple class.&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;Note:&lt;/strong&gt; In upcoming days, I'll learn &lt;strong&gt;Lombok&lt;/strong&gt;, which automatically generates constructors, getters, setters, and other methods, making the code much cleaner and easier to maintain.&lt;/p&gt;




&lt;h2&gt;
  
  
  🗂️ Understanding Spring Boot Project Structure
&lt;/h2&gt;

&lt;p&gt;To follow Spring Boot's layered architecture, I created three important layers:&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 Controller Layer
&lt;/h3&gt;

&lt;p&gt;The Controller acts as the entry point for client requests.&lt;/p&gt;

&lt;p&gt;I created two REST endpoints:&lt;/p&gt;

&lt;h3&gt;
  
  
  GET &lt;code&gt;/get-all&lt;/code&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Retrieves all products.&lt;/li&gt;
&lt;li&gt;Returns a list of products wrapped inside a &lt;code&gt;ResponseEntity&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Sends an HTTP &lt;strong&gt;200 OK&lt;/strong&gt; status.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  POST &lt;code&gt;/save-prod&lt;/code&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Accepts a Product object using &lt;code&gt;@RequestBody&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Saves the product.&lt;/li&gt;
&lt;li&gt;Returns the saved product with HTTP &lt;strong&gt;201 CREATED&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using &lt;code&gt;ResponseEntity&lt;/code&gt; allows us to send both the response data and the appropriate HTTP status code.&lt;/p&gt;




&lt;h3&gt;
  
  
  📌 Repository Layer
&lt;/h3&gt;

&lt;p&gt;Next, I created a &lt;code&gt;ProductRepository&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Instead of writing SQL queries manually, I simply extended:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;JpaRepository&amp;lt;Product, Integer&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This provides several built-in database operations like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;save()&lt;/li&gt;
&lt;li&gt;findAll()&lt;/li&gt;
&lt;li&gt;findById()&lt;/li&gt;
&lt;li&gt;delete()&lt;/li&gt;
&lt;li&gt;update()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;without writing any implementation code.&lt;/p&gt;

&lt;p&gt;That's one of the biggest advantages of Spring Data JPA.&lt;/p&gt;




&lt;h3&gt;
  
  
  📌 Service Layer
&lt;/h3&gt;

&lt;p&gt;The Service layer contains the application's business logic.&lt;/p&gt;

&lt;p&gt;Here, I created methods to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fetch all products.&lt;/li&gt;
&lt;li&gt;Save a new product.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The service communicates with the repository, while the controller communicates with the service.&lt;/p&gt;

&lt;p&gt;This layered architecture keeps the code organized and easier to maintain.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔄 Request Flow
&lt;/h2&gt;

&lt;p&gt;The complete flow of my application looks like this:&lt;/p&gt;

&lt;p&gt;Client Request&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Controller&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Service&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Repository&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;MySQL Database&lt;/p&gt;

&lt;p&gt;⬇️&lt;/p&gt;

&lt;p&gt;Response Back to Client&lt;/p&gt;

&lt;p&gt;This separation of responsibilities is one of the core principles of Spring Boot development.&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Concepts I Learned Today
&lt;/h2&gt;

&lt;p&gt;✅ Setting up Eclipse for Spring Boot development&lt;/p&gt;

&lt;p&gt;✅ Configuring MySQL&lt;/p&gt;

&lt;p&gt;✅ Creating a Spring Boot project&lt;/p&gt;

&lt;p&gt;✅ Understanding layered architecture&lt;/p&gt;

&lt;p&gt;✅ Creating an Entity class&lt;/p&gt;

&lt;p&gt;✅ Building a Repository using JPA&lt;/p&gt;

&lt;p&gt;✅ Writing a Service layer&lt;/p&gt;

&lt;p&gt;✅ Creating REST APIs using &lt;code&gt;@GetMapping&lt;/code&gt; and &lt;code&gt;@PostMapping&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ Using &lt;code&gt;@RequestBody&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ Returning responses with &lt;code&gt;ResponseEntity&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💭 My Takeaway
&lt;/h2&gt;

&lt;p&gt;Today was my first real step into backend development with Spring Boot.&lt;/p&gt;

&lt;p&gt;Although the project is simple, it helped me understand how different layers of a Spring Boot application communicate with each other. I also realized why Spring Boot is so popular—it lets developers focus on application logic instead of writing repetitive code.&lt;/p&gt;

&lt;p&gt;There's still a lot to learn, but building something that actually runs and responds to API requests feels incredibly rewarding.&lt;/p&gt;

&lt;p&gt;Tomorrow I'll continue exploring more Spring Boot concepts and improve this project step by step.&lt;/p&gt;

&lt;p&gt;Thank you for following my journey! 🚀&lt;/p&gt;




&lt;h3&gt;
  
  
  #SpringBootJourney Day 2
&lt;/h3&gt;

&lt;p&gt;Learning never stops.&lt;/p&gt;

&lt;p&gt;One concept.&lt;/p&gt;

&lt;p&gt;One project.&lt;/p&gt;

&lt;p&gt;One day at a time. 💚&lt;/p&gt;

</description>
      <category>api</category>
      <category>beginners</category>
      <category>java</category>
      <category>springboot</category>
    </item>
    <item>
      <title>🚀 Spring Boot Journey - Day 1: Introduction to Spring Boot</title>
      <dc:creator>Ashish prajapati</dc:creator>
      <pubDate>Fri, 10 Jul 2026 15:50:45 +0000</pubDate>
      <link>https://dev.to/anticoder03/spring-boot-journey-day-1-introduction-to-spring-boot-3ab5</link>
      <guid>https://dev.to/anticoder03/spring-boot-journey-day-1-introduction-to-spring-boot-3ab5</guid>
      <description>&lt;p&gt;Today I started my Spring Boot learning journey! 🌱&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 What is Spring Boot?
&lt;/h2&gt;

&lt;p&gt;Spring Boot is an extension of the Spring Framework that makes it easy to build Java applications quickly. It reduces boilerplate configuration and helps developers create production-ready applications with minimal setup.&lt;/p&gt;

&lt;p&gt;Instead of spending hours configuring XML files and dependencies, Spring Boot lets you focus on writing business logic.&lt;/p&gt;




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

&lt;p&gt;✅ Auto Configuration&lt;br&gt;
Automatically configures your application based on the dependencies you add.&lt;/p&gt;

&lt;p&gt;✅ Starter Dependencies&lt;br&gt;
Provides pre-configured dependency bundles like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;spring-boot-starter-web&lt;/li&gt;
&lt;li&gt;spring-boot-starter-data-jpa&lt;/li&gt;
&lt;li&gt;spring-boot-starter-security&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ Embedded Servers&lt;br&gt;
No need to install Tomcat separately. Spring Boot comes with embedded servers like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tomcat (Default)&lt;/li&gt;
&lt;li&gt;Jetty&lt;/li&gt;
&lt;li&gt;Undertow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ Production Ready&lt;br&gt;
Includes built-in features like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Health Checks&lt;/li&gt;
&lt;li&gt;Metrics&lt;/li&gt;
&lt;li&gt;Monitoring&lt;/li&gt;
&lt;li&gt;Logging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ Minimal Configuration&lt;br&gt;
Most configurations work out of the box using sensible defaults.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ How Spring Boot Works
&lt;/h2&gt;

&lt;p&gt;1️⃣ You create a Spring Boot project.&lt;br&gt;
2️⃣ Add the required starter dependencies.&lt;br&gt;
3️⃣ Write Java classes.&lt;br&gt;
4️⃣ Run the main application class.&lt;br&gt;
5️⃣ Spring Boot automatically configures the application and starts the embedded server.&lt;br&gt;
6️⃣ Your application is ready to serve requests.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Advantages
&lt;/h2&gt;

&lt;p&gt;✔ Faster Development&lt;br&gt;
✔ Less Configuration&lt;br&gt;
✔ Easy Dependency Management&lt;br&gt;
✔ Embedded Web Server&lt;br&gt;
✔ Microservice Friendly&lt;br&gt;
✔ Production Ready&lt;br&gt;
✔ Easy Testing&lt;br&gt;
✔ Large Community Support&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;Difference between Spring and Spring Boot&lt;/li&gt;
&lt;li&gt;Why Spring Boot is widely used&lt;/li&gt;
&lt;li&gt;Auto Configuration&lt;/li&gt;
&lt;li&gt;Starter Dependencies&lt;/li&gt;
&lt;li&gt;Embedded Servers&lt;/li&gt;
&lt;li&gt;Production-ready features&lt;/li&gt;
&lt;li&gt;Basic project structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is just Day 1 of my Spring Boot journey. Looking forward to exploring REST APIs, JPA, Hibernate, Microservices, Security, and much more in the coming days! 💻☕&lt;/p&gt;

&lt;h1&gt;
  
  
  SpringBoot #Java #BackendDevelopment #Programming #LearningInPublic #JavaDeveloper #100DaysOfCode #SoftwareDevelopment #CodingJourney #Developers
&lt;/h1&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>api</category>
      <category>java</category>
    </item>
    <item>
      <title>My GitHub Streak Broke</title>
      <dc:creator>Ashish prajapati</dc:creator>
      <pubDate>Sat, 20 Jun 2026 03:35:21 +0000</pubDate>
      <link>https://dev.to/anticoder03/my-github-streak-broke-3gg7</link>
      <guid>https://dev.to/anticoder03/my-github-streak-broke-3gg7</guid>
      <description>&lt;h2&gt;
  
  
  My GitHub Streak Broke, and It Taught Me an Important Lesson
&lt;/h2&gt;

&lt;p&gt;Hi, I'm &lt;strong&gt;Anticoder03&lt;/strong&gt;, a developer who genuinely likes seeing GitHub turn green.&lt;/p&gt;

&lt;p&gt;I enjoy being consistent, building projects, learning new technologies, and contributing every day. Like many developers, I was dedicated to maintaining my GitHub streak.&lt;/p&gt;

&lt;p&gt;But one day, it broke.&lt;/p&gt;

&lt;p&gt;Not because I stopped loving development or because I lost motivation. I was simply exhausted from balancing classes, assignments, tests, and everything that comes with being a student.&lt;/p&gt;

&lt;p&gt;The streak was gone.&lt;/p&gt;

&lt;p&gt;At first, it felt disappointing. After spending so much time keeping it alive, losing it in a single day felt frustrating.&lt;/p&gt;

&lt;p&gt;Then I asked myself an important question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does a GitHub streak really define me as a developer?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My answer is &lt;strong&gt;no&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Don't get me wrong. I know streaks have value. They encourage consistency, discipline, and the habit of showing up every day.&lt;/p&gt;

&lt;p&gt;But they also have limits.&lt;/p&gt;

&lt;p&gt;A number on GitHub cannot define how good you are as a developer.&lt;/p&gt;

&lt;p&gt;I remember there were times when I would make meaningless commits or simply update my profile README just to keep the streak alive.&lt;/p&gt;

&lt;p&gt;Looking back, I asked myself:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did those commits actually matter?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not really.&lt;/p&gt;

&lt;p&gt;We are not bots designed to build streaks every day.&lt;/p&gt;

&lt;p&gt;We are human beings.&lt;/p&gt;

&lt;p&gt;We get tired.&lt;/p&gt;

&lt;p&gt;We experience burnout.&lt;/p&gt;

&lt;p&gt;We need breaks.&lt;/p&gt;

&lt;p&gt;Sometimes, taking a step away from the screen is more productive than forcing ourselves to make a commit just for the sake of preserving a number.&lt;/p&gt;

&lt;p&gt;I was so focused on maintaining the streak that I forgot the real purpose behind it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learning. Building. Growing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So let me ask you another question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If your streak disappears tomorrow, does that mean you suddenly lose all your value as a developer?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Absolutely not.&lt;/p&gt;

&lt;p&gt;You still know the technologies you've learned.&lt;/p&gt;

&lt;p&gt;You still know how to solve problems.&lt;/p&gt;

&lt;p&gt;You still know how to overcome challenges.&lt;/p&gt;

&lt;p&gt;Your skills don't disappear just because a green square does.&lt;/p&gt;

&lt;p&gt;Sometimes, losing something teaches us something new.&lt;/p&gt;

&lt;p&gt;And honestly, I'm glad my streak broke because it gave me a new perspective.&lt;/p&gt;

&lt;p&gt;Will I build another streak?&lt;/p&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;But this time, I want every contribution to have meaning. I want to create things that add value, teach me something, or genuinely satisfy me as a developer.&lt;/p&gt;

&lt;p&gt;And if my streak breaks again in the future, it won't be because I failed.&lt;/p&gt;

&lt;p&gt;It will be because I chose to rest.&lt;/p&gt;

&lt;p&gt;I'm currently a Master's student learning AI and Data Science, and during this journey, I also took a long break from writing.&lt;/p&gt;

&lt;p&gt;When I returned, the first thing I did was read the comments people had left on my previous posts. Their words gave me new energy to start writing again.&lt;/p&gt;

&lt;p&gt;This post isn't only about technology.&lt;/p&gt;

&lt;p&gt;It's about balance.&lt;/p&gt;

&lt;p&gt;It's about remembering that behind every GitHub profile is a real person, not a machine.&lt;/p&gt;

&lt;p&gt;So if you've been stressing over your streak lately, this is your reminder:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build skills, not pressure.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create value, not meaningless commits.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Protect your passion, because consistency is important, but sustainability is even more important.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At the end of the day, your GitHub profile is only a small reflection of your journey. It is not the definition of who you are as a developer.&lt;/p&gt;

&lt;p&gt;Thank you for reading. ❤️&lt;/p&gt;

</description>
      <category>github</category>
      <category>programming</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Why You Should Start Using Linux</title>
      <dc:creator>Ashish prajapati</dc:creator>
      <pubDate>Sun, 14 Jun 2026 18:30:19 +0000</pubDate>
      <link>https://dev.to/anticoder03/why-you-should-start-using-linux-1o0a</link>
      <guid>https://dev.to/anticoder03/why-you-should-start-using-linux-1o0a</guid>
      <description>&lt;p&gt;A few years ago, I thought Linux was only for hackers, programmers, and people who spent their entire day inside a terminal.&lt;/p&gt;

&lt;p&gt;I was wrong.&lt;/p&gt;

&lt;p&gt;Linux is one of the most powerful, flexible, and reliable operating systems available today, and it's becoming easier to use than ever before.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 Performance Matters
&lt;/h3&gt;

&lt;p&gt;Many Linux distributions use significantly fewer system resources than Windows. Older laptops and desktops that struggle with modern operating systems often feel surprisingly fast again after switching to Linux.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔒 Better Security
&lt;/h3&gt;

&lt;p&gt;Linux is built with security in mind. Its permission system, open-source nature, and lower malware targeting make it a strong choice for users who care about protecting their data.&lt;/p&gt;

&lt;h3&gt;
  
  
  💰 Completely Free
&lt;/h3&gt;

&lt;p&gt;No expensive licenses. No activation keys. No forced upgrades.&lt;/p&gt;

&lt;p&gt;Most Linux distributions are completely free to download, use, and customize.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛠 Perfect for Developers
&lt;/h3&gt;

&lt;p&gt;Whether you're working with web development, cloud computing, containers, AI, cybersecurity, or DevOps, Linux provides a development environment that's hard to beat.&lt;/p&gt;

&lt;p&gt;Many of the technologies powering the internet run on Linux servers.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎨 Freedom and Customization
&lt;/h3&gt;

&lt;p&gt;Want your desktop to look minimal? Modern? Futuristic?&lt;/p&gt;

&lt;p&gt;Linux gives you complete control over your system. You can customize nearly every aspect of your experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌍 Amazing Community
&lt;/h3&gt;

&lt;p&gt;One of Linux's biggest strengths is its community. Thousands of developers and enthusiasts contribute to improving the ecosystem and helping newcomers learn.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Linux Perfect?
&lt;/h3&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Some specialized software and certain games may still work better on Windows. There can also be a learning curve when you're getting started.&lt;/p&gt;

&lt;p&gt;But if you're curious about technology, want more control over your computer, or simply want a faster and more secure experience, Linux is absolutely worth trying.&lt;/p&gt;

&lt;p&gt;You don't have to switch overnight.&lt;/p&gt;

&lt;p&gt;Start with beginner-friendly distributions like Ubuntu, Linux Mint, or Fedora. Experiment, explore, and learn.&lt;/p&gt;

&lt;p&gt;You might discover that the operating system you've been looking for has been open source all along.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>developers</category>
      <category>opensource</category>
      <category>techtalks</category>
    </item>
    <item>
      <title>Why CRUD Apps Are Slowly Dying</title>
      <dc:creator>Ashish prajapati</dc:creator>
      <pubDate>Wed, 20 May 2026 16:17:06 +0000</pubDate>
      <link>https://dev.to/anticoder03/why-crud-apps-are-slowly-dying-14pn</link>
      <guid>https://dev.to/anticoder03/why-crud-apps-are-slowly-dying-14pn</guid>
      <description>&lt;p&gt;It’s been a while since I last wrote something technical.&lt;/p&gt;

&lt;p&gt;Academics, projects, and work kept me busy for quite some time, but now I finally have a little space to start writing and building consistently again.&lt;/p&gt;

&lt;p&gt;And honestly, there’s no better topic to restart with than this.&lt;/p&gt;




&lt;p&gt;For years, beginner developers were told to build &lt;strong&gt;CRUD applications&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Todo apps&lt;/li&gt;
&lt;li&gt;Inventory systems&lt;/li&gt;
&lt;li&gt;Basic dashboards&lt;/li&gt;
&lt;li&gt;Admin panels&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And honestly, that made sense.&lt;/p&gt;

&lt;p&gt;CRUD apps taught developers the fundamentals of software engineering:&lt;/p&gt;

&lt;p&gt;✅ Databases&lt;br&gt;
✅ APIs&lt;br&gt;
✅ Authentication&lt;br&gt;
✅ Backend logic&lt;br&gt;
✅ Frontend integration&lt;/p&gt;

&lt;p&gt;They became the foundation of modern web development.&lt;/p&gt;


&lt;h2&gt;
  
  
  But the Industry Has Changed
&lt;/h2&gt;

&lt;p&gt;Today, AI can generate a basic CRUD application in minutes.&lt;/p&gt;

&lt;p&gt;Need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a login system?&lt;/li&gt;
&lt;li&gt;a product dashboard?&lt;/li&gt;
&lt;li&gt;REST APIs?&lt;/li&gt;
&lt;li&gt;database models?&lt;/li&gt;
&lt;li&gt;admin panels?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI tools can now build most of it instantly.&lt;/p&gt;

&lt;p&gt;The barrier to creating repetitive software has collapsed.&lt;/p&gt;


&lt;h2&gt;
  
  
  Does That Mean Software Engineering Is Dead?
&lt;/h2&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;It means the &lt;strong&gt;value has shifted&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Companies are no longer impressed by applications that only perform:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create → Read → Update → Delete&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because CRUD is becoming &lt;em&gt;automation-friendly&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;What matters now is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;System architecture&lt;/li&gt;
&lt;li&gt;Scalability&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;AI integration&lt;/li&gt;
&lt;li&gt;Real-time systems&lt;/li&gt;
&lt;li&gt;Developer experience&lt;/li&gt;
&lt;li&gt;Performance optimization&lt;/li&gt;
&lt;li&gt;Solving actual business problems&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  The Real Shift Happening in Tech
&lt;/h2&gt;

&lt;p&gt;The developers who will thrive in the AI era are not the ones who can only build forms and tables.&lt;/p&gt;

&lt;p&gt;They are the ones who can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Design scalable systems&lt;/li&gt;
&lt;li&gt;Build intelligent workflows&lt;/li&gt;
&lt;li&gt;Understand infrastructure&lt;/li&gt;
&lt;li&gt;Optimize performance&lt;/li&gt;
&lt;li&gt;Integrate AI into products&lt;/li&gt;
&lt;li&gt;Think beyond boilerplate code&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  CRUD Is Becoming a Feature — Not the Product
&lt;/h2&gt;

&lt;p&gt;That’s the biggest shift modern developers need to understand.&lt;/p&gt;

&lt;p&gt;Building software is no longer just about:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;createUser&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;updateProduct&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;deleteTask&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It’s about building systems that are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;intelligent&lt;/li&gt;
&lt;li&gt;scalable&lt;/li&gt;
&lt;li&gt;secure&lt;/li&gt;
&lt;li&gt;adaptive&lt;/li&gt;
&lt;li&gt;user-focused&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Skills That Matter More in 2026
&lt;/h2&gt;

&lt;p&gt;Modern developers should start learning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI-assisted development&lt;/li&gt;
&lt;li&gt;Cloud &amp;amp; Edge Computing&lt;/li&gt;
&lt;li&gt;DevSecOps&lt;/li&gt;
&lt;li&gt;Scalable backend architecture&lt;/li&gt;
&lt;li&gt;WebSockets &amp;amp; real-time systems&lt;/li&gt;
&lt;li&gt;Vector databases &amp;amp; RAG&lt;/li&gt;
&lt;li&gt;Cybersecurity fundamentals&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Final Thought
&lt;/h1&gt;

&lt;p&gt;AI is not replacing developers.&lt;/p&gt;

&lt;p&gt;It’s replacing repetitive development.&lt;/p&gt;

&lt;p&gt;The future belongs to developers who can:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;build systems, solve problems, and think architecturally.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And honestly?&lt;/p&gt;

&lt;p&gt;That shift is already happening.&lt;/p&gt;

&lt;p&gt;Feels good to finally start writing again.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>programming</category>
      <category>career</category>
      <category>learning</category>
    </item>
    <item>
      <title>🚀 From Excel to Web App: How I Built a Smart Assignment Management System for 125 Students</title>
      <dc:creator>Ashish prajapati</dc:creator>
      <pubDate>Sun, 12 Oct 2025 06:46:38 +0000</pubDate>
      <link>https://dev.to/anticoder03/from-excel-to-web-app-how-i-built-a-smart-assignment-management-system-for-125-students-3jac</link>
      <guid>https://dev.to/anticoder03/from-excel-to-web-app-how-i-built-a-smart-assignment-management-system-for-125-students-3jac</guid>
      <description>&lt;h2&gt;
  
  
  👋 Introduction
&lt;/h2&gt;

&lt;p&gt;Hey everyone! I’m &lt;strong&gt;Ashish&lt;/strong&gt;, an &lt;strong&gt;MCA student&lt;/strong&gt; — and, like most developers, I can’t resist turning simple problems into full-on coding projects. 😅&lt;/p&gt;

&lt;p&gt;This semester, my &lt;strong&gt;Python professor&lt;/strong&gt; gave me a new role:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“You’ll be the Python subject representative. Help manage assignments and track student progress.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sounds easy, right? Well, not quite.&lt;/p&gt;

&lt;p&gt;My actual task was to &lt;strong&gt;monitor assignment progress for all 125 students&lt;/strong&gt;, help the professor &lt;strong&gt;communicate updates to the class&lt;/strong&gt;, and ensure that everyone’s &lt;strong&gt;assignments were properly submitted and tracked&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The professor suggested the old-school route —&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Just keep it all in an Excel sheet.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But come on... I’m a developer. Why settle for spreadsheets when I can build something better?&lt;/p&gt;

&lt;p&gt;So, I decided to &lt;strong&gt;turn this Excel nightmare into a full-fledged web application&lt;/strong&gt; that could handle everything — tracking, monitoring, communication, and analytics — all in one place.&lt;/p&gt;

&lt;p&gt;That’s how &lt;strong&gt;Assignment Checklist&lt;/strong&gt; was born. 🎯&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 The Idea: Turning Manual Management into a Smart Web App
&lt;/h2&gt;

&lt;p&gt;What started as a “track assignments” task quickly turned into something much bigger:&lt;br&gt;
A complete &lt;strong&gt;Assignment Management and Progress Monitoring System&lt;/strong&gt; for the entire class.&lt;/p&gt;

&lt;p&gt;The goal?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Make it easy for teachers and reps to manage assignments, monitor student performance, and communicate updates efficiently.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No Excel sheets. No manual status updates. Just clean, digital automation.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧭 What Is “Assignment Checklist”?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Assignment Checklist&lt;/strong&gt; is a &lt;strong&gt;web application&lt;/strong&gt; designed for &lt;strong&gt;teachers, subject representatives, and students&lt;/strong&gt; to simplify assignment tracking, class communication, and progress monitoring.&lt;/p&gt;

&lt;p&gt;Here’s what it can do:&lt;/p&gt;




&lt;h3&gt;
  
  
  ✨ Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;🗂️ &lt;strong&gt;Assignment Management&lt;/strong&gt;&lt;br&gt;
Create, edit, and organize assignments with due dates and descriptions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;👨‍🎓 &lt;strong&gt;Student Progress Tracking (125+ Students)&lt;/strong&gt;&lt;br&gt;
Track every student’s assignment status — from &lt;em&gt;Uncompleted&lt;/em&gt; to &lt;em&gt;Pending&lt;/em&gt; to &lt;em&gt;Completed&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;📢 &lt;strong&gt;Professor–Class Communication&lt;/strong&gt;&lt;br&gt;
The app helps professors and class reps share important updates or reminders directly — no separate WhatsApp chaos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;📊 &lt;strong&gt;Live Analytics Dashboard&lt;/strong&gt;&lt;br&gt;
Visualize class-wide progress with interactive &lt;strong&gt;Chart.js&lt;/strong&gt; graphs and summaries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🔒 &lt;strong&gt;Secure Editing&lt;/strong&gt;&lt;br&gt;
Only authorized users (professors or reps) can modify student records or mark completion.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;📈 &lt;strong&gt;Reports &amp;amp; Insights&lt;/strong&gt;&lt;br&gt;
Get instant overviews of overall performance — who’s on track and who’s falling behind.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;💬 &lt;strong&gt;Simplified Collaboration&lt;/strong&gt;&lt;br&gt;
Makes it easy for the professor and subject rep to coordinate and track class-wide assignment flow.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PHP (Vanilla)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Backend logic and data handling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MySQL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Database for assignments &amp;amp; student records&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bootstrap 5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Clean, responsive user interface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Chart.js&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Interactive charts for progress tracking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;FontAwesome&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Icons to improve UI clarity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HTML/CSS/JavaScript&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Frontend structure and interactivity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;XAMPP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Local development and testing environment&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;I kept it simple, lightweight, and deployable on any basic server — perfect for quick academic tools.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ⚙️ Architecture &amp;amp; Documentation (Coming Soon!)
&lt;/h2&gt;

&lt;p&gt;To make it scalable and maintainable, I’m documenting everything, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧾 &lt;strong&gt;DFD (Data Flow Diagram)&lt;/strong&gt; – Data movement between modules&lt;/li&gt;
&lt;li&gt;🧱 &lt;strong&gt;ER Diagram&lt;/strong&gt; – Entity relationships for assignments, students, and subjects&lt;/li&gt;
&lt;li&gt;🎭 &lt;strong&gt;Use Case Diagram&lt;/strong&gt; – Role-based system interactions&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;API Documentation&lt;/strong&gt; – For potential integration with student/teacher login systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All documentation will soon be available on the GitHub repo.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖥️ Preview &amp;amp; Source Code
&lt;/h2&gt;

&lt;p&gt;📂 &lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;br&gt;
👉 &lt;a href="https://github.com/Anticoder03/assignment-management" rel="noopener noreferrer"&gt;Assignment Checklist Web App&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🌐&lt;strong&gt;Preview(Static)&lt;/strong&gt;:&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwmrlc26jtgdaxj2aekgj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwmrlc26jtgdaxj2aekgj.png" alt=" " width="800" height="472"&gt;&lt;/a&gt;&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbkq447sdhnkmn2pl17oi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbkq447sdhnkmn2pl17oi.png" alt=" " width="800" height="368"&gt;&lt;/a&gt;&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0m2y16miqk2oqe0i0cds.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0m2y16miqk2oqe0i0cds.png" alt=" " width="800" height="260"&gt;&lt;/a&gt;&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv6ze7vq0ami27otb1wa3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv6ze7vq0ami27otb1wa3.png" alt=" " width="800" height="389"&gt;&lt;/a&gt;&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl60qjk0aptsazix1gam5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl60qjk0aptsazix1gam5.png" alt=" " width="800" height="284"&gt;&lt;/a&gt;&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbpo2wc3cllxn3a1kfrve.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbpo2wc3cllxn3a1kfrve.png" alt=" " width="800" height="503"&gt;&lt;/a&gt;&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fak0w7snyhvye571eid25.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fak0w7snyhvye571eid25.png" alt=" " width="800" height="560"&gt;&lt;/a&gt;&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1o1ruwtmbt4udm3nthoq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1o1ruwtmbt4udm3nthoq.png" alt=" " width="800" height="279"&gt;&lt;/a&gt;&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuzlv7pf1qozbddcdf8w4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuzlv7pf1qozbddcdf8w4.png" alt=" " width="800" height="394"&gt;&lt;/a&gt;&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxpjtosejkdwy50u4hkv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxpjtosejkdwy50u4hkv.png" alt=" " width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🌐 &lt;strong&gt;Live Preview:&lt;/strong&gt;&lt;br&gt;
Coming soon! (Will update once deployed publicly.)&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 Behind the Scenes: What I Learned
&lt;/h2&gt;

&lt;p&gt;This project taught me way more than I expected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Excel doesn’t scale&lt;/strong&gt; — especially for 125 students 😅&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI/UX matters&lt;/strong&gt; — teachers don’t want to “figure things out”; it has to &lt;em&gt;just work&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database design is the backbone&lt;/strong&gt; — normalization and relationships made progress tracking smooth&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automation saves time&lt;/strong&gt; — what took hours in Excel now happens instantly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaboration needs structure&lt;/strong&gt; — the app became the single source of truth for all assignment updates&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💬 Future Plans
&lt;/h2&gt;

&lt;p&gt;I’m currently expanding &lt;strong&gt;Assignment Checklist&lt;/strong&gt; into something even more powerful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔐 &lt;strong&gt;User Authentication:&lt;/strong&gt; Separate dashboards for teachers, reps, and students&lt;/li&gt;
&lt;li&gt;📱 &lt;strong&gt;Mobile-First UI:&lt;/strong&gt; Redesign using Tailwind CSS for smoother mobile access&lt;/li&gt;
&lt;li&gt;📬 &lt;strong&gt;Automated Notifications:&lt;/strong&gt; Email/SMS alerts for pending or upcoming assignments&lt;/li&gt;
&lt;li&gt;📤 &lt;strong&gt;PDF Reports:&lt;/strong&gt; One-click export of student progress for professors&lt;/li&gt;
&lt;li&gt;☁️ &lt;strong&gt;Cloud Deployment:&lt;/strong&gt; Online hosting for real-time access&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🤝 Contributing
&lt;/h2&gt;

&lt;p&gt;I’d love your thoughts, feedback, or pull requests!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fork the repo&lt;/li&gt;
&lt;li&gt;Create your feature branch&lt;/li&gt;
&lt;li&gt;Submit a PR with your improvement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also connect directly via &lt;a href="https://github.com/Anticoder03" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;br&gt;
If you like the project, &lt;strong&gt;leave a ⭐ on the repo&lt;/strong&gt; — it really helps!&lt;/p&gt;




&lt;h2&gt;
  
  
  👨‍💻 About the Author
&lt;/h2&gt;

&lt;p&gt;Hey, I’m &lt;strong&gt;Ashish (aka &lt;a href="https://github.com/Anticoder03" rel="noopener noreferrer"&gt;Anticoder03&lt;/a&gt;)&lt;/strong&gt; — a coding enthusiast, anime lover, and someone who believes in building solutions that make everyday life easier.&lt;/p&gt;

&lt;p&gt;I enjoy taking small, repetitive academic tasks and turning them into creative coding projects. This one’s a perfect example — what started as “track Excel assignments” became a real working system that helps 125 students and my professor every day.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;💡 “If a task feels repetitive, automate it. If it feels boring, make it creative.”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🏁 Final Words
&lt;/h2&gt;

&lt;p&gt;This project started as a small helper tool for my class, but it became something way bigger — a digital system that connects &lt;strong&gt;professors, reps, and students&lt;/strong&gt;, making academic coordination smoother and more efficient.&lt;/p&gt;

&lt;p&gt;If you’re a student, rep, or teacher tired of manually updating spreadsheets, take it from me — building your own web app might just be the best learning experience you’ll have this semester.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Thanks for reading! ❤️&lt;/strong&gt;&lt;br&gt;
Let’s connect and collaborate —&lt;br&gt;
🔗 &lt;a href="https://github.com/Anticoder03" rel="noopener noreferrer"&gt;GitHub: Anticoder03&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  🧩 TL;DR
&lt;/h3&gt;

&lt;p&gt;Built a full web app to replace Excel-based assignment tracking and class communication for &lt;strong&gt;125 students&lt;/strong&gt; using PHP, MySQL, and Bootstrap — complete with analytics, reports, and secure access.&lt;/p&gt;

&lt;p&gt;Because… &lt;strong&gt;developers don’t just manage data — they build systems.&lt;/strong&gt; 💪&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>database</category>
      <category>learning</category>
    </item>
    <item>
      <title>🚀 Build Your Own Anime Explorer with HTML, Tailwind &amp; the Jikan API!</title>
      <dc:creator>Ashish prajapati</dc:creator>
      <pubDate>Thu, 26 Jun 2025 05:25:19 +0000</pubDate>
      <link>https://dev.to/anticoder03/build-your-own-anime-explorer-with-html-tailwind-the-jikan-api-4jkd</link>
      <guid>https://dev.to/anticoder03/build-your-own-anime-explorer-with-html-tailwind-the-jikan-api-4jkd</guid>
      <description>&lt;p&gt;Are you an anime fan &lt;em&gt;and&lt;/em&gt; a web dev? Why not combine both and build something epic? 💥&lt;/p&gt;

&lt;p&gt;Introducing &lt;strong&gt;AnimeForge&lt;/strong&gt; – a fully responsive web app that shows top-rated anime, movies, and even lets you search and view detailed info using the &lt;strong&gt;Jikan API&lt;/strong&gt; (MyAnimeList Unofficial API). This project is built with &lt;strong&gt;HTML, Tailwind CSS, and JavaScript&lt;/strong&gt; – no frameworks, just clean code and otaku energy! ⚔️👨‍💻&lt;/p&gt;




&lt;h2&gt;
  
  
  🌟 Features
&lt;/h2&gt;

&lt;p&gt;✅ Explore top-rated anime series&lt;br&gt;&lt;br&gt;
✅ Browse anime movies&lt;br&gt;&lt;br&gt;
✅ View full anime details (genre, episodes, rating, synopsis, etc.)&lt;br&gt;&lt;br&gt;
✅ Dark / Light Theme Toggle 🌗&lt;br&gt;&lt;br&gt;
✅ Live Search functionality 🔍&lt;br&gt;&lt;br&gt;
✅ Responsive layout with Tailwind CSS&lt;br&gt;&lt;br&gt;
✅ Built with 🧠 and ❤️ by a fellow otaku&lt;/p&gt;


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

&lt;ul&gt;
&lt;li&gt;📄 &lt;strong&gt;HTML5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;Tailwind CSS&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🔥 &lt;strong&gt;Vanilla JavaScript&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;📡 &lt;strong&gt;&lt;a href="https://jikan.moe/" rel="noopener noreferrer"&gt;Jikan API&lt;/a&gt;&lt;/strong&gt; – for anime data&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🖼️ Screenshots
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;All UI is responsive and works great on mobile &amp;amp; desktop.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcem9qp3kch5pk06nhoi2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcem9qp3kch5pk06nhoi2.png" alt="Home Page" width="800" height="424"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz3ur0qo8crg1kztsgomq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz3ur0qo8crg1kztsgomq.png" alt="Home Page 2" width="800" height="348"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe11b12d9et7sqy4i4eom.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe11b12d9et7sqy4i4eom.png" alt="About Page" width="800" height="242"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FAnticoder03%2FAnimeForge%2Frefs%2Fheads%2Fmain%2Fscreenshort%2Fanime-1.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%2Fraw.githubusercontent.com%2FAnticoder03%2FAnimeForge%2Frefs%2Fheads%2Fmain%2Fscreenshort%2Fanime-1.png" alt="Anime Series" width="800" height="424"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjlkvub0oapw4is44pk9x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjlkvub0oapw4is44pk9x.png" alt="Anime Movies" width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  📂 Project Structure
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;AnimeForge/
├── index.html             &lt;span class="c"&gt;# Top Anime Page&lt;/span&gt;
├── movies.html            &lt;span class="c"&gt;# Movie Page&lt;/span&gt;
├── anime.html             &lt;span class="c"&gt;# Anime Details Page&lt;/span&gt;
├── about.html             &lt;span class="c"&gt;# About Me Page&lt;/span&gt;
├── theme_change.js        &lt;span class="c"&gt;# Dark mode logic&lt;/span&gt;
├── screenshorst/          &lt;span class="c"&gt;# Screenshots&lt;/span&gt;
└── README.md / LICENSE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔧 How It Works
&lt;/h2&gt;

&lt;p&gt;We use the &lt;a href="https://jikan.moe/" rel="noopener noreferrer"&gt;Jikan REST API&lt;/a&gt; to fetch:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📺 Top anime series → &lt;code&gt;https://api.jikan.moe/v4/top/anime?type=tv&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;🎬 Top anime movies → &lt;code&gt;https://api.jikan.moe/v4/anime?type=movie&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;🔍 Search anime by name → &lt;code&gt;https://api.jikan.moe/v4/anime?q={search}&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All cards are dynamically generated using plain JS DOM magic. Clicking on a card opens &lt;code&gt;anime.html?id=XXXX&lt;/code&gt;, fetches full info, and renders a beautiful detail view.&lt;/p&gt;


&lt;h2&gt;
  
  
  💡 Live Demo
&lt;/h2&gt;

&lt;p&gt;🚀 &lt;a href="https://animeforge.netlify.app/" rel="noopener noreferrer"&gt;https://animeforge.netlify.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📁 Or just clone it and run locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Anticoder03/animeforge.git
&lt;span class="nb"&gt;cd &lt;/span&gt;animeforge
open index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🙋‍♂️ About the Developer
&lt;/h2&gt;

&lt;p&gt;Hey! I'm &lt;strong&gt;Ashish Prajapati&lt;/strong&gt; – a full-stack learner, anime lover, and terminal ninja from 🇮🇳&lt;br&gt;
Built this as a fun side project to combine code + anime 👨‍💻⚔️&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🐙 GitHub: &lt;a href="https://github.com/Anticoder03" rel="noopener noreferrer"&gt;Anticoder03&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📸 Instagram: &lt;a href="https://www.instagram.com/ashiah03_prajapati/" rel="noopener noreferrer"&gt;@ashiah03_prajapati&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📜 License
&lt;/h2&gt;

&lt;p&gt;Licensed under the MIT License. Use it, remix it, share it freely 🪄&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Anime taught me never to give up. Code made me unstoppable.”&lt;/em&gt; – &lt;strong&gt;Ashish (Anticoder03)&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ✨ Let’s Connect!
&lt;/h2&gt;

&lt;p&gt;💬 Drop a comment if you liked it or want more anime-themed dev content.&lt;br&gt;
💡 Thinking of building a React/GSAP version next — who’s in?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>api</category>
      <category>css</category>
    </item>
    <item>
      <title>🚀 Chrome 135 Brings `::scroll-button()` and `::scroll-marker()` — Say Goodbye to JavaScript Carousels</title>
      <dc:creator>Ashish prajapati</dc:creator>
      <pubDate>Fri, 13 Jun 2025 05:00:18 +0000</pubDate>
      <link>https://dev.to/anticoder03/chrome-135-brings-scroll-button-and-scroll-marker-say-goodbye-to-javascript-529c</link>
      <guid>https://dev.to/anticoder03/chrome-135-brings-scroll-button-and-scroll-marker-say-goodbye-to-javascript-529c</guid>
      <description>&lt;p&gt;With the release of &lt;strong&gt;Chrome 135&lt;/strong&gt;, web developers finally get access to two powerful new pseudo-elements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;::scroll-button()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;::scroll-marker()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These pseudo-elements unlock &lt;strong&gt;fully functional carousels&lt;/strong&gt;, sliders, and scrollable components without a single line of JavaScript.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; These new features make interactive scroll experiences &lt;em&gt;accessible&lt;/em&gt;, &lt;em&gt;stylable&lt;/em&gt;, and &lt;em&gt;keyboard-friendly&lt;/em&gt; — all from your CSS file.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🆕 What Are &lt;code&gt;::scroll-button()&lt;/code&gt; and &lt;code&gt;::scroll-marker()&lt;/code&gt;?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;::scroll-button()&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;This pseudo-element renders &lt;strong&gt;scroll control buttons&lt;/strong&gt; — left/right or up/down depending on the scroll direction. You can style them like any element, and users can interact with them out of the box.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;::scroll-marker()&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Think of this like scrollable radio dots — showing the &lt;strong&gt;position of each scroll snap point&lt;/strong&gt;. They’re interactive, accessible, and visual indicators of your scroll progress.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why They're a Big Deal
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Automatically accessible&lt;/strong&gt; (screen reader + keyboard support)&lt;/li&gt;
&lt;li&gt;✅ Pairs with &lt;code&gt;scroll-snap-type&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;No JavaScript needed&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;✅ Fully stylable using CSS&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔥 Real-World Carousel Example (JavaScript Fallback)
&lt;/h2&gt;

&lt;p&gt;Here’s a simple JavaScript-based carousel (for legacy support), which will soon be &lt;strong&gt;entirely CSS-driven&lt;/strong&gt; using &lt;code&gt;::scroll-button()&lt;/code&gt; and &lt;code&gt;::scroll-marker()&lt;/code&gt; in Chrome 135+:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://clever-cocada-9cd821.netlify.app/" rel="noopener noreferrer"&gt;Live Demo Here&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Full working demo with scroll + JS --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"carousel"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="c"&gt;&amp;lt;!-- Slides --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;[Full code example here... already shown above]&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 What This Will Look Like in Pure CSS
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.scroll-container&lt;/span&gt;&lt;span class="nd"&gt;::scroll-button&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;start&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;'◀'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-50%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.scroll-container&lt;/span&gt;&lt;span class="nd"&gt;::scroll-button&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;end&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;'▶'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-50%&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;No JavaScript. No event listeners. Just drop in a &lt;code&gt;scroll-snap&lt;/code&gt; container, and the browser handles it.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Why This Matters
&lt;/h2&gt;

&lt;p&gt;Using &lt;code&gt;::scroll-button()&lt;/code&gt; and &lt;code&gt;::scroll-marker()&lt;/code&gt; means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Native accessibility (no ARIA hoops to jump through)&lt;/li&gt;
&lt;li&gt;✅ Built-in keyboard support&lt;/li&gt;
&lt;li&gt;✅ Zero JS needed for sliders&lt;/li&gt;
&lt;li&gt;✅ Smaller bundle sizes, better perf&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧪 Browser Support (as of Chrome 135)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Browser&lt;/th&gt;
&lt;th&gt;Support&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✅ Chrome 135+&lt;/td&gt;
&lt;td&gt;Full&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚠️ Edge (Chromium)&lt;/td&gt;
&lt;td&gt;Behind flag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;❌ Firefox&lt;/td&gt;
&lt;td&gt;Not yet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;❌ Safari&lt;/td&gt;
&lt;td&gt;Not yet&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;To enable the feature in Chrome manually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;chrome://flags/#enable-experimental-web-platform-features
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧠 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This is a &lt;em&gt;huge leap&lt;/em&gt; for native web components. Once Firefox and Safari catch up, we’ll finally have fully accessible carousels and sliders &lt;strong&gt;without needing bloated libraries or JS hacks&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Until then — &lt;strong&gt;progressive enhancement&lt;/strong&gt; is your best friend.&lt;/p&gt;




&lt;h2&gt;
  
  
  🙋‍♂️ Let’s Talk!
&lt;/h2&gt;

&lt;p&gt;What would &lt;em&gt;you&lt;/em&gt; build with &lt;code&gt;::scroll-button()&lt;/code&gt;?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A portfolio carousel?&lt;/li&gt;
&lt;li&gt;A product slider?&lt;/li&gt;
&lt;li&gt;An onboarding walkthrough?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Should developers &lt;strong&gt;ditch JS sliders forever&lt;/strong&gt;? Or is it too early?&lt;/p&gt;




&lt;p&gt;👉 &lt;strong&gt;Try the full responsive carousel demo:&lt;/strong&gt;&lt;br&gt;
🔗 &lt;a href="https://clever-cocada-9cd821.netlify.app/" rel="noopener noreferrer"&gt;https://clever-cocada-9cd821.netlify.app/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Follow me for more frontend deep dives!&lt;/strong&gt;&lt;br&gt;
#CSS #HTML #Chrome135 #Frontend #WebDev #Accessibility #scrollbutton #nativecarousel #DevTo&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
