<?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: Sergio Gurillo Corral</title>
    <description>The latest articles on DEV Community by Sergio Gurillo Corral (@guuri11).</description>
    <link>https://dev.to/guuri11</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%2F737937%2Fe9cd7b9f-8cff-40d2-8908-c8702056a5ca.jpeg</url>
      <title>DEV Community: Sergio Gurillo Corral</title>
      <link>https://dev.to/guuri11</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/guuri11"/>
    <language>en</language>
    <item>
      <title>An Opinionated Clean Architecture in Rust</title>
      <dc:creator>Sergio Gurillo Corral</dc:creator>
      <pubDate>Thu, 15 May 2025 17:24:00 +0000</pubDate>
      <link>https://dev.to/guuri11/an-opinionated-clean-architecture-in-rust-4jn8</link>
      <guid>https://dev.to/guuri11/an-opinionated-clean-architecture-in-rust-4jn8</guid>
      <description>&lt;p&gt;As I mentioned in my previous post, I’ve been tinkering a lot with Rust over the past few months and really enjoying the development experience it offers. Honestly, it’s been ages since learning a new language felt this fun and challenging.&lt;/p&gt;

&lt;p&gt;During my years of experience, I’ve mostly developed web services (with Java, PHP, Node, Python...) and now also with Rust. Since architectures like hexagonal, Clean Architecture, and DDD are in high demand, I wanted to try applying all these ideas to Rust to see how they fit.&lt;/p&gt;

&lt;p&gt;After a lot of discussion with a colleague (thank you Alberto for your patience and time spent on this) about the right design for a project, we arrived at something like this:&lt;/p&gt;




&lt;h2&gt;
  
  
  Business
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;├── business                      # Business logic layer
│   ├── Cargo.toml                 # Rust library config for business logic
│   └── src
│       ├── application            # Use cases and application logic
│       │   └── product
│       │       └── use_cases      # CRUD operations for Product
│       │           ├── create.rs
│       │           ├── delete.rs 
│       │           ├── get_by.rs 
│       │           └── update.rs
│       ├── domain                 # Pure domain model, business rules
│       │   └── product
│       │       ├── errors.rs      # Domain-specific error definitions
│       │       ├── model.rs       # Product entity (attributes and behavior)
│       │       ├── repository.rs  # Interface for product data access
│       │       ├── use_cases      # Domain logic for specific cases
│       │       │   ├── create.rs
│       │       │   ├── delete.rs
│       │       │   ├── get_by.rs
│       │       │   └── update.rs
│       │       └── value_objects.rs # Value objects related to Product
│       ├── lib.rs                 # Entry point for business library
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This layer is the heart of the project, completely agnostic of any third-party dependencies. It holds all the business logic, the pure domain, and use cases representing core rules and behaviors — without letting technical or infrastructure details muddy the logic. In Rust, this separation is very clear thanks to modularity and organizing by crates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;├── infrastructure                # Technical implementations (DB, events, notifications)
│   ├── README.md
│   ├── events                   # Integration with messaging/event systems
│   │   ├── Cargo.toml           # Rust library config for events
│   │   ├── kafka.rs            
│   │   └── rabbitmq.rs          
│   ├── notifications            # External notification services
│   │   ├── Cargo.toml           # Rust library config for notifications
│   │   ├── sendgrid.rs          
│   │   └── twilio.rs           
│   └── persistence              # Data persistence (databases)
│       ├── Cargo.toml           # Rust library config for DB
│       └── mongo
│           └── product
│               ├── data_model.rs   # DB data model (mapping)
│               └── repository.rs   # Mongodb repository implementation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this layer we put all the technical implementations that support the app, like databases, messaging, or external services. Because the business layer depends only on interfaces, here we can easily swap implementations without affecting the core logic. Rust’s type system and modules help keep these dependencies clear and controlled, and also make it easy to integrate with external tech via specific crates for Kafka, RabbitMQ, or notification services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Presentation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;├── presentation                 # User interface / system entry point
│   ├── README.md                
│   ├── cli                     # Command-line interface
│   │   ├── Cargo.toml
│   │   └── src
│   │       └── main.rs          # CLI main entry point
│   ├── cron                    # Scheduled jobs (recurring tasks)
│   │   ├── Cargo.toml
│   │   └── src
│   │       └── main.rs          # Code to run cron tasks
│   └── rest-api                # REST API exposing the domain
│       ├── Cargo.toml
│       └── src
│           ├── config          # API general configuration
│           │   ├── app_state.rs
│           │   ├── settings.rs
│           │   └── tracing.rs
│           ├── lib.rs          # REST library entry point
│           ├── main.rs         # Main to launch HTTP server
│           └── router
│               └── product
│                   ├── controller.rs  # REST controllers for Product
│                   └── dto.rs         # Data transfer objects
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, the presentation layer is the system’s entry door, handling interaction with users or other external systems via APIs, CLI, scheduled jobs, or a playground to quickly test use cases locally. Keeping this layer separate ensures the details of how we receive or send data don’t mess with business logic or infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I’m really happy with how the final design turned out. It lets me focus on the functionality and business logic without worrying about technical infrastructure details. Plus, isolating specific technologies helps reduce cognitive load and makes the project more maintainable and scalable. In short, I believe this architecture is a great way to organize a full, professional Rust project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;shop-project/
├── Cargo.toml                     # Main Rust project config file
├── business                      # Business logic layer
│   ├── Cargo.toml                 # Rust library config for business logic
│   └── src
│       ├── application            # Use cases and application logic
│       │   └── product
│       │       └── use_cases      # Operations for Product
│       │           ├── create.rs
│       │           ├── delete.rs 
│       │           ├── get_by.rs 
│       │           └── update.rs
│       ├── domain                 # Pure domain model, business rules
│       │   └── product
│       │       ├── errors.rs      # Domain-specific error definitions
│       │       ├── model.rs       # Product entity (attributes and behavior)
│       │       ├── repository.rs  # Interface for product data access
│       │       ├── use_cases      # Domain logic for specific cases
│       │       │   ├── create.rs
│       │       │   ├── delete.rs
│       │       │   ├── get_by.rs
│       │       │   └── update.rs
│       │       └── value_objects.rs # Value objects related to Product
│       ├── lib.rs                 # Entry point for business library
├── docker-compose.yml             # Docker services configuration
├── infrastructure                # Technical implementations (DB, events, notifications)
│   ├── README.md
│   ├── events                   # Integration with messaging/event systems
│   │   ├── Cargo.toml           # Rust library config for events
│   │   ├── kafka.rs            
│   │   └── rabbitmq.rs          
│   ├── notifications            # External notification services
│   │   ├── Cargo.toml           # Rust library config for notifications
│   │   ├── sendgrid.rs          
│   │   └── twilio.rs           
│   └── persistence              # Data persistence (databases)
│       ├── Cargo.toml           # Rust library config for DB        
│       └── mongo
│           └── product
│               ├── data_model.rs   # DB data model (mapping)
│               └── repository.rs   # Mongo repository implementation
├── presentation                 # User interface / system entry point
│   ├── README.md                
│   ├── cli                     # Command-line interface
│   │   ├── Cargo.toml
│   │   └── src
│   │       └── main.rs          # CLI main entry point
│   ├── cron                    # Scheduled jobs (recurring tasks)
│   │   ├── Cargo.toml
│   │   └── src
│   │       └── main.rs          # Code to run cron tasks
│   └── rest-api                # REST API exposing the domain
│       ├── Cargo.toml
│       └── src
│           ├── config          # API general configuration
│           │   ├── app_state.rs
│           │   ├── settings.rs
│           │   └── tracing.rs
│           ├── lib.rs          # REST library entry point
│           ├── main.rs         # Main to launch HTTP server
│           └── router
│               └── product
│                   ├── controller.rs  # REST controllers for Product
│                   └── dto.rs         # Data transfer objects
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>rust</category>
      <category>cleanarchitecture</category>
      <category>webdev</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Rust is not so complicated after all....</title>
      <dc:creator>Sergio Gurillo Corral</dc:creator>
      <pubDate>Mon, 05 May 2025 12:14:38 +0000</pubDate>
      <link>https://dev.to/guuri11/rust-is-not-so-complicated-after-all-22g3</link>
      <guid>https://dev.to/guuri11/rust-is-not-so-complicated-after-all-22g3</guid>
      <description>&lt;p&gt;As you probably know, one of the most trending programming languages in recent years is &lt;strong&gt;Rust&lt;/strong&gt;. You’ve likely heard it promises C-like performance with a more friendly syntax, similar to Java, TypeScript, or Python. Sounds great, right?&lt;/p&gt;

&lt;p&gt;But as you might also know, not everything is that perfect: concepts like &lt;em&gt;ownership&lt;/em&gt; and the &lt;em&gt;borrow checker&lt;/em&gt; make the learning curve a bit steeper, especially if you come from higher-level languages, like I do. Still, over the past few months, I decided to give Rust a try and see what the real experience of working with it is like. Here are my takeaways:&lt;/p&gt;




&lt;h3&gt;
  
  
  🧑‍🏫 The compiler: a strict but fair coach
&lt;/h3&gt;

&lt;p&gt;Rust’s compiler is like that tough coach who has a very specific way of doing things, but also gives you every tool you need to get better.&lt;/p&gt;

&lt;p&gt;I’ve been playing basketball for nearly 20 years, and those were the coaches that helped me grow the most. Well, Rust feels the same: the compiler catches everything, sure, but it also tells you &lt;em&gt;why&lt;/em&gt;, and often even &lt;em&gt;how&lt;/em&gt; to fix it.&lt;/p&gt;




&lt;h3&gt;
  
  
  🛠️ The tooling is fantastic
&lt;/h3&gt;

&lt;p&gt;Cargo, rustfmt, clippy... Rust comes with an ecosystem of tools that cover exactly what you need. &lt;code&gt;Cargo.toml&lt;/code&gt; is simple—less verbose than Maven but more complete than Go’s minimalist approach.&lt;/p&gt;

&lt;p&gt;Everything is designed so you can organize things properly from day one. The fact that it comes with a built-in linter and formatter is a huge win.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧠 Ideal for DDD and strong domain models
&lt;/h3&gt;

&lt;p&gt;Rust feels very natural when working with domain-driven design. Algebraic types, static and strong typing, and the demanding compiler help you model the domain well and prevent invalid states.&lt;/p&gt;

&lt;p&gt;When it comes to refactoring, this robustness really shines. It’s not necessarily faster to refactor, but it &lt;em&gt;feels&lt;/em&gt; more reliable. That’s something I don’t always get with, say, Python.&lt;/p&gt;




&lt;h3&gt;
  
  
  💡 Lightweight and efficient
&lt;/h3&gt;

&lt;p&gt;One of the reasons I started using Rust was because I needed a lightweight dev environment. And, well... Java and Spring Boot don’t really fit that definition 😅. If you want a smooth Spring Boot setup, you’re usually running IntelliJ, Docker with a container or two... and with just 16GB of RAM, especially under WSL, it gets rough.&lt;/p&gt;

&lt;p&gt;That’s when I started playing with Rust (and Go as well). I love both, but when your project has a complex domain, Rust offers more powerful tools. I tend to save Go for simpler use cases. Also, Rust is compiled, and while build times can grow with your project, its CPU and RAM usage is super efficient. In resource-constrained environments, that translates to lower infrastructure costs.&lt;/p&gt;




&lt;h3&gt;
  
  
  🤯 And the infamous borrow checker?
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Ownership&lt;/em&gt; and the &lt;em&gt;borrow checker&lt;/em&gt; were new concepts for me too. I had a bit of a background from tinkering with C++, but no real experience. And yeah, it &lt;em&gt;does&lt;/em&gt; have a learning curve… but it wasn’t the nightmare I’d read about in other posts.&lt;/p&gt;

&lt;p&gt;Plus, with tools like Copilot, Cursor, ChatGPT, Gemini, etc., it’s way easier these days. If you’ve got a solid programming foundation, AI helps speed things up &lt;em&gt;a lot&lt;/em&gt;. And the nice thing is, since Rust is so strict, AI assistants also have less room to silently break your code. As long as you’re not blindly copying everything (&lt;em&gt;no vibe coding!&lt;/em&gt;), you can move surprisingly fast.&lt;/p&gt;

&lt;p&gt;It’s like thinking: “I’m coding fast... in a language that’s already fast.” Best of both worlds.&lt;/p&gt;




&lt;h3&gt;
  
  
  🚀 Loco.rs: Ruby on Rails, but in Rust 🤯
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://loco.rs" rel="noopener noreferrer"&gt;Loco&lt;/a&gt; is like having Ruby on Rails in Rust. If you don’t mind committing to a predefined architecture and want to prototype quickly, Loco is awesome. Need a CRUD or MVP? With just a few commands and some familiarity with Rust and RoR, you’ll have something running in no time.&lt;/p&gt;




&lt;h3&gt;
  
  
  🎯 Some downsides (because nothing’s perfect)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;It can be &lt;strong&gt;more verbose&lt;/strong&gt; than Python or TypeScript.&lt;/li&gt;
&lt;li&gt;It’s pretty &lt;strong&gt;opinionated&lt;/strong&gt; about how to do certain things.&lt;/li&gt;
&lt;li&gt;Even though it doesn’t need a heavy IDE, the most-used LSP, &lt;strong&gt;rust-analyzer&lt;/strong&gt;, can use quite a bit of RAM. It works with 8–16GB, but just keep it in mind.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Asynchronous programming&lt;/strong&gt; in Rust has its own complexity (though Java isn’t exactly simple either).&lt;/li&gt;
&lt;li&gt;The community is growing, but it’s &lt;strong&gt;not as mature&lt;/strong&gt; as JavaScript, Java, or Python. That shows in the &lt;strong&gt;number of job offers&lt;/strong&gt;, at least here in Spain.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  So... is it worth it?
&lt;/h3&gt;

&lt;p&gt;Rust isn’t a Swiss army knife of programming languages, but it &lt;em&gt;is&lt;/em&gt; a &lt;strong&gt;very powerful tool&lt;/strong&gt;. It offers a great development experience, lets you build CLI apps, backends, desktop software, even mobile apps (with Tauri, which looks really promising), and it’s resource-efficient.&lt;/p&gt;

&lt;p&gt;And if you combine it with AI as an ally, the learning curve becomes a lot more manageable.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>programming</category>
    </item>
    <item>
      <title>Rust no es tan complicado después de todo...</title>
      <dc:creator>Sergio Gurillo Corral</dc:creator>
      <pubDate>Mon, 05 May 2025 12:10:38 +0000</pubDate>
      <link>https://dev.to/guuri11/rust-no-es-tan-complicado-despues-de-todo-2043</link>
      <guid>https://dev.to/guuri11/rust-no-es-tan-complicado-despues-de-todo-2043</guid>
      <description>&lt;p&gt;Como ya sabrás, uno de los lenguajes más en tendencia en los últimos años es &lt;strong&gt;Rust&lt;/strong&gt;. Seguro has escuchado que promete el rendimiento de C con una sintaxis más amigable, tipo Java, TypeScript o Python. Suena genial, ¿no?&lt;/p&gt;

&lt;p&gt;Pero también sabrás que no todo es tan bonito: conceptos como &lt;em&gt;ownership&lt;/em&gt; y el &lt;em&gt;borrow checker&lt;/em&gt; hacen que la curva de aprendizaje sea un poco más pronunciada si vienes de lenguajes de alto nivel, como es mi caso. Aun así, estos últimos meses decidí darle una oportunidad a Rust y ver qué tal era la experiencia real trabajando con él. Estas son mis conclusiones:&lt;/p&gt;




&lt;h3&gt;
  
  
  🧑‍🏫 El compilador, el entrenador estricto pero justo
&lt;/h3&gt;

&lt;p&gt;El compilador de Rust es como ese entrenador muy exigente, con una forma muy concreta de hacer las cosas, pero que también te da todas las herramientas para mejorar.&lt;/p&gt;

&lt;p&gt;Llevo casi 20 años jugando a baloncesto, y estos han sido los entrenadores que más me han hecho crecer. Pues con Rust pasa algo parecido: el compilador te corrige todo, sí, pero también te explica el porqué y muchas veces hasta te sugiere cómo solucionarlo.&lt;/p&gt;




&lt;h3&gt;
  
  
  🛠️ El tooling es una maravilla
&lt;/h3&gt;

&lt;p&gt;Cargo, rustfmt, clippy... Rust viene con un ecosistema de herramientas que cubre justo lo necesario. El &lt;code&gt;Cargo.toml&lt;/code&gt; es simple, sin la verbosidad de Maven pero más completo que el enfoque minimalista de Go.&lt;/p&gt;

&lt;p&gt;Todo está pensado para que puedas organizarte bien desde el minuto cero. Que traiga su propio linter y formatter por defecto ya me parece un puntazo.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧠 Ideal para DDD y dominio fuerte
&lt;/h3&gt;

&lt;p&gt;Rust se siente muy cómodo cuando trabajás con diseño orientado al dominio. Los &lt;em&gt;tipos algebraicos&lt;/em&gt;, el tipado estático y fuerte, y el compilador exigente te ayudan a modelar bien el dominio y evitar estados no representables.&lt;/p&gt;

&lt;p&gt;A la hora de refactorizar, esta solidez se nota un montón. No digo que sea más rápido refactorizar, pero sí me da más confianza. Algo que con Python, por ejemplo, no me pasa tanto.&lt;/p&gt;




&lt;h3&gt;
  
  
  💡 Ligero y eficiente
&lt;/h3&gt;

&lt;p&gt;Uno de los motivos por los que empecé con Rust fue porque necesitaba un entorno de desarrollo ligero. Y Java, bueno, Spring Boot... no entraba en esa definición 😅. Si quieres trabajar bien con Spring Boot, lo normal es tener IntelliJ, Docker con algún contenedor... y eso con 16GB de RAM se sufre, más aún si estás en WSL.&lt;/p&gt;

&lt;p&gt;Ahí empecé a trastear con Rust (y con Go también). Ambos me encantan, pero si tu proyecto tiene un dominio complejo, Rust te da herramientas más potentes. Go lo reservo para casos de uso más sencillos. Además, Rust es compilado, y aunque la compilación puede volverse más lenta a medida que el proyecto crece, en uso de CPU y RAM es súper eficiente. En entornos donde los recursos cuentan, eso significa menor coste en infraestructura.&lt;/p&gt;




&lt;h3&gt;
  
  
  🤯 ¿Y el famoso borrow checker?
&lt;/h3&gt;

&lt;p&gt;El &lt;em&gt;borrow checker&lt;/em&gt; y el &lt;em&gt;ownership&lt;/em&gt; fueron conceptos nuevos para mí también. Tenía alguna noción sobre manejar memoria por haber trasteado con C++, pero sin experiencia real. Y la verdad, sí tiene curva de aprendizaje... pero tampoco fue la pesadilla que leí en otros posts.&lt;/p&gt;

&lt;p&gt;Además, con herramientas como Copilot, Cursor, ChatGPT, Gemini, etc., hoy en día se lleva bastante mejor. Si tienes una buena base de programación, la IA te acelera muchísimo. Y lo bueno es que, al ser Rust tan estricto, incluso las IA tienen menos margen para "romperte" algo sin darte cuenta. Sin caer en el &lt;em&gt;vibe coding&lt;/em&gt;, siendo responsable con el código que generás, se puede ir muy rápido.&lt;/p&gt;

&lt;p&gt;Y es como pensar: “Estoy programando rápido... en un lenguaje que ya de por sí es rápido”. Lo mejor de los dos mundos&lt;/p&gt;




&lt;h3&gt;
  
  
  🚀 Loco.rs: Ruby on Rails, pero en Rust 🤯
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://loco.rs" rel="noopener noreferrer"&gt;Loco&lt;/a&gt; es como tener Ruby on Rails pero en Rust. Si no te molesta casarte con una arquitectura predefinida y quieres prototipar algo rápido, Loco es brutal. ¿Necesitás un CRUD o un MVP? Con unos cuantos comandos y algo de experiencia con Rust y RoR, ya lo tienes funcionando.&lt;/p&gt;




&lt;h3&gt;
  
  
  🎯 Algunas contras (porque no todo es perfecto)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A veces puede ser más &lt;strong&gt;verboso&lt;/strong&gt; que Python o TypeScript.&lt;/li&gt;
&lt;li&gt;Tiene una forma muy opinionada de hacer ciertas cosas.&lt;/li&gt;
&lt;li&gt;Aunque no necesita un IDE pesado, el LSP más utilizado, &lt;strong&gt;rust-analyzer&lt;/strong&gt; a veces consume bastante RAM. Con 8–16GB se puede trabajar, pero ojo ahí.&lt;/li&gt;
&lt;li&gt;El manejo de &lt;strong&gt;asincronía&lt;/strong&gt; en Rust tiene su complejidad (aunque Java tampoco se queda atrás en eso).&lt;/li&gt;
&lt;li&gt;La comunidad es grande, pero &lt;strong&gt;no tan madura&lt;/strong&gt; como JavaScript, Java o Python, y eso se nota en la &lt;strong&gt;cantidad de ofertas laborales&lt;/strong&gt; (al menos en España).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ¿Vale la pena entonces?
&lt;/h3&gt;

&lt;p&gt;Rust no es la navaja suiza de los lenguajes de programación, pero sí es &lt;strong&gt;una herramienta muy poderosa&lt;/strong&gt;. Tiene una excelente experiencia de desarrollo, permite hacer CLI, backend, desktop, incluso apps móviles (con Tauri, que tiene muy buena pinta) y es barata en términos de recursos.&lt;/p&gt;

&lt;p&gt;Y si sumás la IA como aliada, la curva de aprendizaje se vuelve mucho más llevadera.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>rust</category>
    </item>
    <item>
      <title>Token Devtools Inspector 👀🔑</title>
      <dc:creator>Sergio Gurillo Corral</dc:creator>
      <pubDate>Tue, 02 Jan 2024 17:14:50 +0000</pubDate>
      <link>https://dev.to/guuri11/token-devtools-inspector-4al7</link>
      <guid>https://dev.to/guuri11/token-devtools-inspector-4al7</guid>
      <description>&lt;p&gt;🙋🏻‍♂️ Have you ever found yourself copying the JWT of a request in Chrome? Whether it's to use it in Postman, inspect it in JWT, or any other task, and? Is it something you do frequently? 🤔&lt;/p&gt;

&lt;p&gt;I do, and truth be told, the process can become a pain after so many times:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;open Chrome's DevTools 🛠️&lt;/li&gt;
&lt;li&gt;Go to the Network panel 🔍&lt;/li&gt;
&lt;li&gt;Search for the request you are interested in 🕵️&lt;/li&gt;
&lt;li&gt;Open the Headers section 📜&lt;/li&gt;
&lt;li&gt;Select the entire JWT (and keep your fingers crossed that you don't copy it wrong) 🤞&lt;/li&gt;
&lt;li&gt;Finally, copy it 📋&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, imagine having to do this several times a day, every day! 💀&lt;/p&gt;

&lt;p&gt;Luckily, I've created a Chrome extension that makes this a lot easier: 🌟 &lt;strong&gt;Token Dev Tools Inspector&lt;/strong&gt; 🌟&lt;/p&gt;

&lt;p&gt;With just a few clicks, streamline token extraction in Chrome DevTools:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Chrome DevTools 🛠️&lt;/li&gt;
&lt;li&gt;Locate the Token Inspector panel (similar to the Console, Network or Application panels) 🔍&lt;/li&gt;
&lt;li&gt;Find your tokens effortlessly! 🚀&lt;/li&gt;
&lt;/ol&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%2Fy4ztfc37abluym68bgpe.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%2Fy4ztfc37abluym68bgpe.png" alt="Preview of Token dev tools inspector" width="800" height="589"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, it goes straight to the point, simple but functional UI, also with direct access to jwt.io if you want to inspect the token content.&lt;/p&gt;

&lt;p&gt;Are you worried about the privacy of a third party reading your tokens? I understand, that's why the project is Open Source so you can verify that the data doesn't go outside!&lt;br&gt;
&lt;a href="https://github.com/Guuri11/token-inspector" rel="noopener noreferrer"&gt;https://github.com/Guuri11/token-inspector&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to give it a try, here is the link to install the extension with all its information:&lt;br&gt;
&lt;a href="https://chrome.google.com/webstore/detail/token-devtools-inspector/enlnbonndfjonmelmplbmgnobjffbhoj" rel="noopener noreferrer"&gt;https://chrome.google.com/webstore/detail/token-devtools-inspector&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope you like it, and as I said, the project is Open Source, so don't hesitate to give your feedback if you want!&lt;/p&gt;

&lt;p&gt;Happy new year! 🎊&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>jwt</category>
      <category>extensions</category>
    </item>
    <item>
      <title>Token dev tools inspector 🔑👀</title>
      <dc:creator>Sergio Gurillo Corral</dc:creator>
      <pubDate>Tue, 02 Jan 2024 17:13:02 +0000</pubDate>
      <link>https://dev.to/guuri11/token-dev-tools-inspector-218</link>
      <guid>https://dev.to/guuri11/token-dev-tools-inspector-218</guid>
      <description>&lt;p&gt;🙋🏻‍♂️ Alguna vez te has encontrado copiando el JWT de una petición en Chrome? Ya sea para usarlo en Postman, inspeccionarlo en JWT, o cualquier otra tarea, y... es algo que haces con frecuencia? 🤔&lt;/p&gt;

&lt;p&gt;Yo sí, y la verdad, el proceso puede volverse un molesto después de tantas veces:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Abre las DevTools de Chrome 🛠️&lt;/li&gt;
&lt;li&gt;Accede al panel de Network 🔍&lt;/li&gt;
&lt;li&gt;Busca la petición que te interesa 🕵️&lt;/li&gt;
&lt;li&gt;Abre la sección de Headers 📜&lt;/li&gt;
&lt;li&gt;Selecciona todo el JWT (y cruza los dedos para no copiarlo mal) 🤞&lt;/li&gt;
&lt;li&gt;Finalmente, cópialo 📋&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ahora, imagina tener que hacer esto varias veces al día, todos los días! 💀&lt;/p&gt;

&lt;p&gt;Por suerte, he creado una extensión para Chrome que hace esto mucho más fácil: 🌟 &lt;strong&gt;Token Dev Tools Inspector&lt;/strong&gt; 🌟&lt;/p&gt;

&lt;p&gt;Con solo unos clics, agiliza la extracción de tokens en Chrome DevTools:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Abre Chrome DevTools 🛠️&lt;/li&gt;
&lt;li&gt;Localiza el panel Token Inspector (similar a los paneles Consola, Red o Aplicación) 🔍&lt;/li&gt;
&lt;li&gt;¡Encuentra tus tokens sin esfuerzo! 🚀&lt;/li&gt;
&lt;/ol&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%2Fy4ztfc37abluym68bgpe.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%2Fy4ztfc37abluym68bgpe.png" alt="Preview of Token dev tools inspector" width="800" height="589"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cómo ves, va directo al grano, UI simple pero funcional, además con acceso directo a jwt.io si quieres inspeccionar el contenido del token.&lt;/p&gt;

&lt;p&gt;Te preocupa la privacidad de que un tercero esté leyendo tus tokens? Lo entiendo, por ello el proyecto es Open Source para que verifiques que los datos no salen al exterior!&lt;br&gt;
&lt;a href="https://github.com/Guuri11/token-inspector" rel="noopener noreferrer"&gt;https://github.com/Guuri11/token-inspector&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si quieres darle un intento, aquí tienes el enlace para instalar la extensión con toda su información:&lt;br&gt;
&lt;a href="https://chrome.google.com/webstore/detail/token-devtools-inspector/enlnbonndfjonmelmplbmgnobjffbhoj" rel="noopener noreferrer"&gt;https://chrome.google.com/webstore/detail/token-devtools-inspector&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Espero que os guste, y como ya dije, el proyecto es Open Source, así que no dudéis en dar vuestro feedback si queréis!&lt;/p&gt;

&lt;p&gt;Feliz año! 🎊&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>extensions</category>
      <category>jwt</category>
    </item>
  </channel>
</rss>
