diff --git a/public/roadmap-content/aspnet-core.json b/public/roadmap-content/aspnet-core.json new file mode 100644 index 000000000..621da7ae9 --- /dev/null +++ b/public/roadmap-content/aspnet-core.json @@ -0,0 +1,2875 @@ +{ + "NEnna_8DstfYH4T9qrP3-": { + "title": "General Development Skills", + "description": "There are several skills that are generally considered to be important for working with .NET and C#:\n\n* Object-oriented programming: Understanding the concepts of classes, objects, inheritance, and polymorphism is essential for working with C# and the .NET Framework.\n \n* C# language: A strong understanding of the C# language, including its syntax, keywords, and built-in classes and types, is necessary for writing efficient and maintainable code.\n \n* .NET Framework: Familiarity with the .NET Framework, including the Common Language Runtime (CLR) and the Base Class Library (BCL), is important for understanding how C# code is executed and for utilizing the framework's many built-in features.\n \n* Web & Software development: Knowledge of web development technologies such as HTML, CSS, JavaScript, and [ASP.NET](http://ASP.NET) is important for creating web applications using C# and the .NET Framework and knowledge of software development methodologies such as Agile, Scrum, or Waterfall is also useful.\n \n* Database: Familiarity with database concepts and technologies, such as SQL and [ADO.NET](http://ADO.NET), is important for working with data in C# applications.\n \n* Cloud computing: Familiarity with cloud computing concepts and technologies, such as Azure, is becoming increasingly important for deploying and scaling C# applications.\n \n* DevOps: Understanding of DevOps concepts and practices, such as continuous integration and continuous deployment, is necessary for automating and streamlining the software development process.\n \n\nFor more information, visit the following links:", + "links": [ + { + "title": "Explore top posts about Career", + "url": "https://app.daily.dev/tags/career?ref=roadmapsh", + "type": "article" + }, + { + "title": "Asp.net - Complete Tutorial", + "url": "https://www.youtube.com/watch?v=kdPtNMb8tPw", + "type": "video" + }, + { + "title": "Learn Cloud Computing", + "url": "https://www.youtube.com/watch?v=eWwK2FKWp0g", + "type": "video" + }, + { + "title": "DevOps Course for Beginners", + "url": "https://www.youtube.com/watch?v=hQcFE0RD0cQ", + "type": "video" + } + ] + }, + "fxANnSiTb2VzA9u-YeBL1": { + "title": "C#", + "description": "C# is a modern coding language that was developed by Microsoft that focuses on applying the coding style to C++ and making it so that way it's more condensed and simple. It's similar to Java by both being static, strong, and manifestive languages. Both use the System's prebuilt class to do certain features like printing output to the screen, etc.C#, like Java, also contains a garbage collection, which removes lower-level maintenance code from the programmer.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "C# official website?", + "url": "https://learn.microsoft.com/en-us/dotnet/csharp//", + "type": "article" + }, + { + "title": "The Beginners Guide to C#", + "url": "https://www.w3schools.com/CS/index.php", + "type": "article" + }, + { + "title": "C# Tutorial", + "url": "https://www.w3schools.com/cs/index.php", + "type": "article" + }, + { + "title": "Explore top posts about C#", + "url": "https://app.daily.dev/tags/csharp?ref=roadmapsh", + "type": "article" + }, + { + "title": "C# Full Course - Learn C# 10 and .NET 6 in 7 hours", + "url": "https://www.youtube.com/watch?v=q_F4PyW8GTg", + "type": "video" + } + ] + }, + "3GGvuxdfuDwLpNX_gtjCK": { + "title": ".NET", + "description": ".NET (pronounced \"dot net\") is a software framework developed by Microsoft that can be used to create a wide range of applications, including Windows desktop and web applications, mobile apps, and gaming. The .NET Framework provides a large library of pre-built functionality, including collections, file input/output, and networking, that can be used by .NET applications. It also includes a Common Language Runtime (CLR) which manages the execution of code, providing features such as memory management, security, and exception handling.\n\nFor more information, visit the following link:", + "links": [ + { + "title": "What is .NET?", + "url": "https://dotnet.microsoft.com/en-us/learn/dotnet/what-is-dotnet", + "type": "article" + }, + { + "title": "An Overview of .NET", + "url": "https://auth0.com/blog/what-is-dotnet-platform-overview/", + "type": "article" + }, + { + "title": "Explore top posts about .NET", + "url": "https://app.daily.dev/tags/.net?ref=roadmapsh", + "type": "article" + } + ] + }, + "6HJQ1Evgah0Pki04Z2hQt": { + "title": ".NET CLI", + "description": ".NET CLI is the command-line interface (CLI) for the .NET platform. It is a tool that provides a common interface for running .NET Core command-line tools and utilities. .NET Core is a cross-platform, open-source, and modular version of the .NET framework, and the .NET CLI provides a way to interact with it from the command line.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Microsoft - .NET CLI overview", + "url": "https://learn.microsoft.com/en-us/dotnet/core/tools/", + "type": "article" + }, + { + "title": "Explore top posts about CLI", + "url": "https://app.daily.dev/tags/cli?ref=roadmapsh", + "type": "article" + }, + { + "title": "Intro To The .NET CLI", + "url": "https://youtu.be/RQLzp2Z8-BE", + "type": "video" + } + ] + }, + "NvODRFR0DLINB0RlPSsvt": { + "title": "Learn the Basics of C#", + "description": "C# (pronounced \"C-sharp\") is a general-purpose, object-oriented programming language developed by Microsoft. It is part of the .NET family of languages and is used to build a wide range of applications, from web and mobile applications to games and cloud services.\n\nC# is a statically-typed language, which means that the type of a variable must be specified when it is declared, and that the type of a value cannot be changed after it has been assigned. C# also supports object-oriented programming, which means that it provides features such as encapsulation, inheritance, and polymorphism.\n\nC# is a popular language for building .NET applications, and it is used by many large companies and organizations, including Microsoft, Dell, and IBM. It is a versatile language that can be used for a wide range of purposes, and it is well-suited for building scalable and maintainable software systems.\n\nVisit the following links for more information:", + "links": [ + { + "title": "Introduction to C#", + "url": "https://learn.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/tutorials/", + "type": "article" + }, + { + "title": "Basics Of C#", + "url": "https://www.c-sharpcorner.com/UploadFile/e9fdcd/basics-of-C-Sharp/", + "type": "article" + }, + { + "title": "C# Tutorials", + "url": "https://dotnettutorials.net/course/csharp-dot-net-tutorials/", + "type": "article" + }, + { + "title": "C# tutorials - W3Schools", + "url": "https://www.w3schools.com/cs/index.php", + "type": "article" + }, + { + "title": "Explore top posts about C#", + "url": "https://app.daily.dev/tags/csharp?ref=roadmapsh", + "type": "article" + } + ] + }, + "OtdCmkj0SvrGwCUSfm96C": { + "title": "Git - Version Control", + "description": "[Git](https://git-scm.com/) is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Learn Git with Tutorials, News and Tips - Atlassian", + "url": "https://www.atlassian.com/git", + "type": "article" + }, + { + "title": "Git Cheat Sheet", + "url": "https://cs.fyi/guide/git-cheatsheet", + "type": "article" + }, + { + "title": "Explore top posts about Git", + "url": "https://app.daily.dev/tags/git?ref=roadmapsh", + "type": "article" + }, + { + "title": "Git & GitHub Crash Course For Beginners", + "url": "https://www.youtube.com/watch?v=SWYqp7iY_Tc", + "type": "video" + } + ] + }, + "KAZF-mIg-FlfMonfdOLhb": { + "title": "GitHub, GitLab, BitBucket", + "description": "There are different repository hosting services with the most famous one being GitHub, GitLab and BitBucket. I would recommend creating an account on GitHub because that is where most of the OpenSource work is done and most of the developers are.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "GitHub: Where the world builds software", + "url": "https://github.com", + "type": "opensource" + }, + { + "title": "GitLab: Iterate faster, innovate together", + "url": "https://gitlab.com", + "type": "opensource" + }, + { + "title": "BitBucket: The Git solution for professional teams", + "url": "https://bitbucket.com", + "type": "article" + } + ] + }, + "YI3cAezupWNntFw4B6elY": { + "title": "HTTP / HTTPs Protocol", + "description": "HTTP is the `TCP/IP` based application layer communication protocol which standardizes how the client and server communicate with each other. It defines how the content is requested and transmitted across the internet.\n\nHTTPS\n=====\n\nHTTPS (**H**ypertext **T**ransfer **P**rotocol **S**ecure) is the secure version of HTTP, which is the primary protocol used to send data between a web browser and a website.\n\n`HTTPS = HTTP + SSL/TLS`\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Everything you need to know about HTTP", + "url": "https://cs.fyi/guide/http-in-depth", + "type": "article" + }, + { + "title": "What is HTTP?", + "url": "https://www.cloudflare.com/en-gb/learning/ddos/glossary/hypertext-transfer-protocol-http/", + "type": "article" + }, + { + "title": "An overview of HTTP", + "url": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview", + "type": "article" + }, + { + "title": "HTTP/3 From A To Z: Core Concepts", + "url": "https://www.smashingmagazine.com/2021/08/http3-core-concepts-part1/", + "type": "article" + }, + { + "title": "What is HTTPS?", + "url": "https://www.cloudflare.com/en-gb/learning/ssl/what-is-https/", + "type": "article" + }, + { + "title": "Why HTTPS Matters", + "url": "https://developers.google.com/web/fundamentals/security/encrypt-in-transit/why-https", + "type": "article" + }, + { + "title": "Enabling HTTPS on Your Servers", + "url": "https://web.dev/enable-https/", + "type": "article" + }, + { + "title": "How HTTPS works (comic)", + "url": "https://howhttps.works/", + "type": "article" + }, + { + "title": "HTTP Crash Course & Exploration", + "url": "https://www.youtube.com/watch?v=iYM2zFP3Zn0", + "type": "video" + } + ] + }, + "RAX2xN37taw9cqA3pnORh": { + "title": "Data Structures and Algorithms", + "description": "As the name indicates, a **Data Structure** is a way of organizing the data in the **memory** so it can be used efficiently. Some common data structures are array, linked list, stack, hashtable, queue, tree, heap, and graph.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Data Structures and Algorithms", + "url": "https://www.javatpoint.com/data-structure-tutorial", + "type": "article" + }, + { + "title": "C# resources", + "url": "https://dev.to/adavidoaiei/fundamental-data-structures-and-algorithms-in-c-4ocf", + "type": "article" + }, + { + "title": "Interview Questions about Data Structures", + "url": "https://www.csharpstar.com/csharp-algorithms/", + "type": "article" + }, + { + "title": "Explore top posts about Algorithms", + "url": "https://app.daily.dev/tags/algorithms?ref=roadmapsh", + "type": "article" + }, + { + "title": "Data Structures Illustrated", + "url": "https://www.youtube.com/watch?v=9rhT3P1MDHk&list=PLkZYeFmDuaN2-KUIv-mvbjfKszIGJ4FaY", + "type": "video" + } + ] + }, + "tnKUdsgp6bnFtQTexEmfy": { + "title": "Database Fundamentals", + "description": "A database is a collection of useful data of one or more related organizations structured in a way to make data an asset to the organization. A database management system is a software designed to assist in maintaining and extracting large collections of data in a timely fashion.\n\nA **Relational database** is a type of database that stores and provides access to data points that are related to one another. Relational databases store data in a series of tables.\n\n**NoSQL databases** offer data storage and retrieval that is modelled differently to \"traditional\" relational databases. NoSQL databases typically focus more on horizontal scaling, eventual consistency, speed and flexibility and is used commonly for big data and real-time streaming applications.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Oracle: What is a Database?", + "url": "https://www.oracle.com/database/what-is-database/", + "type": "article" + }, + { + "title": "Prisma.io: What are Databases?", + "url": "https://www.prisma.io/dataguide/intro/what-are-databases", + "type": "article" + }, + { + "title": "Intro To Relational Databases", + "url": "https://www.udacity.com/course/intro-to-relational-databases--ud197", + "type": "article" + }, + { + "title": "NoSQL Explained", + "url": "https://www.mongodb.com/nosql-explained", + "type": "article" + }, + { + "title": "Explore top posts about Database", + "url": "https://app.daily.dev/tags/database?ref=roadmapsh", + "type": "article" + }, + { + "title": "What is Relational Database", + "url": "https://youtu.be/OqjJjpjDRLc", + "type": "video" + }, + { + "title": "How do NoSQL Databases work", + "url": "https://www.youtube.com/watch?v=0buKQHokLK8", + "type": "video" + } + ] + }, + "aOJMVrTcA_I2y_QHzj7aM": { + "title": "SQL Basics", + "description": "SQL stands for Structured Query Language. SQL lets you access and manipulate databases SQL became a standard of the American National Standards Institute (ANSI) in 1986, and of the International Organization for Standardization (ISO) in 1987.\n\nAlthough SQL is an ANSI/ISO standard, there are different versions of the SQL language.\n\nHowever, to be compliant with the ANSI standard, they all support at least the major commands (such as SELECT, UPDATE, DELETE, INSERT, WHERE) in a similar manner.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Introduction to SQL", + "url": "https://www.w3schools.com/sql/sql_intro.asp", + "type": "article" + }, + { + "title": "Explore top posts about SQL", + "url": "https://app.daily.dev/tags/sql?ref=roadmapsh", + "type": "article" + }, + { + "title": "SQL Tutorial - Full Database Course for Beginners", + "url": "https://www.youtube.com/watch?v=HXV3zeQKqGY", + "type": "video" + } + ] + }, + "zlAcgLKxGF_TyrcJIk4X7": { + "title": "Database Design Basics", + "description": "Database Design is a collection of processes that facilitate the designing, development, implementation and maintenance of enterprise data management systems. Properly designed database are easy to maintain, improves data consistency and are cost effective in terms of disk storage space. The main objectives of database design in DBMS are to produce logical and physical designs models of the proposed database system.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Database design basics", + "url": "https://support.microsoft.com/en-us/office/database-design-basics-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5", + "type": "article" + }, + { + "title": "Explore top posts about Database", + "url": "https://app.daily.dev/tags/database?ref=roadmapsh", + "type": "article" + }, + { + "title": "Database Design Course", + "url": "https://www.youtube.com/watch?v=ztHopE5Wnpc", + "type": "video" + } + ] + }, + "ZiK-c9zNbi5RZkKUi44wP": { + "title": "Stored Procedures", + "description": "A stored procedure is a pre-compiled collection of SQL statements that can be executed on a database server. Stored procedures are typically used to perform specific tasks, such as retrieving data from a database, inserting or updating data, or performing complex calculations. They are stored on the database server and can be called or executed from a client application or other stored procedures. Stored procedures can improve database performance by reducing the amount of SQL code needed to be executed and allowing developers to reuse common pieces of code. They can also provide security by allowing database administrators to control which users have access to specific stored procedures.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Stored Procedure Tutorial", + "url": "https://www.w3schools.com/sql/sql_stored_procedures.asp", + "type": "article" + }, + { + "title": "Stored Procedure in SQL: Benefits And How to Create It", + "url": "https://www.simplilearn.com/tutorials/sql-tutorial/stored-procedure-in-sql", + "type": "article" + }, + { + "title": "SQL Server stored procedures for beginners", + "url": "https://www.sqlshack.com/sql-server-stored-procedures-for-beginners/", + "type": "article" + } + ] + }, + "1-XdtrGPbUoxpu9ZcQlBA": { + "title": "Constraints", + "description": "Database constraints are rules that are used to limit the data that can be stored in a database table. These constraints can be used to ensure the integrity and accuracy of the data in the table, and they can be used to enforce business rules or other requirements. For example, a constraint might be used to ensure that a column only contains positive numbers, or to ensure that a column always has a unique value. Constraints can be specified at the time a table is created, or they can be added to an existing table. Some common types of constraints include primary keys, foreign keys, and NOT NULL constraints.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "SQL Constraints", + "url": "https://www.w3schools.com/sql/sql_constraints.asp", + "type": "article" + }, + { + "title": "Constraints of SQL", + "url": "https://www.educative.io/courses/database-design-fundamentals/m7JnY9Xm6Qp", + "type": "article" + }, + { + "title": "Constraints in DBMS", + "url": "https://beginnersbook.com/2015/04/constraints-in-dbms/", + "type": "article" + } + ] + }, + "2f_CJMnXwPxjMEwm5P_QJ": { + "title": "Triggers", + "description": "Triggers are special type of stored procedures that are automatically executed in response to specific events that occur within a database. These events can include:\n\n* Data modification events (INSERT, UPDATE, DELETE) on a specific table or view.\n* Data definition events (CREATE, ALTER, DROP) on specific database objects such as tables or views.\n* Logon events (CONNECT, DISCONNECT) that occur when a user connects to or disconnects from the database.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Database Triggers", + "url": "https://docs.oracle.com/cd/A57673_01/DOC/server/doc/SCN73/ch15.htm", + "type": "article" + }, + { + "title": "Database Triggers: Examples & Overview", + "url": "https://study.com/academy/lesson/database-triggers-examples-overview.html", + "type": "article" + }, + { + "title": "What are Triggers in SQL?", + "url": "https://www.edureka.co/blog/triggers-in-sql/", + "type": "article" + }, + { + "title": "What is a SQL Trigger?", + "url": "https://www.essentialsql.com/sql-trigger/", + "type": "article" + } + ] + }, + "v2ZTCQQFQPoJNhOVGMG2g": { + "title": "ASP.NET Core Basics", + "description": "[ASP.NET](http://ASP.NET) Core is a open-source, cross-platform web framework for building modern web applications using .NET. Some of the basics of [ASP.NET](http://ASP.NET) Core are Cross-platform, Open-source, Modular, High performance, MVC pattern, Dependency Injection, Middleware, Razor Pages and Razor Components, EF Core.\n\nFor more information, visit the following resources:", + "links": [ + { + "title": "ASP.NET documentation", + "url": "https://learn.microsoft.com/en-us/aspnet/core/?view=aspnetcore-7.0", + "type": "article" + }, + { + "title": "ASP.NET Core Tutorial", + "url": "https://www.tutorialspoint.com/asp.net_core/index.htm", + "type": "article" + }, + { + "title": "Learn ASP.NET Core from Scratch", + "url": "https://www.tutorialsteacher.com/core", + "type": "article" + }, + { + "title": "Explore top posts about ASP.NET", + "url": "https://app.daily.dev/tags/aspnet?ref=roadmapsh", + "type": "article" + } + ] + }, + "D3aQw0-pk3ycO-n10HBaA": { + "title": "MVC", + "description": "MVC is an architectural design pattern used for developing applications, specifically web applications. This pattern separates an application into three main logical components **Model View Controller**. Each architectural component is built to handle specific development aspects of an application.\n\n* **Model** - Handles all data-related logic. Interacts with Database.\n* **View** - Handles UI part of the applications (data presentation).\n* **Controller** - Handles request flow, and acts as an intermediary between view and model.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "MVC Official Documentation", + "url": "https://learn.microsoft.com/en-us/aspnet/core/mvc/overview?WT.mc_id=dotnet-35129-website&view=aspnetcore-7.0", + "type": "article" + }, + { + "title": "ASP.NET MVC Architecture", + "url": "https://www.tutorialsteacher.com/mvc/mvc-architecture", + "type": "article" + }, + { + "title": "MVC Framework - Introduction", + "url": "https://www.tutorialspoint.com/mvc_framework/mvc_framework_introduction.htm", + "type": "article" + } + ] + }, + "dZ9fYWMBa1OemTmLOI8_q": { + "title": "REST", + "description": "REST (Representational State Transfer) is an architectural style for building web services. In the context of .NET, RESTful web services can be created using the [ASP.NET](http://ASP.NET) Web API framework, which allows developers to create HTTP-based services that can be consumed by a wide range of clients, including web browsers and mobile devices. The Web API framework provides a set of tools and libraries for creating RESTful services, including routing, request/response handling, and support for a variety of data formats, such as JSON and XML.\n\nFor more information, visit the following resources:", + "links": [ + { + "title": "What is REST Services?", + "url": "http://www.codedigest.com/quick-start/16/what-is-rest-services-how-to-create-rest-services-in-aspnet", + "type": "article" + }, + { + "title": "Restful API In ASP.NET: Introduction of REST & Web API", + "url": "https://www.c-sharpcorner.com/UploadFile/4b0136/restful-api-in-Asp-Net-introduction-of-rest-web-api/", + "type": "article" + }, + { + "title": "What are RESTful APIs", + "url": "https://www.pragimtech.com/blog/blazor/what-are-restful-apis/", + "type": "article" + }, + { + "title": "Explore top posts about REST API", + "url": "https://app.daily.dev/tags/rest-api?ref=roadmapsh", + "type": "article" + } + ] + }, + "qpVxwuyA2oE06MZLtEdP1": { + "title": "Razon Pages", + "description": "Razor Pages is a feature of the [ASP.NET](http://ASP.NET) Core framework that allows developers to build web applications using a combination of Razor markup (a markup syntax for defining dynamic HTML) and C# code. Razor Pages is built on top of the [ASP.NET](http://ASP.NET) Core MVC (Model-View-Controller) framework, and provides a simpler, more intuitive way to build web pages and handle user input.\n\nRazor Pages are useful for building simple, self-contained web pages that do not require a complex navigation or layout structure, and are often used for building small to medium-size web applications.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Basics of Razor Pages", + "url": "https://www.jetbrains.com/dotnet/guide/tutorials/basics/razor-pages/", + "type": "article" + }, + { + "title": "Get started with Razor Pages in ASP.NET Core", + "url": "https://learn.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/?view=aspnetcore-7.0", + "type": "article" + }, + { + "title": "What Is Razor Pages?", + "url": "https://www.learnrazorpages.com/", + "type": "article" + } + ] + }, + "vePinRjDfSGULKw0LE9K-": { + "title": "Razor Components", + "description": "Razor Components is a feature of [ASP.NET](http://ASP.NET) Core that allows developers to build reusable, self-contained components that can be used across multiple pages or even multiple applications. Razor Components is built on top of the Razor view engine, which allows developers to define components using a combination of Razor markup and C# code.\n\nRazor Components are useful for building complex, dynamic, and reusable UI elements, such as forms, tables, or dialogs, and can be used to build both small and large-scale web applications.\n\nFor more information, vist the following links:", + "links": [ + { + "title": "ASP.NET Core Razor components", + "url": "https://learn.microsoft.com/en-us/aspnet/core/blazor/components/?view=aspnetcore-7.0", + "type": "article" + }, + { + "title": "Core Razor Componets in .NET", + "url": "https://www.c-sharpcorner.com/blogs/asp-net-core-razor-componets", + "type": "article" + }, + { + "title": "What is Core razor components?", + "url": "https://www.youtube.com/watch?v=KseDLejhYi0", + "type": "video" + } + ] + }, + "dG--AAcZZdltYCeg6zCz2": { + "title": "Middlewares", + "description": "Middleware is software that sits between an operating system and application software, and facilitates communication and data exchange between them. In the context of web development, middleware refers to software components that handle requests and responses in a web application. These components are typically executed in a pipeline, with each component performing a specific task, such as authentication, logging, or routing.\n\nIn the [ASP.NET](http://ASP.NET) Core framework, middleware is a key concept that is used to build web applications. Middleware components are added to the application pipeline using the `IApplicationBuilder` interface, and are executed in the order in which they are added. For example, an application might have middleware components for handling authentication, logging, and routing, in that order.\n\nVisit the following links for more resources:", + "links": [ + { + "title": "What is Middleware?", + "url": "https://www.redhat.com/en/topics/middleware/what-is-middleware", + "type": "article" + }, + { + "title": "Introduction to Middleware", + "url": "https://www.techtarget.com/searchapparchitecture/definition/middleware", + "type": "article" + }, + { + "title": "What is Middleware in .NET?", + "url": "https://www.talend.com/resources/what-is-middleware/", + "type": "article" + } + ] + }, + "U3HXmNq6x2YA3BwZsOTbe": { + "title": "Filters and Attributes", + "description": "In the [ASP.NET](http://ASP.NET) Core framework, filters and attributes are used to add additional functionality to controllers and action methods, such as authentication, authorization, caching, and exception handling.", + "links": [] + }, + "EJxliq-HPVp00CVsFc6kf": { + "title": "App Settings and Configs", + "description": "In the [ASP.NET](http://ASP.NET) Core framework, app settings and configurations refer to the process of storing and managing application-specific settings and configuration data.\n\n* **App Settings** refers to the key-value pairs of data that an application uses to configure its behavior, such as database connection strings, api keys, or other settings. These settings are typically stored in configuration files, such as `appsettings.json`, `appsettings.development.json`, or `appsettings.production.json`, and can be accessed using the IConfiguration interface.\n \n* **Configurations** refer to the process of loading and managing the app settings, including specifying the source of the settings and the format of the configuration files. In [ASP.NET](http://ASP.NET) Core, the `Startup` class is responsible for configuring the application's settings, and typically loads configuration data from various sources, such as JSON files, environment variables, or command-line arguments.\n \n\nFor more information, visit the following links:", + "links": [ + { + "title": "What is Azure App Configuration?", + "url": "https://learn.microsoft.com/en-us/azure/azure-app-configuration/overview", + "type": "article" + }, + { + "title": "What are App Configurations and how do I work with them?", + "url": "https://support.procore.com/faq/what-are-app-configurations", + "type": "article" + }, + { + "title": "Configuration & AppSettings", + "url": "https://docs.servicestack.net/appsettings", + "type": "article" + } + ] + }, + "R7Qk5hsEIl9dspQXdaJAJ": { + "title": "StyleCop Rules", + "description": "", + "links": [] + }, + "ipABerBcM9zCte9pYaIse": { + "title": "Minimal APIs", + "description": "", + "links": [] + }, + "POQPoN98eqOH2873ZI6Hm": { + "title": "Object Relational Mapping", + "description": "ORM stands for Object-Relational Mapping, and it is a technique that allows a developer to work with a database using objects. It is a way of abstracting the database so that the developer can think in terms of objects, rather than tables and SQL queries. This can make it easier to write and maintain code, as well as improve the performance of the application.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "ORM (Object Relational Mapping)", + "url": "https://www.telerik.com/blogs/dotnet-basics-orm-object-relational-mapping", + "type": "article" + }, + { + "title": "Understanding Object-Relational Mapping: Pros, Cons", + "url": "https://www.altexsoft.com/blog/object-relational-mapping/", + "type": "article" + } + ] + }, + "ET74_7ieahNaGdPT11_NI": { + "title": "Entity Framework Core", + "description": "Entity Framework Core (EF Core) is an open-source Object-Relational Mapping (ORM) framework for .NET. It is a lightweight, cross-platform version of Entity Framework, the ORM framework that was part of the .NET Framework. EF Core allows developers to work with relational data using domain-specific objects, eliminating the need to write raw SQL statements. Instead, EF Core provides a set of APIs that can be used to interact with a database, providing a simple and efficient way to perform common database operations such as querying, inserting, updating, and deleting data.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Example of Entity Framework Core", + "url": "https://learn.microsoft.com/en-us/ef/core/", + "type": "article" + }, + { + "title": "Entity Framework Core Documentation", + "url": "https://learn.microsoft.com/en-us/ef/", + "type": "article" + }, + { + "title": "What are the Basics of Entity Framework Core?", + "url": "https://www.jetbrains.com/dotnet/guide/tutorials/basics/entity-framework-core/", + "type": "article" + }, + { + "title": "Explore top posts about .NET", + "url": "https://app.daily.dev/tags/.net?ref=roadmapsh", + "type": "article" + } + ] + }, + "eGVaAz3VhGu3cXBNxTAWd": { + "title": "Framework Basics", + "description": "An ORM (Object-Relational Mapping) framework is a tool that maps the objects in an application to the database tables, allowing developers to work with the database using familiar, object-oriented concepts.\n\nORM frameworks are tools that map the objects in an application to the database tables, allowing developers to work with the database using familiar, object-oriented concepts such as Entities, Mapping, Context, Queries, Lazy Loading, Change Tracking, and Caching.\n\nFor more resources, visit the following link:", + "links": [ + { + "title": "ORM Framework", + "url": "https://www.h2kinfosys.com/blog/orm-framework/", + "type": "article" + }, + { + "title": "What are Frameworks in ORM", + "url": "https://www.killerphp.com/articles/what-are-orm-frameworks/", + "type": "article" + }, + { + "title": "Essentials of ORM Framework", + "url": "https://medium.com/@mikependon/the-essentials-of-orm-framework-in-your-software-development-837131efd91b", + "type": "article" + }, + { + "title": "ORM Frameworks – What is an Object-Relational Mapping Framework", + "url": "https://onlinecode.org/what-are-orm-frameworks/", + "type": "article" + } + ] + }, + "ZPeebwJ3OBuywEgLLgQTG": { + "title": "Code First + Migrations", + "description": "Code First Migrations is a feature of Entity Framework that enables you to change the model classes in your application and then propagate those changes to the database. When you use Code First Migrations, Entity Framework generates the necessary SQL commands to update the database schema to match the model classes.\n\nTo use Code First Migrations, you need to enable it in your Entity Framework application. This can be done by adding a reference to the Entity Framework Migrations NuGet package, and then enabling Migrations in your application.\n\nOnce Migrations is enabled, you can use the Package Manager Console to add a new migration to your application. This will generate a class that contains the necessary SQL commands to update the database schema. You can then use the Update-Database command to apply the migration to the database.", + "links": [ + { + "title": "What is a Code First Migration?", + "url": "https://www.entityframeworktutorial.net/code-first/what-is-code-first.aspx", + "type": "article" + }, + { + "title": "Example for Code First Migrations", + "url": "https://learn.microsoft.com/en-us/ef/ef6/modeling/code-first/migrations/", + "type": "article" + }, + { + "title": "Code First Migrations in Entity Framework", + "url": "https://www.c-sharpcorner.com/UploadFile/26b237/code-first-migrations-in-entity-framework/", + "type": "article" + } + ] + }, + "9AMotSwdEbB8uOg80SykE": { + "title": "Lazy, Eager, Explicit Loading", + "description": "Eager Loading\n-------------\n\nEager Loading helps you to load all your needed entities at once; i.e., all your child entities will be loaded at single database call. This can be achieved, using the Include method, which returns the related entities as a part of the query and a large amount of data is loaded at once.\n\nLazy Loading\n------------\n\nIt is the default behavior of an Entity Framework, where a child entity is loaded only when it is accessed for the first time. It simply delays the loading of the related data, until you ask for it.\n\nVisit the following links for more resources:", + "links": [ + { + "title": "Eager Loading & Lazy Loading", + "url": "https://www.c-sharpcorner.com/article/eager-loading-lazy-loading-and-explicit-loading-in-entity-framework/", + "type": "article" + }, + { + "title": "Difference between Eager and Lazy Loading", + "url": "https://stackoverflow.com/questions/31366236/lazy-loading-vs-eager-loading", + "type": "article" + }, + { + "title": "Working With Lazy & Eager Loading in Entity Framework", + "url": "https://dzone.com/articles/working-with-lazy-loading-and-eager-loading-in-ent", + "type": "article" + } + ] + }, + "wfEOvAkGXkTZGdGX341D4": { + "title": "Change Tracker API", + "description": "The Change Tracker API is a feature of ORM (Object-Relational Mapping) frameworks, such as Entity Framework Core, that allows developers to track changes to entities and automatically persist them to the database.\n\nThe Change Tracker API is typically exposed through the context class, which is the main class that manages the connection to the database and provides access to the entities.\n\nWhen an entity is retrieved from the database, the Change Tracker API marks it as \"unchanged\". When a property of the entity is modified, the Change Tracker API marks the entity as \"modified\". And when a new entity is added to the context, the Change Tracker API marks it as \"added\". For more resources, visit the following links:", + "links": [ + { + "title": "Change Tracking in EF Core", + "url": "https://learn.microsoft.com/en-us/ef/core/change-tracking/", + "type": "article" + }, + { + "title": "Intro to Change Tracking", + "url": "https://www.oreilly.com/library/view/programming-entity-framework/9781449331825/ch05.html", + "type": "article" + }, + { + "title": "ChangeTracker in Entity Framework Core", + "url": "https://www.entityframeworktutorial.net/efcore/changetracker-in-ef-core.aspx", + "type": "article" + } + ] + }, + "UkWc41r0bZ1lptjse3As6": { + "title": "Dapper", + "description": "Dapper is a lightweight object-relational mapper (ORM) for the .NET framework. It is designed to provide fast and simple access to data stored in a database, by mapping the data to objects in the application.\n\nDapper helps you to write efficient and concise code for interacting with databases, without the need for a full-featured ORM like Entity Framework. It provides a set of extension methods for the IDbConnection interface, which you can use to execute SQL queries and map the results to strongly-typed objects.\n\nTo learn more about Dapper, you can visit the following links:", + "links": [ + { + "title": "The official Dapper website", + "url": "https://github.com/StackExchange/Dapper", + "type": "opensource" + }, + { + "title": "The Dapper Documentation", + "url": "https://dapper-tutorial.net", + "type": "article" + } + ] + }, + "tYDVcnG0oUF3R8DwASvAh": { + "title": "RepoDB", + "description": "RepoDB is an open-source ORM (Object-Relational Mapping) library for .NET that simplifies the process of working with databases. It is a lightweight, fast, and easy-to-use library that provides a simple and consistent API for performing common database operations such as querying, inserting, updating, and deleting data.\n\nRepoDb is built on top of [ADO.NET](http://ADO.NET), which is the native data access technology in .NET, and provides a higher-level abstraction on top of it. This allows RepoDb to take advantage of the performance and scalability of [ADO.NET](http://ADO.NET) while providing a simpler and more convenient API for developers.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Get Started with RepoDB", + "url": "https://repodb.net/", + "type": "article" + }, + { + "title": "Complete Guide to RepoDB", + "url": "https://medium.com/nerd-for-tech/everything-you-need-to-know-about-repodb-23cd4b9939c1", + "type": "article" + }, + { + "title": "Why Choose RepoDB?", + "url": "https://blog.devgenius.io/why-choose-repodb-orm-over-dapper-da87432c7830", + "type": "article" + } + ] + }, + "z24IJndpQYTl1PhiUI2mx": { + "title": "NHibernate", + "description": "NHibernate is an open-source Object-Relational Mapping (ORM) framework for .NET. It is a powerful and flexible framework that can greatly simplify working with relational data in .NET. NHibernate is similar to other ORM frameworks such as Entity Framework and RepoDb in that it provides a higher-level abstraction on top of the underlying data access technology ([ADO.NET](http://ADO.NET) in this case) and allows developers to work with data using domain-specific objects, eliminating the need to write raw SQL statements.\n\nNHibernate uses the concept of \"mapping files\" which are XML files that define how the classes in the application map to the tables and columns in the database. These mapping files are used to create a conceptual model of the data in the form of classes, and then NHibernate uses this model to generate the SQL statements necessary to interact with the database.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "What is Nhibernate?", + "url": "https://www.partech.nl/en/publications/2021/08/what-is-nhibernate-and-how-is-it-different-from-entity-framework", + "type": "article" + }, + { + "title": "NHibernate - ORM", + "url": "https://www.tutorialspoint.com/nhibernate/nhibernate_orm.htm", + "type": "article" + }, + { + "title": "Get Started with NHibernate", + "url": "https://nhibernate.info/", + "type": "article" + } + ] + }, + "IejHMMVKwA0sIInla4FjX": { + "title": "Dependency Injection", + "description": "Dependency injection (DI) is a software design pattern that is used to manage the dependencies of an application. It is a technique that allows developers to write loosely-coupled code, by separating the responsibility of creating and managing objects from the objects themselves.\n\nIn a typical implementation, a DI container is used to manage the dependencies of the application. The container is responsible for creating and managing instances of objects and their dependencies, and providing them to other objects as needed.\n\nThere are different types of dependency injection, such as Constructor injection, Property injection, and Method injection, which can be used depending on the requirement and the design of the application. Visit the following links for more resources:", + "links": [ + { + "title": "What is Dependency Injection?", + "url": "https://stackoverflow.com/questions/130794/what-is-dependency-injection", + "type": "article" + }, + { + "title": "Dependency Injection, It's Definition & principles", + "url": "https://www.growin.com/blog/what-is-dependency-injection/", + "type": "article" + }, + { + "title": "Explore top posts about Dependency Injection", + "url": "https://app.daily.dev/tags/dependency-injection?ref=roadmapsh", + "type": "article" + } + ] + }, + "f212ztDU_kb7gO71Nn76L": { + "title": "Scrutor", + "description": "Scrutor is an open-source library for .NET that extends the functionality of the built-in dependency injection framework in .NET Core. It provides a set of extension methods for the `IServiceCollection` interface, which can be used to register and configure services in a more convenient and flexible way.\n\nOne of the main features of Scrutor is its ability to automatically scan assemblies for services and register them with the dependency injection container, allowing you to avoid having to manually register each service one by one. It also provides a fluent API that makes it easy to configure services, such as specifying the lifetime of a service, adding decorators, and more.\n\nFor more information, visit the following resources:", + "links": [ + { + "title": "How to use Scrutor in ASP.Net Core?", + "url": "https://www.infoworld.com/article/3321356/how-to-use-scrutor-in-aspnet-core.html", + "type": "article" + }, + { + "title": "Complete Guide to Scrutor", + "url": "https://andrewlock.net/using-scrutor-to-automatically-register-your-services-with-the-asp-net-core-di-container/", + "type": "article" + } + ] + }, + "Tjaczp2E-cCn0qSv89xgo": { + "title": "Life Cycles", + "description": "In [ASP.NET](http://ASP.NET), dependency injection (DI) lifecycles determine the lifetime of objects that are resolved through the DI container. There are several predefined lifecycle options in the `Microsoft.Extensions.DependencyInjection` library, including:\n\n* **Transient:** A new instance of the object is created every time it is requested.\n* **Scoped:** A new instance of the object is created for each request within the same scope.\n* **Singleton:** A single instance of the object is created and shared across the entire application.\n\nAdditionally, you can also create a custom lifecycle by implementing the `Microsoft.Extensions.DependencyInjection.IServiceScopeFactory` interface\n\nFor more resources, visit the following links:", + "links": [ + { + "title": "What are Service Life Cyles in ASP.NET Core?", + "url": "https://endjin.com/blog/2022/09/service-lifetimes-in-aspnet-core", + "type": "article" + }, + { + "title": "Learn Service Lifetimes in .NET Core", + "url": "https://henriquesd.medium.com/dependency-injection-and-service-lifetimes-in-net-core-ab9189349420", + "type": "article" + }, + { + "title": "Complete Guide to Dependency Injection Lifecycles", + "url": "https://www.youtube.com/watch?v=wA5bPsv2CLA", + "type": "video" + } + ] + }, + "iM760f8Ys66-VSkMiZfIX": { + "title": "DI Containers", + "description": "A dependency injection (DI) container is a software component that is responsible for managing the dependencies of an application. It is used to create and manage instances of objects and their dependencies, and is particularly useful for implementing the Dependency Inversion Principle in software development.\n\nA DI container typically consists of two main parts: a configuration API, which is used to register the types and their dependencies, and a resolution API, which is used to retrieve instances of the registered types. The DI container automatically resolves the dependencies of the objects it creates, and manages the lifetime of the objects and their dependencies.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "What is DI Container?", + "url": "https://www.dotnettricks.com/learn/dependencyinjection/what-is-ioc-container-or-di-container", + "type": "article" + }, + { + "title": "Getting Started with DI Container", + "url": "https://stackoverflow.com/questions/50718586/what-is-a-di-container", + "type": "article" + }, + { + "title": "How to Use DI Container?", + "url": "https://learn.userfrosting.com/services/the-di-container", + "type": "article" + }, + { + "title": "Explore top posts about Containers", + "url": "https://app.daily.dev/tags/containers?ref=roadmapsh", + "type": "article" + } + ] + }, + "J9XdYLo7qJiBoL8p3c68P": { + "title": "Microsoft.Extensions", + "description": "Microsoft.Extensions.DependencyInjection is a dependency injection framework that is part of the Microsoft.Extensions.DependencyInjection NuGet package. It is used to create and manage instances of objects and their dependencies, and is particularly useful for implementing the Dependency Inversion Principle in .NET applications.\n\nThe package provides a simple and consistent API for registering services and resolving dependencies, which can be used to configure and manage the lifetime of objects in an application. It also provides built-in support for various types of service lifetime, such as transient, singleton and scoped.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Guide to Microsoft Extensions Dependency Injection", + "url": "https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.dependencyinjection?view=dotnet-plat-ext-7.0", + "type": "article" + }, + { + "title": "Exploring the Microsoft.Extensions.DependencyInjection", + "url": "https://www.codeproject.com/Articles/5339241/Exploring-the-Microsoft-Extensions-DependencyInjec", + "type": "article" + }, + { + "title": "How to use Microsoft.Extensions.DependencyInjection", + "url": "https://stackoverflow.com/questions/53825155/how-can-i-use-microsoft-extensions-dependencyinjection-in-an-net-core-console-a", + "type": "article" + }, + { + "title": "Explore top posts about Microsoft", + "url": "https://app.daily.dev/tags/microsoft?ref=roadmapsh", + "type": "article" + } + ] + }, + "gbpSbjF12dBE1Tb3PX8Bz": { + "title": "AutoFac", + "description": "Autofac is an open-source dependency injection framework for .NET. It is designed to make it easier to manage the dependencies of an application by automatically resolving and managing the lifetime of objects and their dependencies.\n\nAutofac uses a technique called \"component registration\" to define the objects and dependencies of an application. This is done by creating instances of the `ContainerBuilder` class and using its methods to register types, instances and factories. Then, the `Build()` method is called to create an instance of the `IContainer` interface, which can be used to resolve dependencies throughout the application.\n\nVisit the following resources for more information:", + "links": [ + { + "title": "Autofac’s Documentation", + "url": "https://autofac.readthedocs.io/en/latest/", + "type": "article" + }, + { + "title": "Getting started with Autofac", + "url": "https://autofac.org/", + "type": "article" + }, + { + "title": "Dependency Injection with Autofac", + "url": "https://www.codeproject.com/Articles/25380/Dependency-Injection-with-Autofac", + "type": "article" + } + ] + }, + "M3BW_63MFQyD8NE68dazD": { + "title": "Scoped", + "description": "Scoped lifetime is a type of dependency injection that creates a new instance of an object for each unique request, but reuses the same instance for the same request. This means that if multiple components within the same request depend on the same service, they will all receive the same instance. However, if another request is made, a new instance of the service will be created for that request.\n\nScoped lifetime is useful when you have services that are specific to a given request, such as a request-scoped database context. This allows you to have a separate and isolated instance of a service for each unique request, which can help to prevent cross-request contamination of data and improve performance.\n\nFor more information, visit the following resources:", + "links": [ + { + "title": "Dependency Injection - What is Scope?", + "url": "https://javaranch.com/journal/2008/10/dependency-injection-what-is-scope.html", + "type": "article" + }, + { + "title": "Effective Dependency Injection Scoping", + "url": "https://medium.com/android-news/effective-dependency-injection-scoping-4bac813d4491", + "type": "article" + } + ] + }, + "-N0XM0-VtCZ6QMo2YyMD-": { + "title": "Transient", + "description": "Transient lifetime is a type of dependency injection that creates a new instance of an object each time it is requested. This means that if multiple components within the same request or across different requests depend on the same service, they will each receive a new instance of the service.\n\nTransient lifetime is useful when you have services that are stateless and do not need to maintain any data between requests, such as a service that performs a simple calculation or returns data from a database.\n\nFor more information:", + "links": [ + { + "title": "What are Transient Dependencies?", + "url": "https://blazor-university.com/dependency-injection/dependency-lifetimes-and-scopes/transient-dependencies/", + "type": "article" + }, + { + "title": "Dependency Injection Lifetime", + "url": "https://www.tektutorialshub.com/asp-net-core/asp-net-core-dependency-injection-lifetime/", + "type": "article" + }, + { + "title": "Dependency Injection Explained with Transient", + "url": "https://www.youtube.com/watch?v=NkTF_6IQPiY", + "type": "video" + } + ] + }, + "y9bDrCjkDbxSIrEEtu_Mi": { + "title": "Singleton", + "description": "Singleton lifetime is a type of dependency injection that creates a single instance of an object and reuses it throughout the lifetime of the application. This means that if multiple components within the same request or across different requests depend on the same service, they will all receive the same instance of the service.\n\nSingleton lifetime is useful when you have services that need to maintain state or shared data across requests, such as a service that caches data or maintains a connection to a resource.\n\nFor more information:", + "links": [ + { + "title": "What are Singleton Dependencies?", + "url": "https://blazor-university.com/dependency-injection/dependency-lifetimes-and-scopes/transient-dependencies/", + "type": "article" + }, + { + "title": "Dependency Injection Lifetime", + "url": "https://www.tektutorialshub.com/asp-net-core/asp-net-core-dependency-injection-lifetime/", + "type": "article" + }, + { + "title": "Dependency Injection Explained with Singleton", + "url": "https://www.youtube.com/watch?v=NkTF_6IQPiY", + "type": "video" + } + ] + }, + "7Nth4LOrM_KirhvjDGkgS": { + "title": "Caching", + "description": "Caching is a technique of storing frequently used data or information in a local memory, for a certain time period. So, next time, when the client requests the same information, instead of retrieving the information from the database, it will give the information from the local memory. The main advantage of caching is that it improves the performance by reducing the processing burden.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Caching in ASP.Net", + "url": "https://www.c-sharpcorner.com/UploadFile/2072a9/caching-in-Asp-Net/", + "type": "article" + }, + { + "title": "Overview of caching in ASP.NET Core", + "url": "https://learn.microsoft.com/en-us/aspnet/core/performance/caching/overview?view=aspnetcore-7.0", + "type": "article" + }, + { + "title": "Intro to Data Caching in ASP.NET", + "url": "https://www.tutorialspoint.com/asp.net/asp.net_data_caching.htm", + "type": "article" + } + ] + }, + "8CRsr7UZszjc_fZ-4ZmIx": { + "title": "Memory Cache", + "description": "Memory caching (often simply referred to as caching) is a technique in which computer applications temporarily store data in a computer’s main memory (i.e., random access memory, or RAM) to enable fast retrievals of that data. The RAM that is used for the temporary storage is known as the cache.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cache in-memory in ASP.NET Core", + "url": "https://learn.microsoft.com/en-us/aspnet/core/performance/caching/memory?view=aspnetcore-7.0", + "type": "article" + }, + { + "title": "What is Memory Caching?", + "url": "https://hazelcast.com/glossary/memory-caching/", + "type": "article" + }, + { + "title": "Intro to In-Memory Caching in C#", + "url": "https://www.youtube.com/watch?v=2jj2wH60QuE", + "type": "video" + } + ] + }, + "FV4GsPjUyAc99DnIwkkCC": { + "title": "Entity Framework 2nd Level Cache", + "description": "Entity Framework Core(EF Core) is a cross-platform version of the popular Entity Framework data access technology that is lightweight, extendable, and open source. It can be used as an object-relational mapper (O/RM), which can Allow .NET developers to use .NET objects to interact with a database and Removes the requirement for most of the data-access code that is generally required.\n\nHowever, during peak loads, high-transaction .NET Core apps using EF Core have performance and scalability problems in the database tier. This is because, although you can scale the application layer by adding more application servers, you can't scale the database tier by adding more database servers.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Entity Framework 2nd Level Cache", + "url": "https://www.gridgain.com/docs/latest/developers-guide/net-specific/net-entity-framework-cache", + "type": "article" + }, + { + "title": "Caching In Entity Framework", + "url": "https://www.c-sharpcorner.com/article/caching-in-entity-framework-ef-core-using-ncache/", + "type": "article" + }, + { + "title": "What is Entity Framework?", + "url": "https://www.youtube.com/watch?v=Z7713GBhi4k", + "type": "video" + } + ] + }, + "SiG0FWWznjDg-2mIWlchy": { + "title": "Distributed Cache", + "description": "A distributed cache is a cache shared by multiple app servers, typically maintained as an external service to the app servers that access it. A distributed cache can improve the performance and scalability of an [ASP.NET](http://ASP.NET) Core app, especially when the app is hosted by a cloud service or a server farm.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Distributed caching in ASP.NET Core", + "url": "https://learn.microsoft.com/en-us/aspnet/core/performance/caching/distributed?view=aspnetcore-7.0", + "type": "article" + }, + { + "title": "What is a Distributed Cached?", + "url": "https://hazelcast.com/glossary/distributed-cache/", + "type": "article" + }, + { + "title": "Distributed Caching In ASP.NET Core With Redis", + "url": "https://www.youtube.com/watch?v=Tt5zIKVMMbs", + "type": "video" + } + ] + }, + "u2pc3ZkL0EumAsbM12D5y": { + "title": "Memcached", + "description": "Memcached is an open-source, high-performance, distributed memory object caching system which helps in reducing database load. It maintains data as an in-memory key-value store for small chunks of arbitrary data (strings, objects) which can be result of API calls, database reads and so on.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Using Memcached as Distributed Cache in .NET Core", + "url": "https://dotnetcorecentral.com/blog/using-memcached-as-distributed-cache-in-net-core/", + "type": "article" + }, + { + "title": "Intro to Memcached", + "url": "https://memcached.org/", + "type": "article" + }, + { + "title": "Memcached as Distributed Cache in .Net Core Application", + "url": "https://www.youtube.com/watch?v=yQ8Kwx9M_Hg", + "type": "video" + } + ] + }, + "Ts0gJ4DdwFp48LGr4YSvM": { + "title": "Redis", + "description": "Redis is an open source (BSD licensed) which is an in-memory data structure store used as a database, cache, message broker, and streaming engine. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions, and various levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.\n\nYou can use Redis in many programming languages. It is such a popular and widely used cache that Microsoft Azure also provides its cloud-based version with the name Azure Cache for Redis.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Learn how to build with Redis Stack and .NET", + "url": "https://redis.io/docs/stack/get-started/tutorials/stack-dotnet/", + "type": "article" + }, + { + "title": "Redis Cache In ASP.NET 6.0 Web API", + "url": "https://www.c-sharpcorner.com/article/easily-use-redis-cache-in-asp-net-6-0-web-api/", + "type": "article" + }, + { + "title": "Explore top posts about Redis", + "url": "https://app.daily.dev/tags/redis?ref=roadmapsh", + "type": "article" + }, + { + "title": "ASP.Net Core Distributed Caching - Redis Caching", + "url": "https://www.youtube.com/watch?v=4Br-QnBo6Yw", + "type": "video" + } + ] + }, + "Ujzn_dILCA7xoupnz398l": { + "title": "Databases", + "description": "In an [ASP.NET](http://ASP.NET) application, there are several types of databases that can be used to store and retrieve data. Some of the most commonly used databases include:\n\n* Relational databases\n* NoSQL databases\n* In-memory databases\n* Embedded databases\n* Cloud-based databases\n\nEach database type has its own set of features and use cases, and the choice of which database to use will depend on the specific requirements of the application.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "ASP.NET Database Tutorial", + "url": "https://www.guru99.com/insert-update-delete-asp-net.html", + "type": "article" + }, + { + "title": "Introduction to Working with a Database in ASP.NET", + "url": "https://learn.microsoft.com/en-us/aspnet/web-pages/overview/data/5-working-with-data", + "type": "article" + }, + { + "title": "ASP.NET Web Pages - Databases", + "url": "https://www.w3schools.com/asp/webpages_database.asp", + "type": "article" + }, + { + "title": "Explore top posts about Backend Development", + "url": "https://app.daily.dev/tags/backend?ref=roadmapsh", + "type": "article" + } + ] + }, + "6p5atMYw3b3bXkQuXZsDV": { + "title": "Search Engines", + "description": "A search engine in an [ASP.NET](http://ASP.NET) application is a tool or module that allows users to search for and retrieve specific information from the application's database or other data sources. Search engines can be used to perform full-text search, faceted search, and geospatial search, among other things.\n\nSearch engines can be integrated into an [ASP.NET](http://ASP.NET) application by using libraries or frameworks that provide a .NET client for interacting with the search engine. Some popular search engines that can be integrated with an [ASP.NET](http://ASP.NET) application include Elasticsearch, Apache Solr, Sphinx, and Microsoft Azure Search.\n\nTo learn more, visit the following resources:", + "links": [ + { + "title": "Search Engine Optimization with ASP.NET", + "url": "https://learn.microsoft.com/en-us/archive/msdn-magazine/2009/september/search-engine-optimization-with-asp-net-4-0-visual-studio-2010-and-iis7", + "type": "article" + }, + { + "title": "Creating an ASP.NET Search Engine", + "url": "https://www.developerfusion.com/article/4389/create-a-site-search-engine-in-aspnet/", + "type": "article" + }, + { + "title": "Simple Search Engine in ASP.NET", + "url": "https://www.youtube.com/watch?v=KTkubhS-u50", + "type": "video" + } + ] + }, + "mK9OAwjReZoQZr1WSLRKJ": { + "title": "Elastic Search", + "description": "Elasticsearch is a distributed, open-source search and analytics engine that can be used to index, search, and analyze large volumes of data quickly and in near real-time. It is built on top of the Apache Lucene library and can be used to perform full-text search, faceted search, and geospatial search, among other things.\n\nIn an [ASP.NET](http://ASP.NET) application, Elasticsearch can be integrated as a search engine to provide advanced search functionality to the application. There are several libraries available for integrating Elasticsearch with an [ASP.NET](http://ASP.NET) application, such as Nest and [Elasticsearch.Net](http://Elasticsearch.Net). These libraries provide a .NET client for Elasticsearch, which can be used to interact with the Elasticsearch engine from within an [ASP.NET](http://ASP.NET) application. To learn more, visit the following resources:", + "links": [ + { + "title": "Elasticsearch in ASP.NET Core", + "url": "https://code-maze.com/elasticsearch-aspnet-core/", + "type": "article" + }, + { + "title": "An Elasticsearch Tutorial for .NET Developers", + "url": "https://www.toptal.com/dot-net/elasticsearch-dot-net-developers", + "type": "article" + }, + { + "title": "How to integrate ElasticSearch in ASP.NET?", + "url": "https://blexin.com/en/blog-en/how-to-integrate-elasticsearch-in-asp-net-core/", + "type": "article" + }, + { + "title": "Explore top posts about ELK", + "url": "https://app.daily.dev/tags/elk?ref=roadmapsh", + "type": "article" + } + ] + }, + "2sY_p_8cOOBmZtDHO2Cmy": { + "title": "Solr", + "description": "Apache Solr is a search engine platform based on the Apache Lucene library. It is a standalone enterprise search server that provides a REST-like API for indexing, searching, and updating documents. Solr can be used to perform full-text search, faceted search, and geospatial search, among other things.\n\nSolr can be useful in [ASP.NET](http://ASP.NET) application to provide advanced search capabilities, such as full-text search, faceted search and geospatial search, which can be useful in e-commerce, content management systems, and logging and monitoring applications. It is known for its scalability, performance and its ability to handle large volumes of data with complex queries.\n\nFor more information, visit the following resources:", + "links": [ + { + "title": "Guide to Solr in ASP.NET", + "url": "https://www.codeproject.com/Tips/480091/Using-Solr-for-Search-with-NET-Csharp", + "type": "article" + }, + { + "title": "How to get Started with Solr.NET?", + "url": "https://stackoverflow.com/questions/5646615/how-to-get-started-with-solr-net", + "type": "article" + }, + { + "title": "Integrate Solr Instance With .NET Core", + "url": "https://stacksecrets.com/dot-net-core/integrate-solr-instance-with-net-core", + "type": "article" + } + ] + }, + "Ye9WHfwZa-Fc2YDaTCmU1": { + "title": "Sphinx", + "description": "Sphinx is an open-source full-text search engine that can be used to index, search and analyze large volumes of data quickly and in near real-time. It is designed to handle high-traffic websites and large data sets and can be used for full-text search, faceted search, and geospatial search.\n\nIn an [ASP.NET](http://ASP.NET) application, Sphinx can be integrated as a search engine to provide advanced search functionality to the application. There are several libraries available for integrating Sphinx with an [ASP.NET](http://ASP.NET) application, such as [SphinxQL.NET](http://SphinxQL.NET) and SphinxClient. These libraries provide a .NET client for Sphinx, which can be used to interact with the Sphinx engine from within an [ASP.NET](http://ASP.NET) application.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Overview of Sphinx in ASP.NET", + "url": "https://www.sphinxconnector.net/", + "type": "article" + }, + { + "title": "Intro to Sphinx", + "url": "http://sphinxsearch.com/forum/view.html?id=3609", + "type": "article" + }, + { + "title": "Documentation of Sphinx in ASP.NET", + "url": "https://www.ericholscher.com/blog/2016/jul/1/sphinx-and-rtd-for-writers/", + "type": "article" + } + ] + }, + "LrjmJs6_rXUkc2A7fEq24": { + "title": "Cloud", + "description": "Cloud in the context of [ASP.NET](http://ASP.NET) refers to the use of cloud computing services to host and run [ASP.NET](http://ASP.NET) web applications. Cloud computing is a model of delivering computing resources (such as servers, storage, and applications) over the internet on a pay-per-use basis.\n\nIn the case of [ASP.NET](http://ASP.NET), cloud providers such as Microsoft Azure, Amazon Web Services (AWS), and Google Cloud Platform (GCP) offer services specifically tailored to host and run [ASP.NET](http://ASP.NET) web applications. These services include virtual machines, web roles, and serverless computing, which can be used to deploy and run [ASP.NET](http://ASP.NET) web applications in the cloud.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Building a .NET Cloud Application", + "url": "https://www.c-sharpcorner.com/article/building-the-net-cloud-application/", + "type": "article" + }, + { + "title": "How to make a .NET Cloud Application?", + "url": "https://dotnet.microsoft.com/en-us/apps/cloud", + "type": "article" + }, + { + "title": "Getting started with Cloud", + "url": "https://aws.amazon.com/free/", + "type": "article" + }, + { + "title": "Explore top posts about Cloud", + "url": "https://app.daily.dev/tags/cloud?ref=roadmapsh", + "type": "article" + } + ] + }, + "KrkV1w9b_Nwm6pe9diDRS": { + "title": "Cosmos DB", + "description": "For more information, visit the following resources:", + "links": [ + { + "title": "What is Azure Cosmos DB?", + "url": "https://intellipaat.com/blog/what-is-azure-cosmos-db/", + "type": "article" + }, + { + "title": "Cosmos DB, Its Features, Benefits, Pricing etc", + "url": "https://stackify.com/what-is-azure-cosmos-db/", + "type": "article" + }, + { + "title": "Getting started with Cosmos DB", + "url": "https://acloudguru.com/blog/engineering/azure-cosmos-db-lets-you-focus-on-the-good-stuff", + "type": "article" + } + ] + }, + "1Om9aQDZmnj_DN10ogwDL": { + "title": "Dynamo DB", + "description": "Amazon DynamoDB is a fully-managed, NoSQL database service provided by Amazon Web Services (AWS) that can be used to store and retrieve large amounts of data. It is a highly-scalable, fast, and flexible NoSQL database service that supports both document and key-value data models.\n\nDynamoDB is designed to handle extremely high levels of read and write throughput, and it automatically scales to accommodate the traffic of an application. It also provides built-in support for data replication, allowing data to be automatically spread across multiple availability zones for increased durability and availability.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Getting started with DynamoDB", + "url": "https://aws.amazon.com/dynamodb/", + "type": "article" + }, + { + "title": "Introduction to DynamoDB", + "url": "https://cloudacademy.com/lab/introduction-dynamodb/", + "type": "article" + }, + { + "title": "Explore top posts about AWS DynamoDB", + "url": "https://app.daily.dev/tags/aws-dynamodb?ref=roadmapsh", + "type": "article" + } + ] + }, + "FnRxRY3uDZdTve1w-nBfc": { + "title": "Relational", + "description": "A relational database is a type of database that stores data in a structured format, using tables and relationships between them. It is based on the relational model, which organizes data into one or more tables, with each table consisting of a set of rows and columns.\n\nThe main feature of a relational database is the ability to establish relationships between tables, using a feature called a foreign key. A foreign key is a column or set of columns in one table that is used to link to the primary key of another table. This allows data to be spread across multiple tables, but still be connected and easily accessed through these relationships.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Introduction to Working with Database in ASP.NET", + "url": "https://learn.microsoft.com/en-us/aspnet/web-pages/overview/data/5-working-with-data", + "type": "article" + }, + { + "title": "Implement a Relational Database with ASP.NET", + "url": "https://openclassrooms.com/en/courses/5671811-implement-a-relational-database-with-asp-net-core", + "type": "article" + } + ] + }, + "HQHSzsqBGSVYNLQ9o5EI-": { + "title": "SQL Server", + "description": "MS SQL (or Microsoft SQL Server) is the Microsoft developed relational database management system (RDBMS). MS SQL uses the T-SQL (Transact-SQL) query language to interact with the relational databases. There are many different versions and editions available of MS SQL\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "MS SQL website", + "url": "https://www.microsoft.com/en-ca/sql-server/", + "type": "article" + }, + { + "title": "Tutorials for SQL Server", + "url": "https://docs.microsoft.com/en-us/sql/sql-server/tutorials-for-sql-server-2016?view=sql-server-ver15", + "type": "article" + }, + { + "title": "Getting started with SQL", + "url": "https://www.w3schools.com/sql/default.asp", + "type": "article" + }, + { + "title": "Explore top posts about SQL", + "url": "https://app.daily.dev/tags/sql?ref=roadmapsh", + "type": "article" + }, + { + "title": "SQL Server tutorial for beginners", + "url": "https://www.youtube.com/watch?v=-EPMOaV7h_Q", + "type": "video" + } + ] + }, + "An9TLvo-I6NtC8wFU3bh4": { + "title": "PostgreSQL", + "description": "PostgreSQL, often simply \"Postgres\", is an open-source relational database management system (RDBMS) emphasizing extensibility and SQL compliance. It was originally developed at the University of California, Berkeley in the 1980s and is now maintained by the PostgreSQL Global Development Group.\n\nPostgres is known for its robustness and reliability, as well as its support for advanced features such as concurrency control, full-text search, and geospatial data. It is also highly extensible, allowing developers to create custom functions and operators in a variety of programming languages, including C, Python, and JavaScript.\n\nFor more information, visit the following resources:", + "links": [ + { + "title": "Postgresql - Open Source Relational Database", + "url": "https://www.postgresql.org/", + "type": "article" + }, + { + "title": "What is Postgresql?", + "url": "https://postgresqltutorial.com/postgresql-getting-started/what-is-postgresql/", + "type": "article" + }, + { + "title": "Introduction, Advantages & Disadvantages of PostgreSQL", + "url": "https://www.guru99.com/introduction-postgresql.html", + "type": "article" + }, + { + "title": "Explore top posts about PostgreSQL", + "url": "https://app.daily.dev/tags/postgresql?ref=roadmapsh", + "type": "article" + } + ] + }, + "Gs8XcsTo11MeCsiSGpjkU": { + "title": "MariaDB", + "description": "MariaDB is an open-source relational database management system (RDBMS) that is a fork of the MySQL database. It is fully compatible with MySQL, but it also includes additional features and improvements. MariaDB is developed and maintained by the MariaDB Corporation and the MariaDB community, and it is widely used as a replacement for MySQL in many web and enterprise applications.\n\nIn an [ASP.NET](http://ASP.NET) application, MariaDB can be used as the underlying database for storing and retrieving data. There are several libraries available for integrating MariaDB with an [ASP.NET](http://ASP.NET) application, such as MariaDB.Data, MySql.Data, and Dapper. These libraries provide a .NET client for MariaDB, which can be used to interact with the MariaDB database from within an [ASP.NET](http://ASP.NET) application.\n\nTo learn more, visit the following resources:", + "links": [ + { + "title": "How to use MariaDB in ASP.NET?", + "url": "https://blog.georgekosmidis.net/using-mariadb-in-an-aspnet-core-api-with-entity-framework-core.html", + "type": "article" + }, + { + "title": "Working with MariaDB and .Net", + "url": "https://mariadb.com/kb/en/mariadb-and-net/", + "type": "article" + }, + { + "title": "Building an application with ASP.NET & MariaDB", + "url": "https://medium.com/@BMatt92656920/building-a-web-application-with-asp-net-core-mvc-entity-framework-core-mariadb-bootstrap-a2bf0927d20e", + "type": "article" + }, + { + "title": "Explore top posts about Infrastructure", + "url": "https://app.daily.dev/tags/infrastructure?ref=roadmapsh", + "type": "article" + } + ] + }, + "WsGwg4qdlu_vBsFEpmBvU": { + "title": "MySQL", + "description": "MySQL is an open-source relational database management system (RDBMS) that is widely used in web and enterprise applications. It is developed, distributed, and supported by Oracle Corporation. MySQL provides a rich set of features to handle high-performance, high-availability, and high-scalability requirements of modern web applications.\n\nIn an [ASP.NET](http://ASP.NET) application, MySQL can be used as the underlying database for storing and retrieving data. There are several libraries available for integrating MySQL with an [ASP.NET](http://ASP.NET) application, such as MySql.Data, Dapper and EF Core. These libraries provide a .NET client for MySQL, which can be used to interact with the MySQL database from within an [ASP.NET](http://ASP.NET) application.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Getting started with ASP.NET Core and MySQL", + "url": "https://dev.mysql.com/blog-archive/getting-started-with-asp-net-core-and-mysql-connectornet/", + "type": "article" + }, + { + "title": "MySql database connectivity with ASP.Net", + "url": "https://www.c-sharpcorner.com/UploadFile/brij_mcn/mysql-database-connectivity-with-Asp-Net/", + "type": "article" + }, + { + "title": "Explore top posts about MySQL", + "url": "https://app.daily.dev/tags/mysql?ref=roadmapsh", + "type": "article" + }, + { + "title": "How To Connect MySQL With ASP.NET", + "url": "https://www.youtube.com/watch?v=g5rVd1JGbIg", + "type": "video" + } + ] + }, + "WUis4K9vduriYdVkKvM9r": { + "title": "NoSQL", + "description": "NoSQL (Not Only SQL) is a type of database that does not use the traditional table-based relational model. It is designed to handle large amounts of unstructured or semi-structured data, and it is often used in big data and real-time web applications. NoSQL databases are highly scalable and can handle high-performance needs and large data sets.\n\nThere are several types of NoSQL databases, such as document databases, key-value databases, graph databases, and column-family databases, each with their own unique features and use cases. Some examples of NoSQL databases include MongoDB, Cassandra, RavenDB, CouchDB, and Redis.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "NoSQL in .NET Applications", + "url": "https://www.slideshare.net/shijucv/nosql-database-in-net-apps", + "type": "article" + }, + { + "title": "Open Source NoSQL Database for .NET", + "url": "https://www.alachisoft.com/nosdb/", + "type": "article" + }, + { + "title": "Use NoSQL databases in ASP.NET", + "url": "https://learn.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/nosql-database-persistence-infrastructure", + "type": "article" + }, + { + "title": "Explore top posts about NoSQL", + "url": "https://app.daily.dev/tags/nosql?ref=roadmapsh", + "type": "article" + } + ] + }, + "-wYRa8qSuKVKo_yOTKV67": { + "title": "MongoDB", + "description": "MongoDB is a cross-platform, open-source, NoSQL document-oriented database that can be used to store and retrieve large amounts of data. It uses a flexible, JSON-like data structure called BSON (binary JSON) and it is designed to handle large amounts of unstructured data.\n\nIn an [ASP.NET](http://ASP.NET) application, MongoDB can be used as a data store to persist and retrieve application data. There are several libraries available for integrating MongoDB with an [ASP.NET](http://ASP.NET) application, such as MongoDB.Driver and C# MongoDB Driver. These libraries provide a .NET client for MongoDB, which can be used to interact with the MongoDB server from within an [ASP.NET](http://ASP.NET) application.\n\nTo learn more, visit the following resources:", + "links": [ + { + "title": "Use MongoDB in Your C# ASP.NET Apps", + "url": "https://developer.okta.com/blog/2020/01/02/mongodb-csharp-aspnet-datastore", + "type": "article" + }, + { + "title": "MongoDB With ASP.NET Core Web API", + "url": "https://www.c-sharpcorner.com/article/using-mongodb-with-asp-net-core-web-api/", + "type": "article" + }, + { + "title": "Explore top posts about MongoDB", + "url": "https://app.daily.dev/tags/mongodb?ref=roadmapsh", + "type": "article" + } + ] + }, + "U_-Gt5csu_hihl7ybFY-B": { + "title": "Cassandra", + "description": "Apache Cassandra is a free and open-source, NoSQL, distributed, wide-column store, and high-performance database management system designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. It is designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure.\n\nCassandra is a column-family store and it stores data in a structured format, using tables and columns. It is based on a data model that is similar to that of Google's Bigtable, and it provides a query language that is similar to SQL.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Introduction to Cassandra", + "url": "https://www.tutorialspoint.com/cassandra/cassandra_introduction.htm", + "type": "article" + }, + { + "title": "Overview of Cassandra in ASP.NET", + "url": "https://www.spiceworks.com/tech/big-data/articles/what-is-cassandra/", + "type": "article" + }, + { + "title": "Explore top posts about Apache Cassandra", + "url": "https://app.daily.dev/tags/apache-cassandra?ref=roadmapsh", + "type": "article" + } + ] + }, + "3gcXaOnHL4v5OoStrTWNV": { + "title": "LiteDB", + "description": "LiteDB is a lightweight, open-source, NoSQL embedded document-oriented database engine for .NET and .NET Core. It uses a file-based storage system, meaning that the entire database is stored in a single file on disk. It uses a similar syntax to MongoDB, but it is designed to be simple and easy to use, and it does not require a separate server or installation.\n\nLiteDB supports data types like string, int, decimal, DateTime, and also supports binary data and serialized objects. It also supports LINQ, transactions, indexes and collections.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Getting started with LiteDB", + "url": "https://www.litedb.org/", + "type": "article" + }, + { + "title": "Overview of LiteDB in ASP.NET", + "url": "https://www.litedb.org/docs/", + "type": "article" + } + ] + }, + "vHcwt6ARi5YR3v-eDDjfl": { + "title": "CouchDB", + "description": "CouchDB is an open-source, NoSQL document database designed for the web. It uses a document-oriented data model, which means that it stores data in semi-structured JSON format, and it is designed to be simple and easy to use. CouchDB provides a built-in web interface, called Futon, which can be used to interact with the database, and it also provides an HTTP API that can be used to interact with the database from an [ASP.NET](http://ASP.NET) application.\n\nIn an [ASP.NET](http://ASP.NET) application, CouchDB can be used as a data store to persist and retrieve application data. There are several libraries available for integrating CouchDB with an [ASP.NET](http://ASP.NET) application, such as Couchbase, which provides a .NET client for CouchDB that can be used to interact with the CouchDB server from within an [ASP.NET](http://ASP.NET) application.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "CouchDB in ASP.NET Core Application", + "url": "https://www.c-sharpcorner.com/article/crud-operation-to-couchdb-via-rest-api-in-asp-net-core-application/", + "type": "article" + }, + { + "title": "Use CouchDB with .NET", + "url": "https://stackoverflow.com/questions/1050152/use-couchdb-with-net", + "type": "article" + } + ] + }, + "fQ3w8REYWzQfeJ0nPyq6W": { + "title": "Log Frameworks", + "description": "In [ASP.NET](http://ASP.NET), log frameworks are libraries that provide a way to log and analyze data in an application. Some popular log frameworks for [ASP.NET](http://ASP.NET) include:\n\n* Serilog\n* NLog\n* Log4Net\n* ELMAH\n* Microsoft.Extensions.Logging\n\nThese are some of the most popular log frameworks in [ASP.NET](http://ASP.NET), each of them has its own set of features and use cases, and the choice of which log framework to use will depend on the specific requirements of the application.\n\nVisit the following links to learn more:", + "links": [ + { + "title": "Implement logging in ASP.NET", + "url": "https://learn.microsoft.com/en-us/training/modules/aspnet-logging/", + "type": "article" + }, + { + "title": "ASP.NET Core: Logging with log4net", + "url": "https://www.linkedin.com/learning/asp-dot-net-core-logging-with-log4net", + "type": "article" + }, + { + "title": "Explore top posts about Logging", + "url": "https://app.daily.dev/tags/logging?ref=roadmapsh", + "type": "article" + } + ] + }, + "xL0s4-HfRxNy2ru0jiIWR": { + "title": "Serilog", + "description": "Serilog is a third-party logging library for [ASP.NET](http://ASP.NET) Core that allows developers to easily create structured and searchable log data. It is built on top of the `Microsoft.Extensions.Logging` framework, which is included in [ASP.NET](http://ASP.NET) Core. Serilog provides features such as automatic logging of request and response data, and the ability to write logs to a variety of destinations, including the console, files, and various logging services. It also supports for filtering and formatting log messages.\n\nFor more resources, visit the following links:", + "links": [ + { + "title": "Complete guide to Serilog in ASP.NET", + "url": "https://github.com/serilog/serilog-aspnetcore", + "type": "opensource" + }, + { + "title": "How to Work with Serilog in ASP.NET?", + "url": "https://www.codeguru.com/dotnet/serilog-c-sharp/", + "type": "article" + }, + { + "title": "Advanced Serilog features in ASP.NET", + "url": "https://www.infoworld.com/article/3624022/how-to-use-advanced-serilog-features-in-aspnet-core-mvc.html", + "type": "article" + } + ] + }, + "ykF2bB_68AhCOzeQ_QSW1": { + "title": "NLog", + "description": "NLog is an open-source logging library for .NET applications, including [ASP.NET](http://ASP.NET). It is designed to be easy to use, highly configurable, and extensible, and it provides a number of features that help developers to log and analyze data in their applications.\n\nNLog is a powerful, flexible, and easy-to-use logging library that can be used in [ASP.NET](http://ASP.NET) applications to provide detailed log data. It allows developers to easily configure their logging pipeline, and to write log data to a variety of destinations, making it easier to analyze and troubleshoot issues in the application.\n\nFor more resources, visit the following links:", + "links": [ + { + "title": "Logging with NLog in ASP.NET", + "url": "https://codewithmukesh.com/blog/logging-with-nlog-in-aspnet-core/", + "type": "article" + }, + { + "title": "Introduction To NLog With ASP.NET Core", + "url": "https://www.c-sharpcorner.com/article/introduction-to-nlog-with-asp-net-core2/", + "type": "article" + }, + { + "title": "Tutorial of Nlog with ASP.NET", + "url": "https://www.youtube.com/watch?v=PnlxRmHg0lU", + "type": "video" + } + ] + }, + "GLkDH0X0uy8_1DIdCzbUD": { + "title": "API Clients and Communication", + "description": "API clients in [ASP.NET](http://ASP.NET) are software libraries that allow applications to interact with external APIs. They provide a set of methods and classes that make it easy to send requests to an API and process the responses.\n\nAPI clients can be used to access a wide variety of services, such as web services, cloud services, and social media platforms. They can be used to perform tasks such as fetching data, posting updates, and deleting resources.\n\nAPI clients in [ASP.NET](http://ASP.NET) are typically built using the HttpClient class, which is part of the System.Net.Http namespace. This class provides a set of methods for sending HTTP requests and receiving HTTP responses.\n\nVisit the following links to learn more:", + "links": [ + { + "title": "How to Call a Web API From a .NET Client", + "url": "https://learn.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client", + "type": "article" + }, + { + "title": "Overview of Web API REST Service in ASP.NET", + "url": "https://www.c-sharpcorner.com/article/consuming-asp-net-web-api-rest-service-in-asp-net-mvc-using-http-client/", + "type": "article" + }, + { + "title": "Building an ASP.NET Web API With ASP.NET", + "url": "https://www.toptal.com/asp-dot-net/asp-net-web-api-tutorial", + "type": "article" + } + ] + }, + "KJCtxH3mYsZq3hfBZ6cJF": { + "title": "REST", + "description": "REST (Representational State Transfer) is an architectural style for building web services. It is based on the principles of the HTTP protocol, and it uses the conventions of HTTP to create a standard interface for interacting with web services.\n\nIn [ASP.NET](http://ASP.NET), REST can be used to create web services that expose data in a standardized way. RESTful web services in [ASP.NET](http://ASP.NET) are typically built using the Web API framework, which provides a set of libraries and tools for building RESTful web services.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "What is REST Services in ASP.NET?", + "url": "http://www.codedigest.com/quick-start/16/what-is-rest-services-how-to-create-rest-services-in-aspnet", + "type": "article" + }, + { + "title": "What are RESTful APIs?", + "url": "https://www.pragimtech.com/blog/blazor/what-are-restful-apis/", + "type": "article" + }, + { + "title": "Explore top posts about REST API", + "url": "https://app.daily.dev/tags/rest-api?ref=roadmapsh", + "type": "article" + }, + { + "title": "Tutorial of Rest and Restful API", + "url": "https://www.youtube.com/watch?v=4r1CIUs5s2I", + "type": "video" + } + ] + }, + "w5RnrhsP4p-AdSOLYVAY9": { + "title": "Gridlify", + "description": "", + "links": [] + }, + "YojZ5fpzw-5WgoqqkO6wl": { + "title": "Odata", + "description": "OData (Open Data Protocol) is a web protocol for querying and updating data. It is an open standard for creating and consuming RESTful web services. OData is built on top of the HTTP protocol, and it uses the conventions of REST to expose data through a standard interface.\n\nIn [ASP.NET](http://ASP.NET), OData can be used to create RESTful web services that expose data in a standardized way. OData provides a set of conventions for defining the structure of the data, and it also provides a set of conventions for querying and updating the data.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Create an OData v4 Endpoint Using ASP.NET", + "url": "https://learn.microsoft.com/en-us/aspnet/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/create-an-odata-v4-endpoint", + "type": "article" + }, + { + "title": "Example of OData Protocol With ASP.NET Core", + "url": "https://www.youtube.com/watch?v=L9HdnNCi0R0", + "type": "video" + } + ] + }, + "BdTQ5ZMNDNZvkAUoCfL5H": { + "title": "GraphQL", + "description": "GraphQL is a query language for your API that allows clients to define the structure of the data they need, and the server will return only the requested data. It is an alternative to RESTful web services, and it is gaining popularity because of its flexibility and efficiency.\n\nIn [ASP.NET](http://ASP.NET), GraphQL can be used to create web services that expose data in a more flexible and efficient way. There are several libraries available to implement GraphQL in an [ASP.NET](http://ASP.NET) application, such as [GraphQL.NET](http://GraphQL.NET), Hot Chocolate, and others. These libraries provide a set of classes and methods that make it easy to create a GraphQL schema, handle requests, and generate responses.\n\nTo learn more, visit the following resources:", + "links": [ + { + "title": "How to implement GraphQL in ASP.Net", + "url": "https://blog.christian-schou.dk/how-to-implement-graphql-in-asp-net-core/", + "type": "article" + }, + { + "title": "Intro to GraphQL", + "url": "https://graphql-dotnet.github.io/docs/getting-started/introduction/", + "type": "article" + }, + { + "title": "Developing API In .NET Core With GraphQL", + "url": "https://www.c-sharpcorner.com/article/building-api-in-net-core-with-graphql2/", + "type": "article" + }, + { + "title": "Explore top posts about GraphQL", + "url": "https://app.daily.dev/tags/graphql?ref=roadmapsh", + "type": "article" + } + ] + }, + "Efxu9gDodODMTKJbWcXzB": { + "title": "GraphQL .NET", + "description": "GraphQL is a query language for your API, it allows clients to define the structure of the data they need, and the server will return only the requested data. It is an alternative to RESTful web services, and it is gaining popularity because of its flexibility and efficiency.\n\nIn [ASP.NET](http://ASP.NET), GraphQL can be used to create web services that expose data in a more flexible and efficient way. [GraphQL.NET](http://GraphQL.NET) is a popular open-source library that can be used to create GraphQL services in [ASP.NET](http://ASP.NET). This library provides a set of classes and methods that make it easy to create a GraphQL schema, handle requests, and generate responses. Learn more from the following resources:", + "links": [ + { + "title": "Introduction to GraphQL .NET in ASP.NET", + "url": "https://graphql-dotnet.github.io/docs/getting-started/introduction/", + "type": "article" + }, + { + "title": "How to use GraphQL in .NET?", + "url": "https://softchris.github.io/pages/dotnet-graphql.html", + "type": "article" + }, + { + "title": "Building and consuming GraphQL API in ASP.NET", + "url": "https://www.red-gate.com/simple-talk/development/dotnet-development/building-and-consuming-graphql-api-in-asp-net-core-5/", + "type": "article" + }, + { + "title": "Explore top posts about GraphQL", + "url": "https://app.daily.dev/tags/graphql?ref=roadmapsh", + "type": "article" + } + ] + }, + "XMrQx9JH0eSQJpMzhvy0F": { + "title": "HotChocolate", + "description": "Hot Chocolate is a GraphQL server implementation for .NET and .NET Core. It is an open-source library that provides a simple and flexible way to build GraphQL APIs in [ASP.NET](http://ASP.NET).\n\nHot Chocolate provides a set of classes and methods that make it easy to create a GraphQL schema, handle requests, and generate responses. It also provides a number of features to help with things such as validation, authorization, caching, and more.\n\nTo learn more, visit the following resources:", + "links": [ + { + "title": "Getting started with HotChocolate", + "url": "https://learn.microsoft.com/en-us/shows/on-net/getting-started-with-hotchocolate", + "type": "article" + }, + { + "title": "ASP.NET Core and HotChocolate", + "url": "https://chillicream.com/docs/hotchocolate/v12/api-reference/aspnetcore", + "type": "article" + }, + { + "title": "Intro to HotChocolate", + "url": "https://chillicream.com/docs/hotchocolate", + "type": "article" + } + ] + }, + "x3SJlLc19DNJ-PyDOOj_G": { + "title": "gRPC", + "description": "gRPC is a high-performance, open-source framework for building remote procedure call (RPC) APIs. It uses the Protocol Buffers data serialization format and the HTTP/2 protocol to create highly efficient and scalable APIs. gRPC supports a variety of programming languages, including C# and [ASP.NET](http://ASP.NET).\n\nIn [ASP.NET](http://ASP.NET), gRPC can be used to create high-performance, low-latency APIs for a variety of use cases. gRPC allows for bi-directional streaming of data, which can be useful for real-time applications such as gaming, financial trading, and more.\n\nTo learn more, visit the following resources:", + "links": [ + { + "title": "Overview for gRPC on .NET", + "url": "https://learn.microsoft.com/en-us/aspnet/core/grpc/?view=aspnetcore-7.0", + "type": "article" + }, + { + "title": "Getting Started with ASP.NET Core and gRPC", + "url": "https://blog.jetbrains.com/dotnet/2021/07/19/getting-started-with-asp-net-core-and-grpc/", + "type": "article" + }, + { + "title": "Create a gRPC client & server in ASP.NET", + "url": "https://learn.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-7.0&tabs=visual-studio", + "type": "article" + }, + { + "title": "Explore top posts about gRPC", + "url": "https://app.daily.dev/tags/grpc?ref=roadmapsh", + "type": "article" + } + ] + }, + "9Vv3OxafB6BlHhi1ZkeVO": { + "title": "Real-Time Communication", + "description": "Real-time communication in [ASP.NET](http://ASP.NET) refers to the ability to send and receive data between a client and a server in real-time, typically with low latency. It allows the server to push updates to the client as they happen, instead of the client having to continuously poll the server for updates.\n\nThere are several technologies and libraries available for implementing real-time communication in [ASP.NET](http://ASP.NET), such as WebSockets, SignalR, gRPC, and more.\n\nTo learn more, visit the following resources:", + "links": [ + { + "title": "Overview of ASP.NET Core SignalR", + "url": "https://learn.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-7.0", + "type": "article" + }, + { + "title": "Real-time ASP.NET with SignalR", + "url": "https://dotnet.microsoft.com/en-us/apps/aspnet/signalr", + "type": "article" + } + ] + }, + "tBl8neu3tJd5GPwGfJbjZ": { + "title": "Web Sockets", + "description": "WebSockets is a protocol that allows for real-time, bidirectional communication between a client and a server. It is based on the same principle as HTTP, but it uses a different protocol to establish and maintain a connection between the client and the server. Once a connection is established, WebSockets enables the client and server to send messages to each other in real-time.\n\nIn [ASP.NET](http://ASP.NET), WebSockets can be used to create real-time, highly interactive web applications. The [ASP.NET](http://ASP.NET) Core framework provides built-in support for WebSockets through the Microsoft.AspNetCore.WebSockets package. This package provides a set of classes and methods that make it easy to create and manage WebSockets connections.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "WebSockets support in ASP.NET", + "url": "https://learn.microsoft.com/en-us/aspnet/core/fundamentals/websockets?view=aspnetcore-7.0", + "type": "article" + }, + { + "title": "Understanding WebSockets with ASP.NET", + "url": "https://sahansera.dev/understanding-websockets-with-aspnetcore-5/", + "type": "article" + }, + { + "title": "Writing a WebSocket server in ASP.NET", + "url": "https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_server", + "type": "article" + } + ] + }, + "8dvd4M0TKNyQR8dEolGNT": { + "title": "SignalR Core", + "description": "SignalR is a real-time communication library for .NET that allows for the creation of real-time web applications. SignalR Core is the latest version of SignalR, which has been rebuilt from the ground up to be cross-platform and lightweight. It allows for bidirectional communication between a client (such as a web page) and a server, enabling real-time updates, notifications, and other interactions. SignalR Core can be used in a variety of scenarios such as chat applications, gaming, and real-time dashboards. It supports multiple transports like WebSockets, Server-Sent Events and Long polling. It also supports for authentication and authorization.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Overview of ASP.NET Core SignalR", + "url": "https://learn.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-8.0", + "type": "article" + } + ] + }, + "9ECykIIvXlDblbFbRVcJS": { + "title": "Object Mapping", + "description": "Object mapping in [ASP.NET](http://ASP.NET) refers to the process of converting an object of one type to an object of another type. This can be useful in a number of scenarios, such as when working with domain models and data transfer objects (DTOs) in a layered architecture, or when mapping between different versions of an object or different formats such as JSON and XML.\n\nThere are several libraries available for object mapping in [ASP.NET](http://ASP.NET), such as AutoMapper, ExpressMapper, AgileMapper, AgileMapster and Mapster. These libraries provide a convenient and flexible way to map between objects, using a convention-based approach or a fluent API to configure more complex mappings. They also support for a wide range of mapping scenarios, including nested and circular object graphs, collections, and different types of inheritance.\n\nVisit the following links to learn more:", + "links": [ + { + "title": "Building a Fast Object-to-Object Mapper in .NET", + "url": "https://www.twilio.com/blog/building-blazing-fast-object-mapper-c-sharp-net-core", + "type": "article" + }, + { + "title": "Overview of Object Mapping in ASP.NET", + "url": "https://docs.abp.io/en/abp/latest/Object-To-Object-Mapping", + "type": "article" + }, + { + "title": "Comparison of Object Mapper Libraries", + "url": "https://www.simplilearn.com/tutorials/asp-dot-net-tutorial/automapper-in-c-sharp", + "type": "article" + } + ] + }, + "GPmlueMnuLCUW_t4jvGhc": { + "title": "AutoMapper", + "description": "AutoMapper is a library for .NET that allows you to easily map between objects of different types. It is particularly useful when working with domain models and data transfer objects (DTOs) in a layered architecture. It can also be used to map between different versions of an object, or to map between objects in different formats, such as JSON and XML.\n\nAutoMapper uses a convention-based approach to mapping, which means that it automatically maps properties with the same name and type from one object to another. It also provides a fluent API for configuring more complex mappings, such as ignoring certain properties, using custom logic to map properties, or mapping properties based on a value in another property.\n\nTo learn more, visit the following resources:", + "links": [ + { + "title": "What is Automapper in ASP.NET?", + "url": "https://www.simplilearn.com/tutorials/asp-dot-net-tutorial/automapper-in-c-sharp", + "type": "article" + }, + { + "title": "Getting Started with AutoMapper in ASP.NET", + "url": "https://code-maze.com/automapper-net-core/", + "type": "article" + }, + { + "title": "Examples of AutoMapper in ASP.NET", + "url": "https://dotnettutorials.net/lesson/automapper-in-c-sharp/", + "type": "article" + } + ] + }, + "x0OopRTwIvoWgT8qi0CE9": { + "title": "Mapperly", + "description": "", + "links": [] + }, + "oMMBzRrHkUymxAR4oqr75": { + "title": "Manual Mapping", + "description": "", + "links": [] + }, + "s57tKy1rajlJbKFDVXLqs": { + "title": "Task Scheduling", + "description": "Task scheduling in [ASP.NET](http://ASP.NET) refers to the process of scheduling and executing background tasks in an application. This can include tasks such as sending emails, processing data, generating reports, or performing maintenance tasks.\n\nIn [ASP.NET](http://ASP.NET), task scheduling can be implemented using a variety of libraries and frameworks such as [Quartz.NET](http://Quartz.NET), Hangfire, Coravel and Microsoft's built-in IHostedService interface. These libraries and frameworks provide a way to schedule tasks to run at specific times or intervals, and also provide APIs for managing and monitoring the progress of scheduled tasks.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "How schedule Tasks in ASP.NET?", + "url": "https://beansoftware.com/ASP.NET-Tutorials/Scheduled-Tasks.aspx", + "type": "article" + }, + { + "title": "Task Scheduling in ASP.NET", + "url": "https://www.youtube.com/watch?v=Vg4AOpb7OqA", + "type": "video" + } + ] + }, + "uP1nqbmFmZL_wA2DoqP8C": { + "title": "Native Background Service", + "description": "A Native Background Service in [ASP.NET](http://ASP.NET) is a type of service that can run in the background on a device, without the need for an active user session. These services are typically used for tasks that need to run continuously, such as sending notifications, polling for updates, or processing data.\n\nIn [ASP.NET](http://ASP.NET), a Native Background Service can be implemented using the IHostedService interface, which is part of the Microsoft.Extensions.Hosting namespace. This interface allows you to create a background service that can run continuously, even when the main application is not running.\n\nVisit the following links to learn more:", + "links": [ + { + "title": "Background tasks with hosted services in ASP.NET", + "url": "https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-7.0&tabs=visual-studio", + "type": "article" + }, + { + "title": "BackgroundService in ASP.NET Core", + "url": "https://medium.com/@daniel.sagita/backgroundservice-for-a-long-running-work-3debe8f8d25b", + "type": "article" + }, + { + "title": "Tutorial on Background Tasks in ASP.NET", + "url": "https://youtube.com/watch?v=rugxQIH_p3A", + "type": "video" + } + ] + }, + "QiQsx1udyKcPJ-lZjRQVy": { + "title": "Hangfire", + "description": "Hangfire is an open-source, lightweight library for .NET that allows you to easily perform background processing in your [ASP.NET](http://ASP.NET) application. It provides a simple and elegant way to run background jobs, schedule future tasks, and monitor the progress of your background jobs.\n\nHangfire uses a storage backend, such as SQL Server or Redis, to persist the state of your background jobs. This allows you to easily scale your background processing and to monitor and manage your background jobs, even if your application restarts or crashes.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Hangfire with ASP.NET Core", + "url": "https://code-maze.com/hangfire-with-asp-net-core/", + "type": "article" + }, + { + "title": "Intro to Hangfire", + "url": "https://www.partech.nl/nl/publicaties/2021/05/a-beginners-guide-to-hangfire", + "type": "article" + }, + { + "title": "How to use Hangfire with ASP.NET", + "url": "https://blog.christian-schou.dk/how-to-use-hangfire-with-asp-net-core-5-0-api/", + "type": "article" + } + ] + }, + "zOWlPXIl4XPs_0pA8-yi5": { + "title": "Quartz", + "description": "Quartz is an open-source, job scheduling library for .NET that can be used in [ASP.NET](http://ASP.NET) applications. It is based on the popular Quartz scheduler for Java, and provides a similar feature set for scheduling and executing background jobs in .NET applications.\n\nWith Quartz, you can schedule jobs to run at specific times or intervals, and you can also set up triggers to start a job based on certain events. Quartz also provides a rich set of options for configuring and managing your jobs, such as pausing, resuming, and canceling jobs, as well as job chaining and priorities.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Intro to Quartz in ASP.NET", + "url": "https://aspnetboilerplate.com/Pages/Documents/Quartz-Integration", + "type": "article" + }, + { + "title": "How to work with Quartz.Net in ASP.NET", + "url": "https://www.infoworld.com/article/3078781/how-to-work-with-quartz-net-in-c.html", + "type": "article" + } + ] + }, + "p3bZnKIyRgLmB764Kkhju": { + "title": "Coravel", + "description": "Coravel is an open-source, lightweight library for .NET that allows you to easily perform background processing and scheduling in your [ASP.NET](http://ASP.NET) Core application. It provides a simple and elegant way to schedule tasks, run background jobs, and manage queues in your application.\n\nCoravel is inspired by Laravel's task scheduler and it's built on top of the .NET Core built-in Dependency Injection. It uses a fluent API to schedule tasks, allowing you to easily specify the frequency, start time, and end time of the task. It also provides a simple way to queue and process background jobs, allowing you to easily process large amounts of data or perform long-running tasks.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Documentation of Coravel", + "url": "https://docs.coravel.net/", + "type": "article" + }, + { + "title": "ASP.NET Task Scheduling with Coravel", + "url": "https://www.youtube.com/watch?v=vu0fxlWl0wo", + "type": "video" + }, + { + "title": "How to Run a .Net Console App with Coravel", + "url": "https://www.youtube.com/watch?v=KQpw_OYkKq8", + "type": "video" + } + ] + }, + "XofWWhlU_vWCG5oXVMZze": { + "title": "Testing", + "description": "Testing in [ASP.NET](http://ASP.NET) is the process of evaluating the performance, functionality, and overall correctness of an application developed using the [ASP.NET](http://ASP.NET) framework. There are several types of testing that can be performed on an [ASP.NET](http://ASP.NET) application, including unit testing, integration testing, acceptance testing and E2E testing. Each type of testing has a different focus and is used at a different stage of the development process. Common testing frameworks for [ASP.NET](http://ASP.NET) include MSTest, XUnit, NUnit, Selenium, Playwright, Puppeteer, Cypress, Specflow, Cucumber, and LightBDD.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "A Complete Tutorial on ASP.NET Testing", + "url": "https://www.lambdatest.com/blog/aspnet-testing/", + "type": "article" + }, + { + "title": "Unit test controller logic in ASP.NET", + "url": "https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/testing?view=aspnetcore-7.0", + "type": "article" + }, + { + "title": "Integration tests in ASP.NET Core", + "url": "https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-7.0", + "type": "article" + }, + { + "title": "Explore top posts about Testing", + "url": "https://app.daily.dev/tags/testing?ref=roadmapsh", + "type": "article" + } + ] + }, + "AtyL0ij8FeJCBmqG2YvTO": { + "title": "Playwright", + "description": "Playwright is an open-source library for automating web browsers built by Microsoft, similar to Selenium, it's commonly used for testing web applications. It's built on top of the .NET Core runtime and it provides bindings for C#, it allows developers to write tests for web applications in C# or other .NET languages. Playwright is designed to be fast and reliable and allows developers to run tests in multiple browsers.\n\nTo learn more, visit the following:", + "links": [ + { + "title": "Playwright for .NET", + "url": "https://github.com/microsoft/playwright-dotnet", + "type": "opensource" + }, + { + "title": "How to test Apps with Playwright and .NETs", + "url": "https://www.twilio.com/blog/test-web-apps-with-playwright-and-csharp-dotnet", + "type": "article" + }, + { + "title": "End-to-End Tests With ASP.NET and Playwright", + "url": "https://khalidabuhakmeh.com/end-to-end-test-with-aspnet-core-xunit-and-playwright", + "type": "article" + } + ] + }, + "UCpoLiQJ4LeniI9x3uGcY": { + "title": "Puppeteer", + "description": "Puppeteer is an open-source library for automating web browsers, similar to Selenium and Playwright. It's built on top of the Chrome DevTools protocol and it provides a set of APIs that allows developers to interact with web browsers and simulate user interactions, such as clicking buttons, filling out forms, and navigating between pages. It's commonly used for testing web applications, web scraping, and generating screenshots and PDFs of web pages. Puppeteer for .NET is built on top of the .NET Core runtime and it provides bindings for C# and allows developers to write tests for web applications in C# or other .NET languages.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Why use Puppeteer?", + "url": "https://www.kiltandcode.com/puppeteer-sharp-crawl-the-web-using-csharp-and-headless-chrome/", + "type": "article" + }, + { + "title": "Documentations of Puppeteer", + "url": "https://www.puppeteersharp.com/", + "type": "article" + }, + { + "title": "Explore top posts about Crawling", + "url": "https://app.daily.dev/tags/crawling?ref=roadmapsh", + "type": "article" + } + ] + }, + "f2UP2jDnDr7XEFIdAtBhH": { + "title": "Cypress", + "description": "Cypress is an open-source end-to-end testing framework for web applications, it's built on top of JavaScript and provides a set of APIs that allows developers to automate browser interactions. It's commonly used for testing web applications, as it can be used to automate browser-based tests and assert that the application behaves as expected. Cypress for .NET is not built on top of the .NET Core runtime and it does not provide bindings for C# or any other .NET languages, it's built on top of JavaScript and can be run in the browser.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Cypress - End To End Testing Tool", + "url": "https://www.c-sharpcorner.com/article/getting-started-with-cypress-io/", + "type": "article" + }, + { + "title": "Overview of Cypress", + "url": "https://www.cypress.io/", + "type": "article" + }, + { + "title": "Explore top posts about Cypress", + "url": "https://app.daily.dev/tags/cypress?ref=roadmapsh", + "type": "article" + } + ] + }, + "Xx5G09n4WWnnydCgxnL0A": { + "title": "WebApplicationFactory", + "description": "Web Application Factory (WAF) is a built-in feature of the [ASP.NET](http://ASP.NET) Core framework that allows developers to create and configure a web application in a programmatic way. It provides a simple and flexible way to set up a web application for testing, without the need for a web server or a browser. The WAF can be used to create a test server that can be used to run integration tests or end-to-end tests for an [ASP.NET](http://ASP.NET) Core web application, this allows developers to test the web application in a realistic environment, without the need for a physical web server or a browser. The WAF can be configured to use different services, middleware, and settings, depending on the needs of the application, this allows developers to easily set up a web application that is configured specifically for testing. The WAF also allows developers to test the web application against different configurations, such as different databases, different authentication providers, and different hosting environments.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Integration tests in ASP.NET Core", + "url": "https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-7.0", + "type": "article" + }, + { + "title": "How to use WebApplicationFactory in .NET", + "url": "https://stackoverflow.com/questions/69058176/how-to-use-webapplicationfactory-in-net6-without-speakable-entry-point", + "type": "article" + }, + { + "title": "Integration Testing ASP.NET Core WebAPI Applications", + "url": "https://www.youtube.com/watch?v=xs8gNQjCXw0", + "type": "video" + } + ] + }, + "8eW5BaOjJbnQ7uk4zMOiU": { + "title": "Test Containers", + "description": "", + "links": [] + }, + "Ohc0xzI6qX4hOFVNfRj1F": { + "title": ".NET Aspire", + "description": "", + "links": [] + }, + "TCswZHviRiu6SIOwUisu8": { + "title": "Respawn", + "description": "", + "links": [] + }, + "9WZmjiFowydYrkHQ2xeNm": { + "title": "Specflow", + "description": "SpecFlow is an open-source tool that allows developers to create automated acceptance tests in a natural language format, such as Gherkin. SpecFlow is commonly used in the context of [ASP.NET](http://ASP.NET) and other .NET technologies, to write acceptance tests for web applications. With SpecFlow, developers can write test scenarios using plain text in the Gherkin syntax, which uses a Given-When-Then format to describe the steps of a test. These scenarios can be written by non-technical stakeholders, such as business analysts or product owners, and can be easily understood by anyone who reads them. SpecFlow then converts these Gherkin scenarios into executable tests, which can be run using a variety of test runners, such as NUnit, xUnit, or MSTest. The tool also provides a set of bindings that allow developers to map the steps in the Gherkin scenarios to code in their application, making it easy to test specific functionality. Additionally, SpecFlow provides a set of advanced features, such as support for parameterized tests, background steps, and hooks, which allows developers to create more complex and powerful tests.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "SpecFlow’s documentation", + "url": "https://docs.specflow.org/_/downloads/specflow/en/latest/pdf/", + "type": "article" + }, + { + "title": "Getting Started with SpecFlow", + "url": "https://docs.specflow.org/projects/getting-started/en/latest/index.html", + "type": "article" + }, + { + "title": "What is SpecFlow?", + "url": "https://specflow.org/tools/specflow/", + "type": "article" + } + ] + }, + "aWRv5sU9dksgcpE9RGJb1": { + "title": "Light BDD", + "description": "LightBDD is an open-source, lightweight, and easy-to-use BDD (Behavior-Driven Development) framework for .NET, which allows developers to write automated acceptance tests in a simple and readable format. LightBDD is commonly used in the context of [ASP.NET](http://ASP.NET) and other .NET technologies, to write acceptance tests for web applications. LightBDD is designed to provide a simple, yet powerful, way to write BDD tests. It allows developers to write tests using a fluent API, which allows them to describe the behavior of their application in a natural language format. The framework also provides a set of extension methods, which can be used to add additional functionality, such as validating the output of a test, logging test results, or integrating with other testing tools. LightBDD also comes with a built-in test runner, which makes it easy to execute tests and view the results. The framework supports a variety of test runners, such as NUnit, xUnit, and MSTest, and can be integrated with other BDD frameworks, such as SpecFlow and Cucumber.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "The Lightweight Behavior Driven Development test framework", + "url": "https://github.com/LightBDD/LightBDD", + "type": "opensource" + }, + { + "title": "Explore top posts about Testing", + "url": "https://app.daily.dev/tags/testing?ref=roadmapsh", + "type": "article" + }, + { + "title": "Getting started with Behavior Driven Development (BDD) in .NET", + "url": "https://www.youtube.com/watch?v=EEeVU0z26u0", + "type": "video" + }, + { + "title": "Introduction To BDD using SpecFlow in ASP.NET", + "url": "https://www.youtube.com/watch?v=8KPrhBqZ-kk", + "type": "video" + } + ] + }, + "R8C6s53RYjkRVma0nCJpy": { + "title": "XUnit", + "description": "xUnit is a unit testing framework for the .NET framework, it's an open-source testing framework that provides a set of attributes and classes that can be used to create unit tests. In the context of [ASP.NET](http://ASP.NET), xUnit can be used to write unit tests for web applications built using the [ASP.NET](http://ASP.NET) framework. xUnit provides features such as support for data-driven tests, support for parallel test execution, and support for test discovery and execution, it also provides support for test isolation which allows developers to run tests in isolation from each other. xUnit is a popular alternative to other testing frameworks like MSTest and it does not rely on a test runner, instead relies on a console runner that can be run from the command line.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Unit Testing with xUnit in ASP.NET Core", + "url": "https://code-maze.com/aspnetcore-unit-testing-xunit/", + "type": "article" + }, + { + "title": "Unit testing in .NET Core using and xUnit", + "url": "https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-dotnet-test", + "type": "article" + }, + { + "title": "Getting Started With Unit Testing Using ASP.NET And xUnit", + "url": "https://www.c-sharpcorner.com/article/getting-started-with-unit-testing-using-c-sharp-and-xunit/", + "type": "article" + } + ] + }, + "qHYBlBCvCGUZGh6gyEI63": { + "title": "NUnit", + "description": "NUnit is a unit testing framework for the .NET framework, it's an open-source testing framework that provides a set of attributes and classes that can be used to create unit tests. In the context of [ASP.NET](http://ASP.NET), NUnit can be used to write unit tests for web applications built using the [ASP.NET](http://ASP.NET) framework. NUnit provides features such as support for data-driven tests, support for parallel test execution, and support for test discovery and execution, it also provides support for test isolation which allows developers to run tests in isolation from each other. NUnit is a popular alternative to other testing frameworks like MSTest and xUnit and it has a similar syntax as JUnit and it's considered as one of the oldest testing frameworks for .NET.\n\nVisit the following links for more resources:", + "links": [ + { + "title": "NUnit With C#", + "url": "https://www.c-sharpcorner.com/UploadFile/84c85b/nunit-with-C-Sharp/", + "type": "article" + }, + { + "title": "Unit testing C# with NUnit and .NET Core", + "url": "https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-nunit", + "type": "article" + } + ] + }, + "zhn-VLGPfV6FZT2OMl6zf": { + "title": "Shouldly", + "description": "Shouldly is a .NET library that provides a set of extension methods for writing expressive and readable assertions in unit tests, it's designed to be an alternative to traditional assertion libraries. In the context of [ASP.NET](http://ASP.NET), Shouldly can be used in conjunction with test frameworks such as MSTest, xUnit, and NUnit to write more expressive and readable unit tests for the application. It provides advanced features such as support for collection-specific assertions, support for asynchronous code, and support for custom types, also includes options to customize the error message.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "How to Use Shouldly to Improve Unit Tests in .NET?", + "url": "https://code-maze.com/improve-unit-tests-shouldly-dotnet/", + "type": "article" + }, + { + "title": "Improve Test Asserts with Shouldly", + "url": "https://visualstudiomagazine.com/articles/2015/08/01/improve-test-asserts-with-shouldly.aspx?admgarea=ALM", + "type": "article" + } + ] + }, + "iZCxinqlVefBk5-ICqt4v": { + "title": "NSubstitute", + "description": "NSubstitute is a popular open-source .NET library that allows developers to create mock objects for use in unit testing, it is a powerful and flexible substitute for traditional mocking frameworks such as Moq and Rhino Mocks. In the context of [ASP.NET](http://ASP.NET), NSubstitute can be used to create mock objects for testing web applications built using the [ASP.NET](http://ASP.NET) framework, it provides a simple and intuitive syntax for creating mock objects, setting up mock behavior, and making assertions on calls made to the mock objects. NSubstitute supports a wide range of testing frameworks and test runners, including MSTest, NUnit, and xUnit and it also supports various platforms including .NET Framework, .NET Core, Xamarin and Unity.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Overview of NSubstitute", + "url": "https://github.com/nsubstitute/NSubstitute", + "type": "opensource" + }, + { + "title": "Getting started NSubstitute", + "url": "https://nsubstitute.github.io/help/getting-started/", + "type": "article" + } + ] + }, + "eyOXWb1kL80Wqiwc2WHd_": { + "title": "Moq", + "description": "Moq is an open-source library for .NET that allows developers to create mock objects for use in unit testing, it is a popular mocking framework that provides a simple and intuitive syntax for creating mock objects and setting up mock behavior. In the context of [ASP.NET](http://ASP.NET), Moq can be used to create mock objects for testing web applications built using the [ASP.NET](http://ASP.NET) framework, it provides a simple and expressive syntax for creating mock objects and setting up mock behavior. Moq supports a wide range of testing frameworks, including MSTest, NUnit, and xUnit and it also supports various platforms including .NET Framework, .NET Core and Xamarin. Moq is lightweight and easy to use, making it a good choice for developers who are new to mocking and unit testing, it also provides a rich set of features, such as support for setting up mock behavior, making assertions on calls made to the mock objects, and more.\n\nVisit the following links to learn more:", + "links": [ + { + "title": "What is use of Moq?", + "url": "https://stackoverflow.com/questions/678878/what-is-use-of-moq", + "type": "article" + }, + { + "title": "Moq - Unit Test In .NET Core App", + "url": "https://www.c-sharpcorner.com/article/moq-unit-test-net-core-app-using-mock-object/", + "type": "article" + }, + { + "title": "Getting started with Mocking using Moq in .NET", + "url": "https://www.youtube.com/watch?v=9ZvDBSQa_so", + "type": "video" + } + ] + }, + "diRJ_F6kx42Ucs0fxidtZ": { + "title": "FakeItEasy", + "description": "FakeItEasy is an open-source library for .NET that allows developers to create fake objects for use in unit testing, it is a powerful and easy-to-use mocking framework that provides a simple and intuitive syntax for creating fake objects and setting up fake behavior. In the context of [ASP.NET](http://ASP.NET), FakeItEasy can be used to create fake objects for testing web applications built using the [ASP.NET](http://ASP.NET) framework, it provides a simple and expressive syntax for creating fake objects and setting up fake behavior. FakeItEasy supports a wide range of testing frameworks, including MSTest, NUnit, and xUnit. FakeItEasy is lightweight and easy to use, making it a good choice for developers who are new to mocking and unit testing, it also provides a rich set of features, such as support for setting up fake behavior, making assertions on calls made to the fake objects, and more. It also has a wide range of extension points for customizing the fakes to suit different needs.\n\nVisit the following links to learn more:", + "links": [ + { + "title": "Easy mocking in C# code with FakeItEasy library", + "url": "https://devislandblog.wordpress.com/2018/05/09/easy-mocking-in-c-code-with-fakeiteasy-library/", + "type": "article" + }, + { + "title": "FakeItEasy when testing ASP.NET Core controllers", + "url": "https://stackoverflow.com/questions/56170818/how-to-fake-an-interface-method-dynamically-with-fakeiteasy-when-testing-asp-net", + "type": "article" + } + ] + }, + "K49M_7gSpfJuZaE6WaHxQ": { + "title": "AutoFixture", + "description": "", + "links": [] + }, + "QERTjawqCCCkHfR44Ca0s": { + "title": "Bogus", + "description": "", + "links": [] + }, + "37c2eCvRdebztkbc5AjYp": { + "title": "Microservices", + "description": "Microservices are a software architectural style in which a large application is built as a set of small, independent services that communicate with each other through APIs. These services are typically built using different technologies and run in their own processes, and can be deployed, scaled, and updated independently.\n\nIn [ASP.NET](http://ASP.NET), microservices can be built using the .NET Core framework, which is a cross-platform, open-source version of the .NET framework that can run on Windows, Linux, and macOS. Each microservice can be built as a self-contained, small web application that handles a specific set of functionality, such as user management, product catalog, or order processing.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Intro to Microservices Using ASP.NET Core", + "url": "https://www.c-sharpcorner.com/article/microservice-using-asp-net-core/", + "type": "article" + }, + { + "title": "Advantages and Disadvantages of Microservices Architecture", + "url": "https://www.dotnettricks.com/learn/microservices/architecture-example-advantages", + "type": "article" + }, + { + "title": "Explore top posts about Microservices", + "url": "https://app.daily.dev/tags/microservices?ref=roadmapsh", + "type": "article" + } + ] + }, + "sNYYEBMHV_NO_NToP51VY": { + "title": "ActiveMQ", + "description": "ActiveMQ is an open-source message broker written in Java that implements the Java Message Service (JMS) API. It can be used to send and receive messages between different applications in a loosely coupled, asynchronous manner. ActiveMQ supports a variety of messaging protocols, including JMS, AMQP, STOMP, MQTT, and OpenWire.\n\nIn the context of an [ASP.NET](http://ASP.NET) application, ActiveMQ can be used to send and receive messages to and from other systems. For example, it can be used to send messages from a web application to a background service, or to send messages between different microservices.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "What Is ActiveMQ And How Can You Use It?", + "url": "https://www.c-sharpcorner.com/article/what-is-activemq-and-how-can-you-use-it/", + "type": "article" + }, + { + "title": "Messaging with .NET and ActiveMQ", + "url": "https://remark.wordpress.com/articles/messaging-with-net-and-activemq/", + "type": "article" + }, + { + "title": "Messaging with ActiveMQ and ASP.NET", + "url": "https://havret.io/activemq-artemis-net-core", + "type": "article" + } + ] + }, + "L8RkeMYm0WGNeLLcHKF1R": { + "title": "Kafka", + "description": "Apache Kafka is an open-source, distributed event streaming platform that is used for building real-time data pipelines and streaming applications. It is designed to handle high volumes of data and to support real-time data processing.\n\nKafka is based on a publish-subscribe model, where producers write data to topics, and consumers read data from those topics. Data is stored in topics in a log-based format, which allows for efficient storage and retrieval of data.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Working with Apache Kafka in ASP.NET", + "url": "https://www.codemag.com/Article/2201061/Working-with-Apache-Kafka-in-ASP.NET-6-Core", + "type": "article" + }, + { + "title": "Kafka and .NET", + "url": "https://docs.confluent.io/kafka-clients/dotnet/current/overview.html", + "type": "article" + }, + { + "title": "Explore top posts about Apache", + "url": "https://app.daily.dev/tags/apache?ref=roadmapsh", + "type": "article" + } + ] + }, + "KqvBn2_wvYhFdv0dBZMC9": { + "title": "RabbitMQ", + "description": "RabbitMQ is an open-source message broker software that implements the Advanced Message Queuing Protocol (AMQP). It is written in Erlang and can be used to send and receive messages between different applications in a loosely coupled, asynchronous manner. RabbitMQ supports a variety of messaging patterns, including point-to-point, publish-subscribe, and request-response.\n\nIn the context of an [ASP.NET](http://ASP.NET) application, RabbitMQ can be used to send and receive messages to and from other systems. For example, it can be used to send messages from a web application to a background service, or to send messages between different microservices.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "How to Use RabbitMQ in ASP NET?", + "url": "https://www.freecodespot.com/blog/use-rabbitmq-in-asp-net-core/", + "type": "article" + }, + { + "title": "Introduction of RabbitMQ", + "url": "https://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html", + "type": "article" + }, + { + "title": "ASP.NET and RabbitMQ", + "url": "https://referbruv.com/blog/integrating-rabbitmq-with-aspnet-core-quickstart-with-an-example/", + "type": "article" + } + ] + }, + "8d4f7_3VO03vy7YDWwPI9": { + "title": "NetMQ", + "description": "NetMQ is a lightweight, open-source messaging library for building distributed systems and real-time applications in .NET. It provides an API for sending and receiving messages using a variety of messaging patterns and protocols, including request-response, publish-subscribe, and push-pull.\n\nNetMQ is built on top of ZeroMQ, a high-performance, asynchronous messaging library that provides a minimalistic socket-based API for building distributed systems. NetMQ is designed to be easy to use and to abstract away the complexities of ZeroMQ, making it a good choice for developers who want to add messaging capabilities to their [ASP.NET](http://ASP.NET) applications without having to learn a complex API.\n\nVisit the following links to learn more:", + "links": [ + { + "title": "Documentation of NetMQ", + "url": "https://netmq.readthedocs.io/en/latest/introduction/", + "type": "article" + }, + { + "title": "NetMQ and creating a Dynamic Worker in .NET", + "url": "https://mikaelkoskinen.net/post/netmq-and-creating-a-dynamic-worker-per-task", + "type": "article" + } + ] + }, + "gBuaVZfqJ0-g21sKohQtx": { + "title": "Azuer Service Bus", + "description": "Azure Service Bus is a scalable and reliable messaging platform that can handle a high volume of messages, it's also easy to use, has a lot of features like subscription, Topics, Dead Letter, and easy to integrate with other Azure services, and it's a managed service which means Microsoft takes care of the infrastructure and scaling. However, it's worth noting that Azure Service Bus is a paid service and the cost will depend on the number of messages and the size of the data that you are sending and receiving.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Getting Started With Azure Service Bus and ASP.NET Core", + "url": "https://www.c-sharpcorner.com/article/get-started-with-azure-service-bus-queues-asp-net-core-part-1/", + "type": "article" + }, + { + "title": "How to Send & receive messages from Azure Service Bus queue (.NET)?", + "url": "https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues?tabs=passwordless", + "type": "article" + }, + { + "title": "What is Azure Service Bus?", + "url": "https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview", + "type": "article" + }, + { + "title": "Explore top posts about Azure", + "url": "https://app.daily.dev/tags/azure?ref=roadmapsh", + "type": "article" + } + ] + }, + "SQKIUa_UsJ4cls-Vs9yHU": { + "title": "Mass Transit", + "description": "MassTransit is an open-source, highly configurable service bus framework for building distributed systems using the .NET framework. It allows developers to easily create message-based, loosely-coupled applications by providing a simple and fluent API for defining message contracts, handling messages, and managing message routing.\n\nIt supports multiple messaging transports such as RabbitMQ, Azure Service Bus, Amazon SQS and others, automatic serialization and deserialization of messages, automatic retries and exception handling for failed message deliveries, and support for advanced messaging patterns like publish-subscribe, request-response, and event-driven architectures.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Complete guide to MassTransit", + "url": "https://github.com/MassTransit/MassTransit", + "type": "opensource" + }, + { + "title": "Using MassTransit with RabbitMQ in ASP.NET Core", + "url": "https://code-maze.com/masstransit-rabbitmq-aspnetcore/", + "type": "article" + } + ] + }, + "vf8W1FLhcb3awx4JBaY5r": { + "title": "NServiceBus", + "description": "NServiceBus (NSB) is a service bus framework for building distributed systems using the .NET framework. It provides a set of features for building message-based, loosely-coupled applications, including support for message routing, message handling, and message persistence.\n\nNSB supports multiple messaging transports, including MSMQ, RabbitMQ, and Azure Service Bus, and provides support for advanced messaging patterns such as publish-subscribe, request-response, and message-based sagas.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Using NServiceBus in an ASP.NET", + "url": "https://docs.particular.net/samples/web/send-from-aspnetcore-webapi/", + "type": "article" + }, + { + "title": "Learn NServiceBus from .NET Core", + "url": "https://www.codeproject.com/Articles/1224839/Learn-NServiceBus-from-NET-Core-WebAPI", + "type": "article" + } + ] + }, + "X6iSHoHnFFMaGb6YPQFhl": { + "title": "EasyNetQ", + "description": "EasyNetQ is a simple and easy-to-use .NET client for RabbitMQ, a popular open-source message broker. It provides a simple and fluent API for connecting to RabbitMQ, publishing and consuming messages, and managing message queues.\n\nEasyNetQ supports a wide range of messaging patterns, such as publish-subscribe, request-response, and message-based sagas, and makes it easy to work with RabbitMQ's advanced features, such as message routing, message persistence, and message acknowledgements.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Overview of EasyNetQ", + "url": "https://easynetq.com/", + "type": "article" + }, + { + "title": "RabbitMQ with EasyNetQ Tutorials", + "url": "https://www.youtube.com/watch?v=CqxV_Xn4PlI", + "type": "video" + } + ] + }, + "2k-rGuhYTTAR9XN3aDAnW": { + "title": "Ocelot", + "description": "Ocelot is an open-source API gateway for [ASP.NET](http://ASP.NET) Core. It is designed to work as a reverse proxy, routing incoming requests to the appropriate service and aggregating the responses to return to the client. Ocelot allows you to define routing rules, handle requests and responses, and perform other common API gateway tasks such as rate limiting, caching, and authentication.\n\nOne of the key features of Ocelot is its flexibility, it can route incoming requests to multiple services, aggregate the responses, and return them as a single response to the client. It also allows you to define dynamic routes, based on the request's content, perform request and response transformations, and handle errors.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Implement API Gateways with Ocelot", + "url": "https://learn.microsoft.com/en-us/dotnet/architecture/microservices/multi-container-microservice-net-applications/implement-api-gateways-with-ocelot", + "type": "article" + }, + { + "title": "Getting Started with Ocelot", + "url": "https://ocelot.readthedocs.io/en/latest/introduction/gettingstarted.html", + "type": "article" + }, + { + "title": "Building an API Gateway in ASP.NET using Ocelotss", + "url": "https://www.youtube.com/watch?v=hlUGZ6Hmv6s", + "type": "video" + } + ] + }, + "2axfolu26P8XwxMxgMaS3": { + "title": "YARP", + "description": "YARP is a library to help create reverse proxy servers that are high-performance, production-ready, and highly customizable. YARP is built on .NET using the infrastructure from [ASP.NET](http://ASP.NET) and .NET (.NET 6 and newer). The key differentiator for YARP is that it's been designed to be easily customized and tweaked via .NET code to match the specific needs of each deployment scenario. YARP is designed with customizability as a primary scenario rather than requiring you to break out to script or rebuild the library from source.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Getting Started with YARP", + "url": "https://microsoft.github.io/reverse-proxy/articles/getting-started.html", + "type": "article" + }, + { + "title": "YARP: The .NET Reverse proxy", + "url": "https://www.youtube.com/watch?v=1IqQkNcsqWE", + "type": "video" + } + ] + }, + "rmRESzLiZNWdBFXLrwQFJ": { + "title": "Docker", + "description": "Docker is a platform for developing, shipping, and running applications in containers. A container is a lightweight, standalone, and executable package of software that includes everything needed to run a piece of software, including the code, a runtime, system tools, libraries, and settings.\n\nDocker allows developers to package their applications and dependencies into a container, which can then be easily deployed and run on any host machine with Docker installed. This makes it easy to run the same software on different environments, such as development, staging, and production, without worrying about compatibility issues.s\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "ASP.NET and Docker", + "url": "https://www.tatvasoft.com/blog/asp-net-core-and-docker/", + "type": "article" + }, + { + "title": "Introduction to .NET and Docker", + "url": "https://learn.microsoft.com/en-us/dotnet/core/docker/introduction", + "type": "article" + }, + { + "title": "Explore top posts about Docker", + "url": "https://app.daily.dev/tags/docker?ref=roadmapsh", + "type": "article" + }, + { + "title": "What is Docker, Why use it?", + "url": "https://www.youtube.com/watch?v=vmnvOITMoIg", + "type": "video" + } + ] + }, + "02rtFStTeIm8prNskxaUN": { + "title": "Kubernetes", + "description": "Kubernetes is an [open source](https://github.com/kubernetes/kubernetes) container management platform, and the dominant product in this space. Using Kubernetes, teams can deploy images across multiple underlying hosts, defining their desired availability, deployment logic, and scaling logic in YAML. Kubernetes evolved from Borg, an internal Google platform used to provision and allocate compute resources (similar to the Autopilot and Aquaman systems of Microsoft Azure).\n\nThe popularity of Kubernetes has made it an increasingly important skill for the DevOps Engineer and has triggered the creation of Platform teams across the industry. These Platform engineering teams often exist with the sole purpose of making Kubernetes approachable and usable for their product development colleagues.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Kubernetes Website", + "url": "https://kubernetes.io/", + "type": "article" + }, + { + "title": "Kubernetes Documentation", + "url": "https://kubernetes.io/docs/home/", + "type": "article" + }, + { + "title": "Primer: How Kubernetes Came to Be, What It Is, and Why You Should Care", + "url": "https://thenewstack.io/primer-how-kubernetes-came-to-be-what-it-is-and-why-you-should-care/", + "type": "article" + }, + { + "title": "Kubernetes: An Overview", + "url": "https://thenewstack.io/kubernetes-an-overview/", + "type": "article" + }, + { + "title": "Explore top posts about Kubernetes", + "url": "https://app.daily.dev/tags/kubernetes?ref=roadmapsh", + "type": "article" + }, + { + "title": "Kubernetes Crash Course for Absolute Beginners", + "url": "https://www.youtube.com/watch?v=s_o8dwzRlu4", + "type": "video" + } + ] + }, + "HqhqqiA5X00Xl1RnZgrNJ": { + "title": ".NET Aspire", + "description": "", + "links": [] + }, + "XKsLqDDco5OXKURCcWAmv": { + "title": "Orleans", + "description": "Orleans is an open-source virtual actor model framework for building distributed, high-scale, and low-latency applications in .NET. It is designed to make it easy to build and operate large-scale, distributed systems, such as cloud services, IoT applications, and gaming servers.\n\nOne of the key features of Orleans is its use of the virtual actor model, which is a programming model that allows developers to write concurrent and parallel code in a way that is similar to writing single-threaded code. Orleans provides a set of abstractions for building stateful actors, which are similar to objects in object-oriented programming, that can be distributed across multiple machines. These actors can communicate with each other using message passing, and can be accessed remotely using a transparent proxy\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Microsoft Orleans", + "url": "https://learn.microsoft.com/en-us/dotnet/orleans/overview", + "type": "article" + }, + { + "title": "Introduction to Orleans", + "url": "https://dev.to/willvelida/introduction-to-microsoft-orleans-796", + "type": "article" + }, + { + "title": "Building real applications with Orleans", + "url": "https://www.youtube.com/watch?v=8duFuggnj8o", + "type": "video" + } + ] + }, + "s8evqe2MireS1UhxoXrd1": { + "title": "SteelToe", + "description": "Steeltoe is an open-source project that provides a set of libraries for building cloud-native applications on the .NET platform. The libraries are designed to work with the .NET Core runtime and provide a set of abstractions for common cloud-native patterns, such as service discovery, configuration management, and circuit breaking. The goal of Steeltoe is to make it easy for developers to take advantage of the cloud-native capabilities of the .NET platform and build resilient and scalable applications.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": ".NET Microservices with Steeltoe", + "url": "https://learn.microsoft.com/en-us/shows/on-net/net-microservices-with-steeltoe", + "type": "article" + }, + { + "title": "Steeltoe Documentation", + "url": "https://docs.steeltoe.io/api/v3/welcome/index.html", + "type": "article" + }, + { + "title": ".NET Microservices with Steeltoe", + "url": "https://www.youtube.com/watch?v=QLRi6iPapVg", + "type": "video" + } + ] + }, + "IHY9uL3dzYmf2D2wWgIh-": { + "title": "Dapr", + "description": "Dapr (Distributed Application Runtime) is an open-source, portable runtime that makes it easy to build microservices-based applications that run on the cloud and edge. It provides a set of building blocks for building microservices, including service discovery, state management, pub-sub messaging, and more. It is designed to be language-agnostic, so it can be used with any programming language, including .NET.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Get started with Dapr", + "url": "https://learn.microsoft.com/en-us/dotnet/architecture/dapr-for-net-developers/getting-started", + "type": "article" + }, + { + "title": "Building an event-driven .NET Core app with Dapr", + "url": "https://medium.com/polarsquad/building-an-event-driven-net-core-app-with-dapr-58cc83ab120b", + "type": "article" + } + ] + }, + "KIFmahcNiSo2NGoLtAyRR": { + "title": "CI / CD", + "description": "CI/CD (Continuous Integration/Continuous Deployment) is a software development practice that involves automating the process of building, testing, and deploying code changes. It is a popular practice among software development teams, as it helps to ensure that code changes are integrated, tested, and deployed quickly and reliably.\n\nIn the context of [ASP.NET](http://ASP.NET), CI/CD can be used to automate various tasks related to the development, testing, and deployment of [ASP.NET](http://ASP.NET) applications. For example, you can use CI/CD to automatically build, test, and deploy an [ASP.NET](http://ASP.NET) application to a hosting provider, such as Azure or AWS, every time you push code to your source control repository.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "How to reate a CI/CD pipeline for ASP.NET?", + "url": "https://www.azuredevopslabs.com/labs/vstsextend/azuredevopsprojectdotnet/", + "type": "article" + }, + { + "title": "Explore top posts about CI/CD", + "url": "https://app.daily.dev/tags/cicd?ref=roadmapsh", + "type": "article" + }, + { + "title": "Building a CI/CD Pipeline in Azure DevOps for ASP.NET Core", + "url": "https://youtube.com/watch?v=eOQL0nXQlLs", + "type": "video" + } + ] + }, + "0-PLMXGlRyRzTk-EjXMs2": { + "title": "GitHub Actions", + "description": "GitHub Actions is a powerful and flexible automation platform that enables developers to create custom workflows for their software development lifecycle (SDLC) directly in their GitHub repository. It allows developers to automate various tasks, such as building, testing, and deploying code, directly from their GitHub repository.\n\nIn [ASP.NET](http://ASP.NET), GitHub Actions can be used to automate various tasks related to the development, testing, and deployment of [ASP.NET](http://ASP.NET) applications. For example, you can use GitHub Actions to automatically build, test, and deploy an [ASP.NET](http://ASP.NET) application to a hosting provider, such as Azure or AWS, every time you push code to your GitHub repository.\n\nVisit the following links to learn more:", + "links": [ + { + "title": "Intro to GitHub Actions for .NET", + "url": "https://devblogs.microsoft.com/dotnet/dotnet-loves-github-actions/", + "type": "article" + }, + { + "title": "Tutorial: Create a GitHub Action with .NET", + "url": "https://learn.microsoft.com/en-us/dotnet/devops/create-dotnet-github-action", + "type": "article" + }, + { + "title": "Building and testing .NET", + "url": "https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net", + "type": "article" + }, + { + "title": "Explore top posts about GitHub", + "url": "https://app.daily.dev/tags/github?ref=roadmapsh", + "type": "article" + } + ] + }, + "_-GQNpsb7KZw76hNNOq3h": { + "title": "Azure Pipelines", + "description": "Azure Pipelines is a continuous integration and continuous delivery (CI/CD) platform that allows developers to automate the process of building, testing, and deploying code. It is a part of the Azure DevOps suite of tools and can be used to automate the software development process for various languages and platforms, including [ASP.NET](http://ASP.NET).\n\nIn [ASP.NET](http://ASP.NET), Azure Pipelines can be used to automate various tasks related to the development, testing, and deployment of [ASP.NET](http://ASP.NET) applications. For example, you can use Azure Pipelines to automatically build, test, and deploy an [ASP.NET](http://ASP.NET) application to a hosting provider, such as Azure or AWS, every time you push code to your source control repository.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Deploy ASP.NET Apps with Azure Pipelines", + "url": "https://learn.microsoft.com/en-us/training/modules/deploy-aspnet-apps-azure-app-service-pipelines/", + "type": "article" + }, + { + "title": "Build ASP.NET apps with .NET Framework", + "url": "https://learn.microsoft.com/en-us/azure/devops/pipelines/apps/aspnet/build-aspnet-4?view=azure-devops", + "type": "article" + }, + { + "title": "How to Build, test & deploy .NET Apps", + "url": "https://learn.microsoft.com/en-us/azure/devops/pipelines/ecosystems/dotnet-core?view=azure-devops&tabs=dotnetfive", + "type": "article" + }, + { + "title": "Explore top posts about Azure", + "url": "https://app.daily.dev/tags/azure?ref=roadmapsh", + "type": "article" + } + ] + }, + "8Y73Ae32eo6_ye7dw5QRQ": { + "title": "GitLab CI/CD", + "description": "", + "links": [] + }, + "KyGjXgG6JFo42qOV0wqfB": { + "title": "Circle CI", + "description": "CircleCI is a cloud-based continuous integration and continuous delivery (CI/CD) platform that allows developers to automate the process of building, testing, and deploying code. It is a popular platform that supports a wide range of languages and frameworks, including [ASP.NET](http://ASP.NET).\n\nIn [ASP.NET](http://ASP.NET), CircleCI can be used to automate various tasks related to the development, testing, and deployment of [ASP.NET](http://ASP.NET) applications. For example, you can use CircleCI to automatically build, test, and deploy an [ASP.NET](http://ASP.NET) application to a hosting provider, such as Azure or AWS, every time you push code to your source control repository.\n\nVisit the following links to learn more:", + "links": [ + { + "title": "How to Setup CircleCI for ASP.NET project", + "url": "https://discuss.circleci.com/t/setup-circleci-for-asp-net-project/33796s", + "type": "article" + }, + { + "title": "Building and testing an ASP.NET apps with CircleCI", + "url": "https://circleci.com/blog/building-and-testing-an-asp-net-core-application/", + "type": "article" + }, + { + "title": "Explore top posts about CI/CD", + "url": "https://app.daily.dev/tags/cicd?ref=roadmapsh", + "type": "article" + } + ] + }, + "C85aJvrzj6rP2Hmfj9uPB": { + "title": "Template Engines", + "description": "Template engines in [ASP.NET](http://ASP.NET) are libraries that allow developers to embed dynamic data in HTML templates. These engines are used to separate the logic of the application from the presentation of the data, making it easy to change the appearance of the application without having to change the underlying code.\n\nTo learn more, visit the followin link:", + "links": [ + { + "title": "Template Engine in ASP.NET", + "url": "https://ej2.syncfusion.com/aspnetmvc/documentation/common/template-engine", + "type": "article" + }, + { + "title": "How to to Create Custom Templates using the .Net Template Engine ", + "url": "https://www.infoq.com/articles/dotnet-core-template-engine/", + "type": "article" + } + ] + }, + "nUE2-egUMNFQoPVrVRFPl": { + "title": "Razor", + "description": "Razor is a markup syntax for embedding server-side code in web pages. It was introduced with [ASP.NET](http://ASP.NET) MVC 3 and later became a part of [ASP.NET](http://ASP.NET) Web Pages. It allows developers to write server-side code using C# or Visual Basic and embed it in HTML markup. Its syntax is designed to be compact and easy to read. It provides a rich set of features for building web applications, such as a component model for building reusable UI, a routing system for navigation, and support for dependency injection, it also allows you to use the same libraries, frameworks, and tools that you're already familiar with from building traditional [ASP.NET](http://ASP.NET) web applications.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Complete Guide to ASP.NET Razor", + "url": "https://w3schools.com/asp/razor_intro.asp", + "type": "article" + }, + { + "title": "Introduction to ASP.NET Web Programming Using Razor", + "url": "https://learn.microsoft.com/en-us/aspnet/web-pages/overview/getting-started/introducing-razor-syntax-c", + "type": "article" + }, + { + "title": "An Introduction To Razor", + "url": "https://khalidabuhakmeh.com/what-is-razor-aspnet", + "type": "article" + } + ] + }, + "dWB5OCvWVYkD30Op_dMwy": { + "title": "Scriban", + "description": "Scriban is an open-source, lightweight template engine for .NET that is based on the Lua programming language. It is designed to be simple and easy to use, while still providing a powerful set of features for creating and manipulating templates. It provides a simple and easy-to-use API for parsing and rendering templates, and supports a wide range of features such as variables, loops, conditionals, and functions. It also provides a wide range of built-in functions for working with strings, numbers, dates, and other types of data, and also supports advanced features such as scripting and metaprogramming.\n\nVisit the following links to learn more about Scriban:", + "links": [ + { + "title": "Guide to Scriban in ASP.NET", + "url": "https://github.com/scriban/scriban", + "type": "opensource" + }, + { + "title": "Introduction to Scriban", + "url": "https://www.markvanaalst.com/blog/sxa/sxa-9-3-introducing-scriban/", + "type": "article" + } + ] + }, + "ZaOhWWDgVxrn0hbesJ7xT": { + "title": "Fluid", + "description": "Fluid is a template engine for .NET that is based on the Fluid template language, it is similar to Liquid, but it's written in C#. It provides a simple and easy-to-use API for parsing and rendering templates, and supports a wide range of features such as variables, loops, conditionals, and functions. It also provides a wide range of built-in functions for working with strings, numbers, dates, and other types of data. It also supports advanced features such as scripting and metaprogramming. It is often used in web applications to separate the logic of the application from the presentation of the data, making it easy to change the appearance of the application without having to change the underlying code.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Overview of Fluid", + "url": "https://github.com/sebastienros/fluid", + "type": "opensource" + } + ] + }, + "1YL7aXluINOO15W3waaiD": { + "title": "Frameworks", + "description": "", + "links": [] + }, + "4iD_hDtgJ15IlJGxiO-E8": { + "title": "Blazor", + "description": "Blazor is a framework for building web applications using C# and .NET that runs in the browser via WebAssembly. It allows developers to write C# code that runs directly in the browser, eliminating the need for JavaScript.\n\nBlazor comes in two flavors:\n\n* Blazor WebAssembly, a client-side solution that allows you to run C# code directly in the browser using WebAssembly. The app is executed on the client-side and can work offline, it can also interact with JavaScript and access the browser's DOM.\n* Blazor Server, a server-side solution that allows you to run C# code on the server and update the UI in real-time. The app is executed on the server-side and requires an active connection to the server to function.\n\nTo learn more, visit the following resources:", + "links": [ + { + "title": "Guide to ASP.NET Core Blazor", + "url": "https://learn.microsoft.com/en-us/aspnet/core/blazor/?view=aspnetcore-7.0", + "type": "article" + }, + { + "title": "What Is Blazor And How It Works?", + "url": "https://www.c-sharpcorner.com/article/what-is-blazor-and-how-does-it-works/", + "type": "article" + }, + { + "title": "Explore top posts about Blazor", + "url": "https://app.daily.dev/tags/blazor?ref=roadmapsh", + "type": "article" + }, + { + "title": "Tutorial of ASP.NET Core Blazor", + "url": "https://www.youtube.com/watch?v=LyO4zj6NRuc", + "type": "video" + } + ] + }, + "olqSPUU3RoxhQ6exfMzeN": { + "title": ".NET MAUI", + "description": "", + "links": [] + }, + "Zb4Gugxf7d6MoeEcfngrV": { + "title": "Scalar", + "description": "", + "links": [] + }, + "cc0UNQwbDlySue-CvpChR": { + "title": "MediatR", + "description": "MediatR is an open-source library for .NET that is designed to simplify the process of handling messages and commands in a clean, decoupled manner. It's particularly useful in applications that use the Command-Query Responsibility Segregation (CQRS) pattern and event-driven architecture. It provides a simple and easy-to-use API for handling messages, and supports the concept of pipelines, which allow you to add additional behavior to message handling, such as logging, validation, and exception handling.\n\nFor more information, visit the following links:", + "links": [ + { + "title": "Use MediatR in ASP.NET or ASP.NET Core", + "url": "https://medium.com/dotnet-hub/use-mediatr-in-asp-net-or-asp-net-core-cqrs-and-mediator-in-dotnet-how-to-use-mediatr-cqrs-aspnetcore-5076e2f2880c", + "type": "article" + }, + { + "title": "How to implement CQRS using MediatR in an ASP.NET?", + "url": "https://christian-schou.dk/blog/how-to-implement-cqrs-with-mediatr-in-asp-net/", + "type": "article" + } + ] + }, + "sa0zXd8lpNs_SFQ2y-PY4": { + "title": "FluentValidation", + "description": "FluentValidation is an open-source library for .NET that provides a fluent, easy-to-use API for validating domain models. It allows developers to define validation rules using a fluent, chainable syntax. It separates validation rules into separate classes called validators, it supports async validation, custom validation rules, and cascading validation. It makes it easy to read and understand the validation logic, and it returns a ValidationResult object, which contains information about any validation errors that were found.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Documentations of FluentValidation", + "url": "https://docs.fluentvalidation.net/en/latest/", + "type": "article" + }, + { + "title": "FluentValidation in ASP.NET Core", + "url": "https://docs.fluentvalidation.net/en/latest/aspnet.html", + "type": "article" + }, + { + "title": "Overview of FluentValidation in ASP.NET Core", + "url": "https://code-maze.com/fluentvalidation-in-aspnet/", + "type": "article" + } + ] + }, + "gQhiEpvx__70N1WbEHGYJ": { + "title": "Polly", + "description": "Polly is an open-source library for .NET that provides a simple and flexible API for handling transient faults and other types of errors that occur during the execution of a service. It allows developers to define a set of policies, such as retry, circuit breaker, and timeout, that can be used to handle specific types of errors and improve the resiliency of the service. It provides a fluent API that makes it easy to define and configure policies, supports advanced features such as async and sync execution, fallback policies, and policy wrapping. Additionally, it allows to specify the exception type that is thrown and it would trigger the policy.\n\nTo learn more, visit the following resources:", + "links": [ + { + "title": "Using Polly for .NET Resilience", + "url": "https://www.telerik.com/blogs/using-polly-for-net-resilience-and-transient-fault-handling-with-net-core", + "type": "article" + }, + { + "title": "Build Resilient Microservices Using Polly In ASP.NET", + "url": "https://procodeguide.com/programming/polly-in-aspnet-core/", + "type": "article" + } + ] + }, + "ipb6proIZKG-_vCOMAiBu": { + "title": "Marten", + "description": "", + "links": [] + }, + "EsC1JwFOMOlQVelpmxISh": { + "title": "Nuke", + "description": "NUKE (Build Automation for .NET) is an open-source build automation tool for .NET projects. It is designed to be simple, flexible, and extensible, making it easy to automate the build, test, and deployment process of your .NET projects.\n\nNUKE allows you to define your build process using a simple, declarative syntax, making it easy to understand and maintain. It provides a set of built-in tasks for common build actions, such as compiling, testing, and publishing, as well as a powerful extensibility model that allows you to add custom tasks and scripts.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "How to Build Automation with NUKE", + "url": "https://learn.microsoft.com/en-us/shows/on-net/build-automation-with-nuke", + "type": "article" + }, + { + "title": "Automate your .NET project builds with NUKE", + "url": "https://laurentkempe.com/2022/02/02/automate-your-dotnet-project-builds-with-nuke-a-cross-platform-build-automation-solution/", + "type": "article" + } + ] + }, + "9LEVN-uVEwxJooEiB9ApK": { + "title": "Benchmark.NET", + "description": "BenchmarkDotNet is an open-source library for .NET that provides a simple and easy-to-use API for benchmarking the performance of code. It allows you to measure the performance of methods, classes, and entire assemblies, and provides a rich set of features for analyzing and comparing the results. It provides a wide range of performance metrics, such as CPU cycles, memory allocation, and garbage collection, and can generate detailed reports that include charts, tables, and source code highlighting. It has support for multithreading and a built-in support for .NET Core.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": "Benchmarking .NET Using BenchmarkDotNet", + "url": "https://www.codemag.com/Article/2209061/Benchmarking-.NET-6-Applications-Using-BenchmarkDotNet-A-Deep-Dive", + "type": "article" + }, + { + "title": "Benchmarking ASP.NET Applications with .NET Crank", + "url": "https://www.youtube.com/watch?v=2IgfrnG-128", + "type": "video" + }, + { + "title": "Intro to BenchmarkDotNet", + "url": "https://www.youtube.com/watch?v=mmza9x3QxYE", + "type": "video" + } + ] + }, + "T2FsSndxzSuKTFdjoyPi-": { + "title": "Distributed Lock", + "description": "", + "links": [] + }, + "236VJJjMvqHfSj-MHSDPV": { + "title": "MSTest", + "description": "MSTest is a unit testing framework for the .NET framework, it's one of the built-in test frameworks in Visual Studio and it's widely used for unit testing in the .NET ecosystem. In the context of [ASP.NET](http://ASP.NET), MSTest can be used to write unit tests for web applications built using the [ASP.NET](http://ASP.NET) framework. MSTest provides features such as data-driven testing, parallel test execution, and test discovery and execution, it also provides the ability to run tests on multiple frameworks.\n\nTo learn more, visit the following links:", + "links": [ + { + "title": ".NET Core testing with MSTest", + "url": "https://www.oreilly.com/library/view/c-and-net/9781788292481/aa08c601-f374-4e31-be8e-8eb69d63bd19.xhtml", + "type": "article" + }, + { + "title": "Unit testing with MSTest and .NET", + "url": "https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-mstest", + "type": "article" + }, + { + "title": "Complete Guide of MSTest for Unit Testing in ASP.NET", + "url": "https://sweetcode.io/a-complete-guide-of-mstest-for-unit-testing-in-asp-net/", + "type": "article" + } + ] + } +} \ No newline at end of file diff --git a/public/roadmap-content/backend.json b/public/roadmap-content/backend.json index 902808903..345e5c1ea 100644 --- a/public/roadmap-content/backend.json +++ b/public/roadmap-content/backend.json @@ -1690,8 +1690,8 @@ "type": "article" }, { - "title": "Architectural Patterns in a nutshell", - "url": "https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013", + "title": "10 Common Software Architectural Patterns in a nutshell", + "url": "https://theiotacademy.medium.com/10-common-software-architectural-patterns-in-a-nutshell-1b1f6cf5036b", "type": "article" } ] diff --git a/public/roadmap-content/cloudflare.json b/public/roadmap-content/cloudflare.json index 5c531259d..cc55bb87b 100644 --- a/public/roadmap-content/cloudflare.json +++ b/public/roadmap-content/cloudflare.json @@ -1,87 +1,313 @@ { "PcYnYAAkKMbzoiCnBfjqO": { "title": "JavaScript Fundamentals", - "description": "", - "links": [] + "description": "JavaScript is a versatile, high-level programming language primarily used for adding interactivity and dynamic features to websites. It runs in the browser, allowing for client-side scripting that can manipulate HTML and CSS, respond to user events, and interact with web APIs.\n\nJavaScript is a core language for Cloudflare Workers, allowing you to write serverless functions that run on Cloudflare's edge network. You'll use it to intercept and modify HTTP requests and responses, customize website behavior, and build dynamic applications. Understanding JavaScript fundamentals like variables, functions, asynchronous programming (Promises, async/await), and DOM manipulation is crucial for effective Cloudflare Workers development. You can also use TypeScript, which compiles to JavaScript, offering static typing benefits.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Visit Dedicated JavaScript Roadmap", + "url": "https://roadmap.sh/javascript", + "type": "article" + }, + { + "title": "JavaScript · Cloudflare Workers", + "url": "https://developers.cloudflare.com/workers/languages/javascript/", + "type": "article" + }, + { + "title": "JavaScript Fundamentals", + "url": "https://developer.mozilla.org/en-US/curriculum/core/javascript-fundamentals/", + "type": "article" + } + ] }, "q9oQTt_NqhdWvJfA5XH1V": { "title": "Basic Command-line Knowledge", - "description": "", - "links": [] + "description": "Knowing basic command-line commands is a must-have, not when working with Cloudflare but also as a developer. Learn the basics of navigating directories, file management, text editing, package management etc.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare Wrangler CLI", + "url": "https://developers.cloudflare.com/workers/wrangler/", + "type": "article" + }, + { + "title": "Command-line Primer for Beginners", + "url": "https://lifehacker.com/a-command-line-primer-for-beginners-5633909", + "type": "article" + }, + { + "title": "Command Line for Beginners", + "url": "https://thelinuxcode.com/command-line-for-beginners-how-to-use-the-terminal-like-a-pro/", + "type": "article" + } + ] }, "9iSdASlRxyod9YwZ2IUry": { "title": "HTTP and Web Protocols", - "description": "", - "links": [] + "description": "Understanding HTTP and web protocols is crucial for leveraging Cloudflare's features. HTTP methods (GET, POST), status codes, headers, and caching mechanisms directly influence how Cloudflare interacts with your application. Cloudflare supports modern protocols like HTTP/2 and HTTP/3, improving performance. Familiarity with TLS/SSL is vital for secure communication, and concepts like CORS (Cross-Origin Resource Sharing) are relevant when handling API requests. Cloudflare's features, like caching rules and page rules, operate based on these protocols.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "What is HTTP?", + "url": "https://www.cloudflare.com/en-gb/learning/ddos/glossary/hypertext-transfer-protocol-http/", + "type": "article" + }, + { + "title": "Overview of HTTP", + "url": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview", + "type": "article" + } + ] }, "C08pIguX1N45Iw0kh0Fvu": { "title": "Git Basics", - "description": "", - "links": [] + "description": "Git is a distributed version control system designed to handle projects of any size with speed and efficiency. Created by Linus Torvalds in 2005, it tracks changes in source code during software development, allowing multiple developers to work together on non-linear development. Git maintains a complete history of all changes, enabling easy rollbacks and comparisons between versions. Its distributed nature means each developer has a full copy of the repository, allowing for offline work and backup. Git’s key features include branching and merging capabilities, staging area for commits, and support for collaborative workflows like pull requests. Its speed, flexibility, and robust branching and merging capabilities have made it the most widely used version control system in software development, particularly for open-source projects and team collaborations.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Visit Dedicated Git & GitHub Roadmap", + "url": "https://roadmap.sh/git-github", + "type": "article" + }, + { + "title": "Git Integration - Cloudflare Pages", + "url": "https://developers.cloudflare.com/pages/configuration/git-integration/", + "type": "article" + }, + { + "title": "Git Documentation", + "url": "https://git-scm.com/doc", + "type": "article" + }, + { + "title": "Git Cheat Sheet", + "url": "https://cs.fyi/guide/git-cheatsheet", + "type": "article" + } + ] }, "dSBYTGGkol3MAXyg7G7_J": { "title": "Node.js and NPM", - "description": "", - "links": [] + "description": "Node.js is an open source, cross-platform runtime environment and library that is used for running web applications outside the client’s browser. It is used for server-side programming, and primarily deployed for non-blocking, event-driven servers, such as traditional web sites and back-end API services, but was originally designed with real-time, push-based architectures in mind. Every browser has its own version of a JS engine, and node.js is built on Google Chrome’s V8 JavaScript engine.\n\nnpm (Node Package Manager) is the standard package manager for Node.js. It is two things: first and foremost, it is an online repository for the publishing of open-source Node.js projects; second, it is a command-line utility for interacting with said repository that aids in package installation, version management, and dependency management.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Visit Dedicated Node.js Roadmap", + "url": "https://roadmap.sh/nodejs", + "type": "article" + }, + { + "title": "Node.js Documentation", + "url": "https://nodejs.org/en/", + "type": "article" + }, + { + "title": "NPM", + "url": "https://www.docs.npmjs.com/", + "type": "article" + }, + { + "title": "An Introduction to NPM", + "url": "https://nodejs.org/en/learn/getting-started/an-introduction-to-the-npm-package-manager", + "type": "article" + } + ] }, "zR84MFLL6y0dygz9hXXPA": { "title": "TypeScript Fundamentals", - "description": "", - "links": [] + "description": "TypeScript is a superset of JavaScript that adds static typing. It enhances code maintainability and reduces errors by catching type-related issues during development. For Cloudflare Workers, TypeScript can improve the development experience. You define types for variables, function parameters, and return values, making code more predictable. TypeScript code compiles to JavaScript before deployment to Cloudflare Workers. Using TypeScript allows for better tooling, autocompletion, and refactoring, leading to more robust and scalable serverless applications.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Visit Dedicated TypeScript Roadmap", + "url": "https://roadmap.sh/typescript", + "type": "article" + }, + { + "title": "TypeScript Documentation", + "url": "https://www.typescriptlang.org/docs/", + "type": "article" + }, + { + "title": "TypeScript Handbook", + "url": "https://www.typescriptlang.org/docs/handbook/", + "type": "article" + } + ] }, "Isl5anwDvb1MacA-JH4ej": { "title": "Understand Serverless Architecture", - "description": "", - "links": [] + "description": "Serverless architecture allows you to run code without managing servers, and Cloudflare Workers is a key implementation of this. With Cloudflare Workers, you deploy JavaScript/TypeScript functions to Cloudflare's edge network, where they execute in response to HTTP requests. Serverless means you don't provision or maintain servers; Cloudflare handles scaling and infrastructure. This model enables faster deployments, pay-per-use pricing, and reduced operational overhead. You focus on code, while Cloudflare handles the underlying infrastructure, making it ideal for building performant and scalable applications.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "What is Serverless Architecture?", + "url": "https://cloud.google.com/discover/what-is-serverless-architecture", + "type": "article" + }, + { + "title": "What is Serverless Computing? - Serverless Computing Explain@", + "url": "https://aws.amazon.com/what-is/serverless-computing/", + "type": "article" + } + ] }, "TB6vGzDgGZ9yAd9MGR7vw": { "title": "Workers Runtime Environment", - "description": "", - "links": [] + "description": "The Workers runtime environment is a lightweight JavaScript execution environment running on Cloudflare's edge network. It's based on V8, the same engine that powers Chrome and Node.js, but optimized for speed and security. Workers have limited access to global variables and APIs compared to a traditional Node.js environment, focusing on handling HTTP requests and responses. It provides APIs for caching, KV storage, and accessing request information, enabling performant and globally distributed serverless functions.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "How Workers Works · Cloudflare", + "url": "https://developers.cloudflare.com/workers/reference/how-workers-works/", + "type": "article" + }, + { + "title": "Introducing workerd: the Open Source Workers Runtime", + "url": "https://blog.cloudflare.com/workerd-open-source-workers-runtime/", + "type": "article" + } + ] }, "aGWLomYHGkIfn7GFc0_Yl": { "title": "Edge Computing Fundamentals", - "description": "", - "links": [] + "description": "Edge computing brings computation closer to the user, minimizing latency. Cloudflare Workers embodies this: your code runs on Cloudflare's global network of servers, near your users. This reduces network hops and improves response times. By executing logic at the edge, you can personalize content, filter requests, and optimize delivery without needing to route traffic back to a central server. Edge computing with Workers enables faster, more responsive applications and enhanced user experiences.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "What Is Edge Computing? - Coursera", + "url": "https://www.udemy.com/course/edge-computing/", + "type": "course" + }, + { + "title": "What is Edge Computing - Cloudflare Docs", + "url": "https://www.cloudflare.com/learning/serverless/glossary/what-is-edge-computing/", + "type": "article" + }, + { + "title": "What is Edge Computing? Is It More Than a Buzzword?", + "url": "https://www.howtogeek.com/devops/what-is-edge-computing-is-it-more-than-a-buzzword/", + "type": "article" + } + ] }, "HNEXPU6r_T7UYvwLv2wnt": { "title": "Request/Response Handling", - "description": "", - "links": [] + "description": "Cloudflare Workers excel at intercepting and modifying HTTP requests and responses. When a request hits Cloudflare, a Worker can inspect the request details (headers, URL, method) and take actions: rewrite the URL, modify headers, or even serve a completely different response. Similarly, Workers can intercept responses from the origin server, modifying the content, adding headers for caching, or even serving a cached version directly. This level of control allows for powerful customization and optimization of web traffic.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Request and Response", + "url": "https://developers.cloudflare.com/workers/runtime-apis/request", + "type": "article" + }, + { + "title": "Fetch API", + "url": "https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API", + "type": "article" + } + ] }, "_2UnRlbUplHvs5-Stj4O4": { "title": "Fetch API and Runtime APIs", - "description": "", - "links": [] + "description": "Within Cloudflare Workers, the Fetch API is your primary tool for making HTTP requests to external services or your origin server. It's similar to the Fetch API in browsers but adapted for the Workers environment. Runtime APIs provide access to Cloudflare-specific features like KV storage (for persistent data), Durable Objects (for stateful applications), and other services. These APIs allow Workers to interact with Cloudflare's infrastructure and build powerful applications that go beyond simple request/response handling.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Fetch API in Workers", + "url": "https://developers.cloudflare.com/workers/runtime-apis/fetch", + "type": "article" + }, + { + "title": "Fetch API", + "url": "https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API", + "type": "article" + } + ] }, "i6L9FI6fBDXr0XtMrc_uR": { "title": "Workers Lifecycle", - "description": "", - "links": [] + "description": "A Cloudflare Worker's lifecycle is short and stateless. Each invocation starts when a request hits the Cloudflare edge. The Worker executes its code to handle the request. Once the response is sent (or an error occurs), the Worker instance terminates. There's no persistent state between requests unless you use services like KV or Durable Objects. This stateless nature ensures scalability and quick response times. Understanding this lifecycle is crucial for designing efficient Workers that can handle a high volume of requests.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Workers RPC - Lifecycle", + "url": "https://developers.cloudflare.com/workers/runtime-apis/rpc/lifecycle/", + "type": "article" + }, + { + "title": "How Workers Works · Cloudflare", + "url": "https://developers.cloudflare.com/workers/reference/how-workers-works/", + "type": "article" + }, + { + "title": "Introducing workerd: the Open Source Workers Runtime", + "url": "https://blog.cloudflare.com/workerd-open-source-workers-runtime/", + "type": "article" + } + ] }, "WZSi9inWPhqZQvDN-C8BV": { "title": "Service Bindings", - "description": "", - "links": [] + "description": "Service Bindings allow Cloudflare Workers to seamlessly integrate with other Cloudflare services. They provide a secure and efficient way for a Worker to access resources like KV storage, Durable Objects, R2 storage, and other Workers. Instead of using API keys or direct network calls, Service Bindings create a direct connection between your Worker and the bound service, simplifying configuration and improving performance. They're essential for building complex applications that leverage the full power of the Cloudflare ecosystem.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Service Bindings - Runtime APIs", + "url": "https://developers.cloudflare.com/workers/runtime-apis/bindings/service-bindings/", + "type": "article" + }, + { + "title": "Service Bindings · Cloudflare", + "url": "https://developers.cloudflare.com/workers/platform/service-bindings/", + "type": "article" + } + ] }, "uBjcQ9PJUfwzu5N_2CNjN": { "title": "Caching Strategies", - "description": "", - "links": [] + "description": "Cloudflare Workers allow fine-grained control over caching. You can use the Cache API to store and retrieve responses directly within your Worker, bypassing the origin server. Strategies include:\n\n* **Cache-First:** Serve from cache if available, otherwise fetch from origin.\n* **Network-First:** Always fetch from origin, caching the response for subsequent requests.\n* **Stale-While-Revalidate:** Serve from cache immediately, then update the cache in the background.\n\nYou can also manipulate HTTP cache headers (Cache-Control, Expires) to control how Cloudflare's CDN caches content. Effective caching is critical for improving performance and reducing origin server load.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cache · Cloudflare Workers", + "url": "https://developers.cloudflare.com/workers/runtime-apis/cache/", + "type": "article" + }, + { + "title": "How the Cache Works · Cloudflare Workers ", + "url": "https://developers.cloudflare.com/workers/reference/how-the-cache-works/", + "type": "article" + } + ] }, "aStbAF4zraqhJ-N3RH4ha": { "title": "Middleware Patterns", - "description": "", - "links": [] + "description": "Middleware patterns in Cloudflare Workers allow you to chain functions to process requests or responses in a modular way. Each middleware function performs a specific task (e.g., authentication, logging, header modification) before passing the request/response to the next function in the chain. This promotes code reusability, separation of concerns, and easier maintenance. By composing middleware, you can build complex request processing pipelines.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Middleware · Cloudflare Pages", + "url": "https://developers.cloudflare.com/pages/functions/middleware/", + "type": "article" + }, + { + "title": "A Middleware Architecture for Cloudflare Workers", + "url": "https://boxesplusarrows.com/blog/a-middleware-architecture-for-cloudflare-workers/", + "type": "article" + } + ] }, "9ef2VPCru8lCmRxxGe-Eo": { "title": "Bindings", - "description": "", - "links": [] + "description": "In Cloudflare Workers, Bindings are configurations that connect your Worker to external resources or services. These can include:\n\n* **KV Namespaces:** Binding to a KV namespace allows the Worker to read and write data.\n* **Durable Objects:** Bindings specify which Durable Object namespace the Worker can access.\n* **Service Bindings:** Connecting to other Workers or Cloudflare services like Queues.\n* **Secrets:** Storing sensitive data (API keys) securely.\n* **Environment Variables:** Configuring environment-specific settings.\n\nBindings are defined in the `wrangler.toml` file and provide a secure and managed way for your Worker to interact with the outside world.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Bindings (env) · Cloudflare Workers", + "url": "https://developers.cloudflare.com/workers/runtime-apis/bindings/", + "type": "article" + }, + { + "title": "Workers Bindings · Cloudflare Workers AI", + "url": "https://developers.cloudflare.com/workers-ai/configuration/bindings/", + "type": "article" + }, + { + "title": "Configuration - Wrangler · Cloudflare Workers", + "url": "https://developers.cloudflare.com/workers/wrangler/configuration/", + "type": "article" + } + ] }, "-8MsWNvuqwQCbLpOx_kov": { "title": "Hono", - "description": "Hono is a small, simple and ultrafast web framework built on web standards. It works on any JavaScript runtime: Cloudflare Workers, Fastly Compute, Deno, Bun, Vercel, Netlify, AWS Lambda, Lambda@Edge, and Node.js. Hono is more known for supporting a lot more than the basics.\n\nUse-cases\n---------\n\nHono is a simple web application framework similar to the well known javascript framework Express, without a frontend. But it runs on CDN Edges and allows you to construct larger applications when combined with middleware.\n\nVisit the following resources to learn more:", + "description": "Hono is a small, simple and ultra-fast web framework built on web standards. It works on any JavaScript runtime: Cloudflare Workers, Fastly Compute, Deno, Bun, Vercel, Netlify, AWS Lambda, Lambda@Edge, and Node.js. Hono is more known for supporting a lot more than the basics.\n\nHono is a simple web application framework similar to the well known javascript framework Express, without a frontend. But it runs on CDN Edges and allows you to construct larger applications when combined with middleware.\n\nVisit the following resources to learn more:", "links": [ { "title": "Hono JS Examples", @@ -89,7 +315,7 @@ "type": "opensource" }, { - "title": "Official Documentation", + "title": "Hono Documentation", "url": "https://hono.dev/docs/", "type": "article" }, @@ -104,7 +330,7 @@ "type": "article" }, { - "title": "Learn with me", + "title": "Hono JS Tutorial", "url": "https://www.youtube.com/watch?v=gY-TK33G6kQ", "type": "video" } @@ -112,39 +338,129 @@ }, "15jl6CSCkqnh_eFfysLDM": { "title": "Itty Router", - "description": "Itty Router is a lightweight router with the motto \"less is more\" that supports Cloudflare workers and pages. While other libraries may suffer from feature creep/bloat to please a wider audience, Itty Router painfully consider every single byte added to itty. Our router options range from ~450 bytes to ~970 bytes for a batteries-included version with built-in defaults, error handling, formatting, etc. On top of that, the following concepts aim to keep YOUR code tiny (and readable) as well.\n\nSimple Projects ideas\n---------------------\n\nItty Router is a lightweight router system that supports typescript. You can create easy and good routers for Cloudflare workers or pages. With a simple project like a URL shortener, you can use Itty Router and Cloudflare KV.\n\nOther project ideas can be found:\n\n* Webhook Relay\n * Transform webhook data or API data towards another API so you can transform the data as you like.\n* Micro URL Monitoring\n * Monitor any URL and give back responses on the specific endpoint.\n* Single-Use Download Links (Watch out for costs from Cloudflare!)\n * Generate links that expire after one download, ideal for file sharing.\n\nVisit the following resources to learn more:", + "description": "Itty Router is a lightweight router with the motto \"less is more\" that supports Cloudflare workers and pages. While other libraries may suffer from feature creep/bloat to please a wider audience, Itty Router painfully consider every single byte added to Itty. Our router options range from ~450 bytes to ~970 bytes for a batteries-included version with built-in defaults, error handling, formatting, etc. On top of that, the following concepts aim to keep YOUR code tiny (and readable) as well.\n\nVisit the following resources to learn more:", "links": [ { - "title": "Official Documentation", + "title": "ITTy Documentation", "url": "https://itty.dev/itty-router/", "type": "article" + }, + { + "title": "Getting Started with Itty Router", + "url": "https://itty.dev/itty-router/getting-started", + "type": "article" } ] }, "Tzx93tvoGrc9_fKQqkorN": { "title": "Wrangler", - "description": "", - "links": [] + "description": "`Wrangler` is the command-line interface (CLI) for Cloudflare Workers. It simplifies the process of developing, testing, and deploying Workers. With `wrangler`, you can:\n\n* Create new Worker projects.\n* Develop Workers locally.\n* Deploy Workers to Cloudflare.\n* Manage secrets and environment variables.\n* Configure bindings to other Cloudflare services.\n\n`Wrangler` streamlines the entire Workers workflow, making it an essential tool for any Cloudflare Workers developer.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Wrangler Documentation", + "url": "https://developers.cloudflare.com/workers/wrangler/", + "type": "article" + }, + { + "title": "Wrangler Commands", + "url": "https://developers.cloudflare.com/workers/wrangler/commands//", + "type": "article" + } + ] }, "uoaOrypiMkyoikXvTHeVS": { "title": "DevTools Integration", - "description": "", - "links": [] + "description": "Cloudflare Workers can be debugged using standard browser DevTools. When running Workers in a local environment (e.g., with Miniflare), you can use Chrome DevTools or similar tools to inspect code, set breakpoints, and step through execution. You can also use `console.log` statements to output information to the DevTools console. This integration makes debugging Workers more intuitive and efficient.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Debugging Cloudflare Workers", + "url": "https://developers.cloudflare.com/workers/playground/#devtools", + "type": "article" + }, + { + "title": "Chrome DevTools", + "url": "https://developer.chrome.com/docs/devtools", + "type": "article" + } + ] }, "8Y6TIYoWIXrxtmzDVdS0b": { "title": "CI/CD Pipelines", - "description": "", - "links": [] + "description": "CI/CD (Continuous Integration/Continuous Deployment) pipelines automate the process of building, testing, and deploying Cloudflare Workers. Common CI/CD platforms like GitHub Actions, GitLab CI, and CircleCI can be used to create pipelines that automatically deploy Workers whenever code changes are pushed to a repository. These pipelines typically involve steps like linting, testing, building, and deploying using `wrangler`. Automating deployments ensures faster releases and reduces the risk of errors.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Automate your workflow - Github Actions", + "url": "https://github.com/features/actions", + "type": "article" + }, + { + "title": "CI/CD Pipelines - Gitlab", + "url": "https://docs.gitlab.com/ee/ci/pipelines/", + "type": "article" + }, + { + "title": "Continuous Integration and Delivery - CircleCI", + "url": "https://circleci.com/", + "type": "article" + }, + { + "title": "Simple, Flexible, Trustworthy CI/CD Tools - Travis CI", + "url": "https://www.travis-ci.com/", + "type": "article" + } + ] }, "zSwio18XdBfqwSneAx_AP": { "title": "Any Frontend Framework", - "description": "", - "links": [] + "description": "Several frontend frameworks can be deployed on Cloudflare Pages or used with Cloudflare Workers. Popular choices include:\n\n* **React:** Deploy using Create React App or Next.js.\n* **Vue.js:** Deploy using Vue CLI or Nuxt.js.\n* **Angular:** Deploy using Angular CLI.\n* **Svelte:** Deploy using SvelteKit.\n* **Astro**: Deploy using Astro CLI.\n\nCloudflare Pages offers optimized builds and deployments for these frameworks. For Workers, you can use these frameworks to render content dynamically at the edge.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "React", + "url": "https://react.dev/", + "type": "article" + }, + { + "title": "Vue.js", + "url": "https://vuejs.org/", + "type": "article" + }, + { + "title": "Angular", + "url": "https://angular.dev/", + "type": "article" + }, + { + "title": "Svelte", + "url": "https://svelte.dev/", + "type": "article" + }, + { + "title": "Astro", + "url": "https://astro.build/", + "type": "article" + }, + { + "title": "Framework Guide", + "url": "https://developers.cloudflare.com/pages/framework-guides/", + "type": "article" + } + ] }, "o4sBgniPmLqwej6TlIPcl": { "title": "Miniflare", - "description": "", - "links": [] + "description": "Miniflare is a local simulator for Cloudflare Workers. It mimics the Cloudflare Workers runtime environment on your local machine, allowing you to test your Workers without deploying them to Cloudflare. Miniflare supports features like KV storage, Durable Objects, and Service Bindings, making it a valuable tool for local development and debugging. It speeds up development cycles by providing a fast and reliable local testing environment.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "cloudflare/miniflare", + "url": "https://github.com/cloudflare/miniflare", + "type": "opensource" + }, + { + "title": "Miniflare - Cloudflare Workers", + "url": "https://developers.cloudflare.com/workers/testing/miniflare/", + "type": "article" + } + ] }, "1dGFfQauOgHP7T4ReMpCU": { "title": "Workers KV", @@ -164,367 +480,1164 @@ }, "EBTHbXOOZiqrcYJvKhcWV": { "title": "Key-value Operations", - "description": "", - "links": [] + "description": "Cloudflare Workers provide a simple API for reading and writing data to a Key-Value store. You can use the `put` method to store data, and the `get` method to retrieve it. The `delete` method allows you to remove data from the store. KV stores are ideal for storing configuration data, user sessions, and other data that needs to be accessed quickly.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Read Key Value Pairs", + "url": "https://developers.cloudflare.com/kv/api/read-key-value-pairs/", + "type": "article" + }, + { + "title": "Cloudflare KV Binding API", + "url": "https://developers.cloudflare.com/workers/runtime-apis/kv", + "type": "article" + }, + { + "title": "Cloudflare Workers KV — Cloudflare Docs", + "url": "https://developers.cloudflare.com/workers/runtime-apis/kv/", + "type": "article" + } + ] }, "sQlRIYLnZcugATgpogJmw": { "title": "Metadata Handling", - "description": "", - "links": [] - }, - "i64-aCpZHygq76fBU6eXD": { - "title": "Bulk Operations", - "description": "", - "links": [] + "description": "Cloudflare Workers allow you to access metadata about the request, including the request method, URL, headers, and more. You can use this metadata to customize your application's behavior or to implement features like caching, authentication, or rate limiting. Metadata is available in both the `fetch` event and the `scheduled` event. It's a powerful tool for building dynamic and adaptive applications.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Request and Response", + "url": "https://developers.cloudflare.com/workers/runtime-apis/request", + "type": "article" + }, + { + "title": "Scheduled Event Handler", + "url": "https://developers.cloudflare.com/workers/runtime-apis/scheduled-event", + "type": "article" + } + ] + }, + "i64-aCpZHygq76fBU6eXD": { + "title": "Bulk Operations", + "description": "Cloudflare Workers allow you to perform bulk operations on KV stores. You can use the `batch` method to perform multiple operations in a single request. This is useful for tasks like importing data from an external source or updating multiple records at once. Bulk operations are efficient and scalable, allowing you to handle large amounts of data with ease.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Workers KV", + "url": "https://blog.cloudflare.com/workers-kv-is-ga/", + "type": "article" + }, + { + "title": "Workers KV Runtime API", + "url": "https://developers.cloudflare.com/workers/runtime-apis/kv", + "type": "article" + } + ] }, "OgW-iIrJZ5-sOWKnFpIZd": { "title": "Caching Patterns", - "description": "", - "links": [] + "description": "Caching is a critical aspect of building performant and scalable applications. Cloudflare Workers provide several caching patterns that you can use to optimize your application's performance. These patterns include:\n\n* **Cache-First:** Serve from cache if available, otherwise fetch from origin.\n* **Network-First:** Always fetch from origin, caching the response for subsequent requests.\n* **Stale-While-Revalidate:** Serve from cache immediately, then update the cache in the background.\n\nYou can also manipulate HTTP cache headers (Cache-Control, Expires) to control how Cloudflare's CDN caches content. Effective caching is crucial for improving performance and reducing origin server load.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "How the Cache Works · Cloudflare Workers", + "url": "https://developers.cloudflare.com/workers/reference/how-the-cache-works/", + "type": "article" + }, + { + "title": "Caching Strategies", + "url": "https://docs.aws.amazon.com/whitepapers/latest/database-caching-strategies-using-redis/caching-patterns.html", + "type": "article" + }, + { + "title": "Caching Static and Dynamic Content", + "url": "https://www.cloudflare.com/learning/cdn/caching-static-and-dynamic-content/", + "type": "article" + } + ] }, "gxLUlXGuaY5Q-0xmBgQwz": { "title": "R2 Storage", - "description": "", - "links": [] + "description": "Cloudflare R2 Storage is a distributed object storage service that offers fast, reliable, and affordable storage without egress fees. It's designed to compete with services like Amazon S3 and Google Cloud Storage. R2 allows you to store large amounts of unstructured data (images, videos, documents) and access it quickly from anywhere in the world via Cloudflare's global network. Its key advantage is the absence of egress bandwidth charges, making it cost-effective for applications with high data retrieval needs.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare R2 | Zero Egress Fee Object Storage", + "url": "https://www.cloudflare.com/developer-platform/products/r2/", + "type": "article" + }, + { + "title": "Cloudflare R2 Documentation", + "url": "https://developers.cloudflare.com/r2/", + "type": "article" + } + ] }, "K9iW2H6riKwddWmpWJFJw": { "title": "Object Storage", - "description": "", - "links": [] + "description": "Cloudflare R2 is object storage that offers fast, reliable, and affordable storage without egress fees. It's designed to work seamlessly with Cloudflare Workers, allowing you to store and retrieve data close to your users. R2 is ideal for storing static assets, user-generated content, and other data that needs to be accessed quickly and frequently. Its lack of egress fees makes it a cost-effective alternative to traditional cloud storage providers.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "What is Object Storage?", + "url": "https://www.cloudflare.com/learning/cloud/what-is-object-storage/", + "type": "article" + }, + { + "title": "Cloudflare R2 | Zero Egress Fee Object Storage", + "url": "https://www.cloudflare.com/developer-platform/products/r2/", + "type": "article" + } + ] }, "BPahk1qH9Hk11tsE2hw3A": { "title": "Large File Handling", - "description": "", - "links": [] + "description": "Handling large files on Cloudflare requires strategies to avoid exceeding size limits and ensure efficient delivery. Techniques include:\n\n* **Streaming:** Processing files in chunks to reduce memory usage.\n* **Range Requests:** Serving only the requested portion of a file.\n* **Cloudflare Stream:** Using Cloudflare's video streaming service for large video files.\n* **R2 integration:** Storing large files in R2 and serving them via Workers.\n\nThese methods allow you to handle large files effectively while leveraging Cloudflare's global network.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Resumable and Large Files · Cloudflare Stream", + "url": "https://developers.cloudflare.com/stream/uploading-videos/resumable-uploads/", + "type": "article" + }, + { + "title": "Cloudflare R2 Limits", + "url": "https://developers.cloudflare.com/r2/platform/limits/", + "type": "article" + } + ] }, "3jU5753Uza2aS-gZo7w4k": { "title": "Asset Management", - "description": "", - "links": [] + "description": "Cloudflare R2 can be used for efficient asset management. You can store images, videos, and other static assets in R2 and serve them directly through Cloudflare's CDN. This reduces the load on your origin server and improves website performance. R2's integration with Cloudflare Workers allows you to perform on-the-fly image transformations or other asset processing tasks at the edge. Versioning support in R2 helps manage different versions of your assets.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Use R2 as Static Asset Storage with Cloudflare Pages", + "url": "https://developers.cloudflare.com/pages/tutorials/use-r2-as-static-asset-storage-for-pages/", + "type": "article" + }, + { + "title": "Cloudflare R2 | Zero Egress Fee Object Storage", + "url": "https://www.cloudflare.com/developer-platform/products/r2/", + "type": "article" + } + ] }, "UNE6XK4su5r2jcxhY7hOG": { "title": "Bucket Operations", - "description": "", - "links": [] + "description": "In Cloudflare R2, buckets are containers for storing objects. You can perform various bucket operations, including:\n\n* **Creating Buckets:** Creating new buckets to organize your data.\n* **Listing Buckets:** Listing all the buckets in your account.\n* **Deleting Buckets:** Deleting buckets that are no longer needed (must be empty).\n* **Configuring Bucket Policies:** Setting access control policies for buckets.\n\nThese operations are typically performed using the R2 API, the Cloudflare dashboard, or command-line tools like `wrangler`.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Buckets · Cloudflare R2", + "url": "https://developers.cloudflare.com/r2/buckets/", + "type": "article" + }, + { + "title": "Create New Buckets · Cloudflare R2", + "url": "https://developers.cloudflare.com/r2/buckets/create-buckets/", + "type": "article" + } + ] }, "YvgmmF9sWfURgijFV7E31": { "title": "Bucket Lifecycle", - "description": "", - "links": [] + "description": "The lifecycle of an R2 bucket involves creation, usage (storing and retrieving objects), and eventual deletion. You create a bucket to house your data. Objects are then uploaded, accessed, and managed within the bucket. Cloudflare doesn't have built-in lifecycle rules like some other storage providers, so object expiration typically requires custom logic via Workers. Finally, when the bucket is no longer needed, and after ensuring it's empty, you can delete it.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Buckets · Cloudflare R2", + "url": "https://developers.cloudflare.com/r2/buckets/", + "type": "article" + }, + { + "title": "Bucket Lifecycle · Cloudflare R2", + "url": "https://developers.cloudflare.com/api/resources/r2/subresources/buckets/subresources/lifecycle/", + "type": "article" + } + ] }, "mKN0Ta3zSk7PCm_uHYKFN": { "title": "D1", - "description": "", - "links": [] + "description": "Cloudflare D1 is a serverless SQL database designed to run on Cloudflare's edge network. It allows you to store and query data closer to your users, reducing latency and improving application performance. D1 is based on SQLite and is accessible directly from Cloudflare Workers, making it easy to build dynamic and data-driven applications without managing a traditional database server.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare D1 Documentation", + "url": "https://developers.cloudflare.com/d1/", + "type": "article" + }, + { + "title": "Getting Started with D1", + "url": "https://developers.cloudflare.com/d1/get-started/", + "type": "article" + } + ] }, "PnhP47woPJb_JnLpMMiTw": { "title": "Schema Management", - "description": "", - "links": [] + "description": "Managing the structure of your database in Cloudflare D1 involves defining tables, columns, data types, primary keys, foreign keys, and indexes using standard SQL Data Definition Language (DDL) statements. Since D1 is based on SQLite, you'll use SQLite-compatible syntax. Tools like `wrangler` provide commands to execute SQL scripts, allowing you to create and modify your database schema. You'll typically start by designing your schema based on your application's data requirements and then translate that design into SQL DDL statements. Careful consideration should be given to data types to ensure data integrity and efficiency.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Schema Validation · Cloudflare API Shield", + "url": "https://developers.cloudflare.com/api-shield/security/schema-validation/", + "type": "article" + }, + { + "title": "Configure Schema Validation · Cloudflare API Shield", + "url": "https://developers.cloudflare.com/api-shield/security/schema-validation/configure/", + "type": "article" + } + ] }, "M8rSSVFUHixgWZRfaBPHb": { "title": "Migrations", - "description": "", - "links": [] + "description": "As your application evolves, your database schema will likely need to change. Database migrations provide a structured way to apply these changes in a controlled and repeatable manner. In D1, you'll typically write SQL scripts that contain the necessary `ALTER TABLE` statements to modify your schema (e.g., adding new columns, renaming columns, changing data types). You can then use `wrangler` or a similar tool to execute these migration scripts against your D1 database. It's important to version your migration scripts and apply them in the correct order to avoid data inconsistencies or errors. Consider using a migration management tool to track and apply migrations more effectively.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Database Migrations: What are the Types of DB Migrations?", + "url": "https://www.prisma.io/dataguide/types/relational/what-are-database-migrations", + "type": "article" + }, + { + "title": "Database Migrations in the Real World", + "url": "https://blog.jetbrains.com/idea/2025/02/database-migrations-in-the-real-world/", + "type": "article" + } + ] }, "65xDESm6jbHWkVO4NgHqx": { "title": "Query Optimization", - "description": "", - "links": [] + "description": "Optimizing your SQL queries is crucial for achieving good performance with Cloudflare D1, especially as your database grows. D1 leverages SQLite's query optimizer, which automatically attempts to find the most efficient way to execute your queries. However, you can significantly improve performance by following best practices:\n\n* **Use Indexes:** Indexes are essential for speeding up queries that filter or sort data. Create indexes on columns that are frequently used in `WHERE` clauses, `JOIN` conditions, and `ORDER BY` clauses.\n* **Avoid Full Table Scans:** Full table scans can be slow, especially on large tables. Ensure your queries are using indexes to narrow down the number of rows that need to be examined.\n* **Write Efficient SQL:** Use appropriate `JOIN` types, avoid using `SELECT *` (specify the columns you need), and use `WHERE` clauses to filter data as early as possible.\n* **Analyze Query Performance:** Use SQLite's `EXPLAIN QUERY PLAN` command to analyze how your queries are being executed. This can help you identify potential bottlenecks and areas for improvement.\n* **Consider Denormalization:** In some cases, denormalizing your database schema (adding redundant data to avoid joins) can improve query performance, but it comes at the cost of increased storage space and potential data inconsistencies. Weigh the trade-offs carefully.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Query Parameters and Cached Responses", + "url": "https://developers.cloudflare.com/automatic-platform-optimization/reference/query-parameters/", + "type": "article" + } + ] }, "MpWO1sroeF106SEMU1V1a": { "title": "Drizzle", - "description": "", - "links": [] + "description": "Drizzle ORM is a TypeScript ORM (Object-Relational Mapper) that can be used with Cloudflare D1 to provide a type-safe and more developer-friendly way to interact with your database. It allows you to define your database schema using TypeScript code and provides a query builder that helps you construct SQL queries in a type-safe manner. Drizzle can simplify database interactions, improve code maintainability, and reduce the risk of SQL injection vulnerabilities. It also supports migrations, making it easier to manage schema changes over time.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Drizzle", + "url": "https://orm.drizzle.team/", + "type": "article" + }, + { + "title": "Drizzle Overview", + "url": "https://orm.drizzle.team/docs/overview", + "type": "article" + } + ] }, "h3MHLZZwkYqqb5PSfMhpB": { "title": "Prisma", - "description": "", - "links": [] + "description": "Prisma is a popular open-source ORM that provides a type-safe database client and migration tools. While not directly compatible with Cloudflare D1 due to its reliance on specific database adapters, Prisma can be used in conjunction with a D1 adapter or a custom data access layer within your Cloudflare Workers. This approach allows you to leverage Prisma's type safety, query builder, and migration features while still using D1 as your database.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Prisma", + "url": "https://www.prisma.io/", + "type": "article" + }, + { + "title": "Prisma Documentation", + "url": "https://www.prisma.io/docs", + "type": "article" + } + ] }, "zyRgTtlng6idboSgL9YTt": { "title": "Queues", - "description": "", - "links": [] + "description": "Cloudflare Queues is a message queuing service that allows you to decouple different parts of your application. It enables you to reliably send and receive messages between Workers or other services. This asynchronous communication is useful for tasks like background processing, handling spikes in traffic, and building resilient applications. Queues ensures messages are delivered, even if the receiving service is temporarily unavailable.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare Queues · Cloudflare Queues", + "url": "https://developers.cloudflare.com/queues/", + "type": "article" + }, + { + "title": "How Does Queues Work?", + "url": "https://developers.cloudflare.com/queues/reference/how-queues-works/", + "type": "article" + } + ] }, "EFA8m0EdhygxcBWzwmbnT": { "title": "Message Processing", - "description": "", - "links": [] + "description": "With Cloudflare Queues, message processing involves sending messages to a queue from a producer (usually a Worker) and then consuming those messages from the queue by a consumer (another Worker or service). The consumer processes each message, performing tasks like data transformation, calling APIs, or updating databases. Queues guarantees at-least-once delivery, meaning a message will be delivered to a consumer at least once, even if there are failures. Consumers can acknowledge successful processing to remove messages from the queue.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare Queues · Cloudflare Queues", + "url": "https://developers.cloudflare.com/queues/", + "type": "article" + }, + { + "title": "How Does Queues Work?", + "url": "https://developers.cloudflare.com/queues/reference/how-queues-works/", + "type": "article" + }, + { + "title": "Difference Between Stream Processing and Message Processing", + "url": "https://stackoverflow.com/questions/41744506/difference-between-stream-processing-and-message-processing", + "type": "article" + } + ] }, "qgvDGyLjc6lMmVPjHozFM": { "title": "Background Jobs", - "description": "", - "links": [] + "description": "Cloudflare Queues are ideal for handling background jobs. Instead of performing time-consuming tasks directly within a request/response cycle, you can enqueue a message describing the task. A separate Worker, acting as a consumer, then processes these messages in the background. This improves the responsiveness of your application and allows you to handle tasks like image processing, sending emails, or data analysis without blocking user requests.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare Queues", + "url": "https://developers.cloudflare.com/queues/", + "type": "article" + }, + { + "title": "Dispatched | Background Jobs for Serverless Applications", + "url": "https://dispatched.dev/", + "type": "article" + } + ] }, "MInAsLLJtIq6WQDSj5yGH": { "title": "Rate Limiting", - "description": "", - "links": [] + "description": "Cloudflare Queues can be used to implement rate limiting. Instead of directly processing every request, you can enqueue them. A consumer Worker then processes messages from the queue at a controlled rate. This prevents your backend systems from being overwhelmed by sudden spikes in traffic. You can adjust the consumer's processing rate to match the capacity of your backend services.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare Queues - Queues & Rate Limits", + "url": "https://developers.cloudflare.com/queues/tutorials/handle-rate-limits/", + "type": "article" + }, + { + "title": "Rate Limiting Best Practices - Cloudflare Docs", + "url": "https://developers.cloudflare.com/waf/rate-limiting-rules/best-practices/", + "type": "article" + } + ] }, "Grl59SjY31Q3sgf9uX-xf": { "title": "Dead Letter Queues", - "description": "", - "links": [] + "description": "Dead Letter Queues (DLQs) are an important part of a robust message queuing system. In Cloudflare Queues, a DLQ is a separate queue where messages that cannot be processed successfully after multiple retries are sent. This allows you to isolate problematic messages and prevent them from causing continuous failures. You can then investigate the messages in the DLQ to identify and fix the underlying issues.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "What is DLQ? - Dead-Letter Queue Explained - AWS", + "url": "https://aws.amazon.com/what-is/dead-letter-queue/", + "type": "article" + }, + { + "title": "Dead Letter Queue", + "url": "https://en.wikipedia.org/wiki/Dead_letter_queue", + "type": "article" + } + ] }, "G-xBbtaniYFRE9Dgs18px": { "title": "Durable Objects", - "description": "", - "links": [] + "description": "Cloudflare Durable Objects provide a strongly consistent, single-actor execution environment on Cloudflare's edge network. Unlike Workers, which are stateless, Durable Objects maintain state, enabling you to build applications that require coordination and data consistency across multiple requests and users. They are ideal for building collaborative applications, real-time games, and other stateful services.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare Durable Objects - Cloudflare Docs", + "url": "https://developers.cloudflare.com/durable-objects/", + "type": "article" + } + ] }, "EQjhRlM7zpANNWkypScIl": { "title": "State Management", - "description": "", - "links": [] + "description": "Durable Objects excel at state management. Each Durable Object instance has its own persistent storage and can maintain state across multiple requests. You can store data within a Durable Object and access it consistently, regardless of which Cloudflare edge server handles the request. This eliminates the need for external databases or caching layers for managing application state.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "What are Durable Objects? - Cloudflare Documentation", + "url": "https://developers.cloudflare.com/durable-objects/what-are-durable-objects/", + "type": "article" + }, + { + "title": "Durable Object State · Cloudflare Durable Objects", + "url": "https://developers.cloudflare.com/durable-objects/api/state/", + "type": "article" + } + ] }, "RYm0oBFCxm-S-aCwZ21p6": { "title": "Coordination", - "description": "", - "links": [] + "description": "Durable Objects facilitate coordination between different clients or Workers. Because each object has a single, consistent view of its state, it can act as a central point for coordinating actions. Multiple clients can interact with the same Durable Object, and the object can ensure that actions are performed in a consistent and predictable order. This is useful for building collaborative applications where multiple users need to work on the same data.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Durable Objects", + "url": "https://www.cloudflare.com/developer-platform/products/durable-objects/", + "type": "article" + }, + { + "title": "Durable Objects (DO)", + "url": "https://www.lambrospetrou.com/articles/durable-objects-cloudflare/", + "type": "article" + } + ] }, "36w4Q73XkCwo5Cva0XsF8": { "title": "Persistence", - "description": "", - "links": [] + "description": "Durable Objects offer built-in persistence. Data stored within a Durable Object is automatically persisted to Cloudflare's storage infrastructure. You don't need to explicitly save or load data; the Durable Object handles persistence automatically. This simplifies development and ensures that your application's state is durable and reliable, even in the face of server failures.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Access Durable Objects Storage - Cloudflare Docs", + "url": "https://developers.cloudflare.com/durable-objects/best-practices/access-durable-objects-storage/", + "type": "article" + }, + { + "title": "In-memory State in a Durable Object", + "url": "https://developers.cloudflare.com/durable-objects/reference/in-memory-state/", + "type": "article" + } + ] }, "rxxibrJUo1rQ3XCuUIP59": { "title": "Transactional Operations", - "description": "", - "links": [] + "description": "Durable Objects support transactional operations. You can perform multiple operations within a single transaction, ensuring that either all operations succeed or none of them do. This helps maintain data consistency and prevents partial updates. If an error occurs during a transaction, the Durable Object automatically rolls back all changes, leaving the data in a consistent state.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Durable Object Storage · Cloudflare Durable Objects", + "url": "https://developers.cloudflare.com/durable-objects/api/storage-api/", + "type": "article" + }, + { + "title": "Transactional Storage · Cloudflare Durable Objects", + "url": "https://developers.cloudflare.com:2096/durable-objects/api/transactional-storage-api/", + "type": "article" + } + ] }, "rAl7zXcODiqIpS__3qf1A": { "title": "Workflows", - "description": "", - "links": [] + "description": "Cloudflare Workflow allows you to automate tasks and orchestrate different Cloudflare services through a visual, no-code/low-code interface. You can create workflows that trigger based on various events (e.g., HTTP requests, scheduled triggers) and perform actions such as modifying HTTP headers, routing traffic, or integrating with external APIs. It's designed to simplify complex configurations and automate repetitive tasks without requiring extensive coding knowledge.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare Workflows Starter", + "url": "https://github.com/cloudflare/workflows-starter", + "type": "opensource" + }, + { + "title": "Cloudflare Workflows · Cloudflare", + "url": "https://developers.cloudflare.com/workflows/", + "type": "article" + } + ] }, "a0S0_JLwLLNGLUAHrqG4P": { "title": "Workers AI", - "description": "", - "links": [] + "description": "Cloudflare Workers AI allows you to run AI inference directly on Cloudflare's global network, close to your users. This eliminates the need to send data to centralized AI servers, reducing latency and improving performance for AI-powered applications. You can use Workers AI to perform tasks like image recognition, natural language processing, and sentiment analysis at the edge.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Workers AI - Cloudflare Docs", + "url": "https://developers.cloudflare.com/workers-ai/", + "type": "article" + }, + { + "title": "Models · Cloudflare Workers AI", + "url": "https://developers.cloudflare.com/workers-ai/models/", + "type": "article" + } + ] }, "zMwmoCUp9429_aXU-Bz4H": { "title": "Text Generation", - "description": "", - "links": [] + "description": "Workers AI allows you to perform text generation tasks directly on Cloudflare's edge network. You can use pre-trained models or fine-tune your own models to generate text for various purposes, such as content creation, chatbot responses, or language translation. Running text generation at the edge reduces latency and improves the responsiveness of your AI-powered applications.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Choose the Right Text Generation Model", + "url": "https://developers.cloudflare.com/workers-ai/tutorials/how-to-choose-the-right-text-generation-model/", + "type": "article" + }, + { + "title": "Prompting · Cloudflare Workers AI", + "url": "https://developers.cloudflare.com/workers-ai/guides/prompting/", + "type": "article" + } + ] }, "S7laV14zsx31O0Tsj2SRL": { "title": "Image Processing", - "description": "", - "links": [] + "description": "Workers AI allows you to run AI models directly within Cloudflare Workers, enabling powerful image processing capabilities at the edge. You can use Workers AI to perform tasks such as:\n\n* Image recognition\n* Object detection\n* Image classification\n* Image resizing and optimization\n\nThis allows you to build intelligent applications that analyze and manipulate images in real-time, close to the user.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "How to Build an Image Generator using Workers AI", + "url": "https://developers.cloudflare.com/workers-ai/tutorials/image-generation-playground/", + "type": "article" + }, + { + "title": "Get Started with Cloudflare Images", + "url": "https://developers.cloudflare.com/images/get-started/", + "type": "article" + } + ] }, "HJbJ8OxjJzznYwLlIOSO2": { "title": "Speech Rcognition", - "description": "", - "links": [] + "description": "You can use Workers AI to run speech-to-text models directly on Cloudflare's edge network, enabling real-time transcription of audio data. This can be useful for applications like voice search, voice commands, and live captioning.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Whisper - Cloudflare Workers AI", + "url": "https://developers.cloudflare.com/workers-ai/models/whisper/", + "type": "article" + } + ] }, "QxPoNHsL-Pj_z3aU6qEP4": { "title": "AI Model Integration", - "description": "", - "links": [] + "description": "Workers AI provides the ability to run AI models directly on Cloudflare's edge network for recognition tasks. This includes image recognition (identifying objects or scenes in images) and natural language understanding (analyzing text for sentiment, intent, or entities). By performing AI model recognition at the edge, you can reduce latency and improve the responsiveness of AI-powered applications.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare + AI", + "url": "https://ai.cloudflare.com/", + "type": "article" + }, + { + "title": "Cloudflare AI Model Integration", + "url": "https://developers.cloudflare.com/ai-gateway/integrations/", + "type": "article" + } + ] }, "NWGVtH1vxQuO4lly0Omuy": { "title": "Vectorize", - "description": "", - "links": [] + "description": "Cloudflare Vectorize is a vector database that lets you store and query high-dimensional vectors, often used in machine learning for tasks like similarity search and recommendation engines. By using Vectorize with Workers AI, you can build applications that perform real-time AI-powered searches and recommendations directly on Cloudflare's edge network.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Introduction to Vectorize - Cloudflare Docs", + "url": "https://developers.cloudflare.com/vectorize/get-started/intro/", + "type": "article" + }, + { + "title": "Cloudflare Vectorize", + "url": "https://developers.cloudflare.com/vectorize/", + "type": "article" + } + ] }, "UIWaR1ZdjSm0UAS69Kz_5": { "title": "Vector Embeddings", - "description": "", - "links": [] + "description": "Cloudflare Vectorize allows you to store and query high-dimensional vectors, often used in machine learning for tasks like similarity search and recommendation engines. By using Vectorize with Workers AI, you can build applications that perform real-time AI-powered searches and recommendations directly on Cloudflare's edge network.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Vector Database - Cloudflare Docs", + "url": "https://developers.cloudflare.com/vectorize/reference/what-is-a-vector-database/", + "type": "article" + }, + { + "title": "Cloudflare Vectorize", + "url": "https://developers.cloudflare.com/vectorize/", + "type": "article" + } + ] }, "pg3GtykCegK411DYDN8sN": { "title": "Similarity Search", - "description": "", - "links": [] + "description": "Cloudflare offers Vectorize, a vector database, which enables similarity search. You can embed data (text, images, audio) as vectors and then use Vectorize to find the most similar vectors based on a query vector. This is used for recommendation systems, content discovery, and other applications where finding similar items is important.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "seemueller-io/hyphalbase", + "url": "https://github.com/seemueller-io/hyphalbase", + "type": "opensource" + }, + { + "title": "Cloudflare Vectorize - Cloudflare", + "url": "https://developers.cloudflare.com/vectorize/", + "type": "article" + } + ] }, "Ep9_oV_YnkbH1gHM-n3gO": { "title": "AI-powered Search", - "description": "", - "links": [] + "description": "You can build AI-powered search using Cloudflare Workers, Workers AI, and Vectorize.\n\n1. **Embed Data:** Use Workers AI to create vector embeddings of your data (e.g., text, images).\n2. **Store Embeddings:** Store these embeddings in Vectorize.\n3. **Search:** When a user searches, embed the search query using Workers AI and then use Vectorize to find the most similar embeddings in your database.\n4. **Return Results:** Return the corresponding data items as search results.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare + AI", + "url": "https://ai.cloudflare.com/", + "type": "article" + }, + { + "title": "Cloudflare Agents", + "url": "https://developers.cloudflare.com/agents/", + "type": "article" + }, + { + "title": "How to use Cloudflare Workers AI for building an AI-powered Search", + "url": "https://dev.to/charlestehio/how-to-use-cloudflare-workers-ai-for-building-an-ai-powered-search-bar-51jn", + "type": "article" + } + ] }, "LoT3NtpNj9uAgQRV-MD_E": { "title": "Stream", - "description": "", - "links": [] + "description": "Cloudflare Stream is a video streaming platform that makes it easy to upload, encode, and deliver videos globally. It handles all the complexities of video streaming, including encoding for different devices and network conditions, providing a reliable and high-quality viewing experience. Stream integrates seamlessly with Cloudflare's CDN, ensuring fast and efficient video delivery to users around the world.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare Stream - Cloudflare Documentation", + "url": "https://www.cloudflare.com/developer-platform/products/cloudflare-stream/", + "type": "article" + }, + { + "title": "Cloudflare Stream - Cloudflare Blog", + "url": "https://blog.cloudflare.com/tag/cloudflare-stream/", + "type": "article" + } + ] }, "zQp7XfDKWJgMf2LexRJhN": { "title": "Video Delivery", - "description": "", - "links": [] + "description": "Cloudflare Stream provides a comprehensive solution for video delivery:\n\n* **Encoding:** Automatically encodes videos for different devices and bandwidths.\n* **Storage:** Stores your videos securely.\n* **CDN:** Delivers videos globally via Cloudflare's CDN for fast playback.\n* **Player:** Provides a customizable video player.\n\nThis simplifies the process of delivering high-quality video experiences.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Delivering Videos with Cloudflare", + "url": "https://developers.cloudflare.com/support/more-dashboard-apps/cloudflare-stream/delivering-videos-with-cloudflare/", + "type": "article" + }, + { + "title": "Stream Delivery - Cloudflare Stream", + "url": "https://www.cloudflare.com/application-services/solutions/stream-delivery/", + "type": "article" + }, + { + "title": "Cloudflare Stream - Cloudflare", + "url": "https://www.cloudflare.com/developer-platform/products/cloudflare-stream/", + "type": "article" + } + ] }, "RiQSPAV9uRFgwQFJckTFV": { "title": "Live streaming", - "description": "", - "links": [] + "description": "Cloudflare Stream supports live streaming. You can use tools like OBS Studio or Wirecast to stream video to Cloudflare, and Stream will handle the encoding, distribution, and playback. This allows you to easily broadcast live events to a global audience.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare Stream", + "url": "https://www.cloudflare.com/developer-platform/products/cloudflare-stream/", + "type": "article" + }, + { + "title": "Serverless Live Streaming with Cloudflare Stream", + "url": "https://blog.cloudflare.com/stream-live/", + "type": "article" + } + ] }, "3B6Z7F0D3Sf8ZBlV3kkGx": { "title": "Video Processing", - "description": "", - "links": [] + "description": "Cloudflare offers video processing capabilities through Stream and Workers:\n\n* **Stream:** Handles encoding, transcoding, and adaptive bitrate streaming automatically.\n* **Workers:** You can use Workers to intercept video requests and perform custom processing, such as adding watermarks or modifying metadata.\n\nThis allows you to customize your video delivery pipeline.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare Stream - Cloudflare", + "url": "https://www.cloudflare.com/developer-platform/products/cloudflare-stream/", + "type": "article" + }, + { + "title": "VOD Platform | Video-on-demand Streaming Software", + "url": "https://www.cloudflare.com/developer-platform/solutions/video-on-demand/", + "type": "article" + } + ] }, "8bOWuopxHtBWUSFaVT54P": { "title": "Images", - "description": "", - "links": [] + "description": "Cloudflare Images provides comprehensive image optimization and delivery services. It automatically resizes, converts, and optimizes images for different devices and browsers, improving website performance and reducing bandwidth usage. You can also use Cloudflare Images to store and serve images directly, eliminating the need for a separate image hosting service.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Images · Cloudflare Docs", + "url": "https://developers.cloudflare.com/images/", + "type": "article" + }, + { + "title": "Get Started with Cloudflare Images", + "url": "https://developers.cloudflare.com/images/get-started/", + "type": "article" + } + ] }, "vHQdMgaL2EEr2o_eJmOuV": { "title": "Calls", - "description": "", - "links": [] + "description": "Cloudflare Calls is a platform for building real-time audio and video applications directly on Cloudflare's edge network. It provides the infrastructure and APIs you need to create interactive experiences like video conferencing, live streaming, and voice chat, with low latency and global reach.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare Calls", + "url": "https://developers.cloudflare.com/calls/", + "type": "article" + }, + { + "title": "Introduction · Cloudflare Calls", + "url": "https://developers.cloudflare.com/calls/introduction/", + "type": "article" + } + ] }, "aKEH4ZxI6J1nwjp_AgH5r": { "title": "Logging and Monitoring", - "description": "", - "links": [] + "description": "Effective logging and monitoring are crucial for understanding and debugging Cloudflare Workers. You can use `console.log` for basic logging during development. For production, consider using a dedicated logging service to collect and analyze logs from your Workers. Cloudflare provides metrics like request counts, CPU usage, and error rates that can be monitored in the Cloudflare dashboard. Setting up alerts based on these metrics helps you identify and address issues quickly.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Logging vs Monitoring: What's the Difference?", + "url": "https://toxigon.com/logging-vs-monitoring-whats-the-difference", + "type": "article" + }, + { + "title": "Debugging and Logging · Cloudflare Pages", + "url": "https://developers.cloudflare.com/pages/functions/debugging-and-logging/", + "type": "article" + } + ] }, "z-1Ye5hcNdr9r6Gwdw7mv": { "title": "Email Workers", - "description": "", - "links": [] + "description": "Email Workers allow you to intercept and modify email traffic passing through Cloudflare's email routing service. You can use Email Workers to perform tasks like spam filtering, email authentication, and custom email processing logic, giving you greater control over your email flow.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Email Workers · Cloudflare Email Routing", + "url": "https://developers.cloudflare.com/email-routing/email-workers/", + "type": "article" + }, + { + "title": "Route to Workers, Automate Your Email Processing", + "url": "https://blog.cloudflare.com/announcing-route-to-workers/", + "type": "article" + }, + { + "title": "Implementing an Email Delivery Service with Cloudflare Workers", + "url": "https://medium.com/@georgechmr/implementing-an-email-delivery-service-with-cloudflare-workers-c141422109d0", + "type": "article" + } + ] }, "-lsYPD6JueIV94RybGH_Y": { "title": "Routing", - "description": "", - "links": [] + "description": "In Cloudflare Email Workers, routing refers to directing incoming emails to the appropriate destination or processing logic. Email Workers intercept emails and use defined rules to determine their fate. You can route emails based on sender, recipient, subject, or other criteria. This allows you to forward emails, trigger custom logic, or even discard unwanted messages. Effective routing is critical for managing email flow, implementing custom email workflows, and building applications that react to incoming email.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Email Workers · Cloudflare Email Routing", + "url": "https://developers.cloudflare.com/email-routing/email-workers/", + "type": "article" + } + ] }, "6bNUqx5f_w5NuDL25BABN": { "title": "Processing", - "description": "", - "links": [] + "description": "With Cloudflare Email Workers, processing involves manipulating or analyzing incoming email content. After an email is routed to your worker, you can access and modify various aspects of the email, such as headers, body, and attachments. Processing can include tasks like:\n\n* **Content Modification:** Altering the email body, adding disclaimers, or translating content.\n* **Data Extraction:** Parsing information from the email to use in other applications.\n* **Spam Filtering:** Implementing custom spam detection logic.\n* **Attachment Handling:** Processing or storing attachments.\n\nEmail Workers provide the flexibility to customize how emails are handled, enabling a wide range of email-based applications and integrations.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Email Workers · Cloudflare Email Routing", + "url": "https://developers.cloudflare.com/email-routing/email-workers/", + "type": "article" + }, + { + "title": "Email Workers Routing - Runtime API", + "url": "https://developers.cloudflare.com/email-routing/email-workers/runtime-api/", + "type": "article" + } + ] }, "kdIfqTCcOSvV4KDpjr7nu": { "title": "Filtering", - "description": "", - "links": [] + "description": "In Cloudflare Email Workers, filtering is the process of selectively acting on emails based on specific criteria. It allows you to define rules that determine which emails your worker will process and how. Filtering can be based on various email attributes, including:\n\n* **Sender/Recipient:** Matching specific email addresses or domains.\n* **Subject Line:** Looking for keywords or patterns in the subject.\n* **Headers:** Examining specific header values.\n* **Content:** Analyzing the email body for certain keywords.\n\nBy implementing filtering, you can ensure that your worker only processes relevant emails, optimizing performance and preventing unintended actions on unrelated messages.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Email Workers · Cloudflare Email Routing", + "url": "https://developers.cloudflare.com/email-routing/email-workers/", + "type": "article" + }, + { + "title": "Implementing an Email Delivery Service with Cloudflare Workers", + "url": "https://medium.com/@georgechmr/implementing-an-email-delivery-service-with-cloudflare-workers-c141422109d0", + "type": "article" + } + ] }, "vu8yJsS1WccsdcEVUqwNd": { "title": "AI Gateway", - "description": "", - "links": [] + "description": "Cloudflare's AI Gateway acts as a central point for managing and optimizing your AI workloads. It provides features like caching, rate limiting, and observability for AI requests, helping you improve performance, reduce costs, and gain insights into how your AI models are being used.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare + AI", + "url": "https://ai.cloudflare.com/", + "type": "article" + }, + { + "title": "Cloudflare AI Gateway", + "url": "https://www.cloudflare.com/developer-platform/products/ai-gateway/", + "type": "article" + } + ] }, "qkFRW_tJB8_1IYpYskQ5M": { "title": "Browser Rendering", - "description": "", - "links": [] + "description": "Cloudflare Browser Rendering allows you to render web pages in a headless browser environment on Cloudflare's edge network. This is useful for tasks like generating PDFs, taking screenshots, or pre-rendering content for SEO purposes. By performing browser rendering at the edge, you can offload processing from your origin server and improve performance for certain types of web applications.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Browser Rendering", + "url": "https://developers.cloudflare.com/browser-rendering/", + "type": "article" + }, + { + "title": "Browser Rendering API - Blog", + "url": "https://blog.cloudflare.com/browser-rendering-api-ga-rolling-out-cloudflare-snippets-swr-and-bringing-workers-for-platforms-to-our-paygo-plans/", + "type": "article" + } + ] }, "76xovsBrKOnlRBVjsqNq1": { "title": "Security & Performance", - "description": "", - "links": [] + "description": "Cloudflare significantly enhances both security and performance through its global network. It provides robust protection against DDoS attacks, bot traffic, and other web threats, while also accelerating website loading times via its CDN and caching mechanisms. By terminating SSL/TLS connections at the edge and optimizing content delivery, Cloudflare ensures a secure and fast experience for users, reducing latency and improving overall website resilience.\n\n**Security:** Cloudflare Email Workers can enhance email security by:\n\n* **Spam and Phishing Detection:** Implementing custom filters to identify and block malicious emails before they reach the recipient.\n* **Content Sanitization:** Removing potentially harmful content from emails, such as malicious scripts or links.\n* **Authentication:** Verifying sender authenticity to prevent spoofing and phishing attacks.\n* **Data Loss Prevention (DLP):** Preventing sensitive information from being sent via email.\n\n**Performance:** Email Workers impact performance by:\n\n* **Reduced Latency:** Processing emails closer to the user, minimizing delays.\n* **Scalability:** Handling large volumes of email traffic without performance degradation.\n* **Custom Routing:** Efficiently directing emails to the appropriate destination.\n* **Optimized Processing:** Performing lightweight email processing tasks to avoid bottlenecks.\n\nEffectively leveraging Email Workers for security and performance requires careful planning and implementation of relevant filters, rules, and processing logic.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Application Security & Performance Solutions - Cloudflare", + "url": "https://www.cloudflare.com/application-services/solutions/", + "type": "article" + }, + { + "title": "Cloudflare Security Architecture", + "url": "https://developers.cloudflare.com/reference-architecture/architectures/security/", + "type": "article" + } + ] }, "8IF7jftushwZrn7JXpC_v": { "title": "Workers Security Model", - "description": "", - "links": [] + "description": "Cloudflare Workers operate within a secure, isolated environment. The Workers runtime enforces strict security boundaries, preventing Workers from accessing sensitive data or interfering with other processes. Workers have limited access to the outside world and must explicitly request resources. Cloudflare's global network provides inherent DDoS protection and mitigates common web vulnerabilities. This secure execution environment ensures that Workers can safely process requests without compromising the overall security of the platform.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Security Model · Cloudflare", + "url": "https://developers.cloudflare.com/workers/reference/security-model/", + "type": "article" + }, + { + "title": "Workers RPC — Visibility and Security Model - Cloudflare Docs", + "url": "https://developers.cloudflare.com/workers/runtime-apis/rpc/visibility/", + "type": "article" + } + ] }, "uNinrB9wm5ahjGXu5fc0g": { "title": "Isolates Architecture", - "description": "", - "links": [] + "description": "Cloudflare's isolated architecture for Workers relies on lightweight V8 isolates. Each Worker runs in its own isolate, providing strong isolation from other Workers and the underlying infrastructure. Isolates start quickly and consume minimal resources, enabling rapid scaling. This architecture prevents code from one Worker from impacting others, enhancing security and stability. The isolation ensures that even if a Worker contains vulnerabilities, it cannot compromise the entire Cloudflare network or other customers' applications.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Reference Architectures · Cloudflare Reference Architecture", + "url": "https://developers.cloudflare.com/reference-architecture/", + "type": "article" + }, + { + "title": "Cloudflare Security Architecture", + "url": "https://developers.cloudflare.com/reference-architecture/architectures/security/", + "type": "article" + } + ] }, "KWix4jeNUKJ07Iu95Mqj_": { "title": "Web Security Headers", - "description": "", - "links": [] + "description": "Web security headers are HTTP response headers that enhance website security. Cloudflare allows you to easily configure these headers to protect against common attacks. Key headers include:\n\n* **Content Security Policy (CSP):** Controls resources the browser can load.\n* **Strict-Transport-Security (HSTS):** Enforces HTTPS connections.\n* **X-Frame-Options:** Prevents clickjacking attacks.\n* **X-XSS-Protection:** Enables XSS filtering in browsers.\n* **Referrer-Policy:** Controls referrer information sent with requests.\n\nCloudflare simplifies setting these headers, improving website security with minimal effort.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Configure HTTP Headers - Cloudflare", + "url": "https://developers.cloudflare.com/fundamentals/reference/http-headers/", + "type": "article" + }, + { + "title": "Quick Reference to Security Headers", + "url": "https://web.dev/articles/security-headers", + "type": "article" + } + ] }, "JP5U6c2fZjtkU-Xzwtapx": { "title": "Rate Limiting", - "description": "", - "links": [] + "description": "Cloudflare Queues can be used to implement rate limiting. Instead of directly processing every request, you can enqueue them. A consumer Worker then processes messages from the queue at a controlled rate. This prevents your backend systems from being overwhelmed by sudden spikes in traffic. You can adjust the consumer's processing rate to match the capacity of your backend services.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare Queues - Queues & Rate Limits", + "url": "https://developers.cloudflare.com/queues/tutorials/handle-rate-limits/", + "type": "article" + }, + { + "title": "Rate Limiting Best Practices - Cloudflare Docs", + "url": "https://developers.cloudflare.com/waf/rate-limiting-rules/best-practices/", + "type": "article" + } + ] }, "ui3pUfsGMxv4WRzHkgbF0": { "title": "Cache API", - "description": "", - "links": [] + "description": "Cloudflare's Cache API allows Workers to programmatically control caching behavior. You can store responses in Cloudflare's global cache and retrieve them later, reducing origin server load and improving performance. The Cache API offers fine-grained control over cache keys, expiration, and other parameters. This enables you to cache dynamic content, personalize responses, and optimize content delivery for specific users or devices. The Cache API is a powerful tool for building highly performant and scalable applications on Cloudflare.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare API Cache · Cloudflare", + "url": "https://developers.cloudflare.com/api-next/resources/cache//", + "type": "article" + } + ] }, "INiqdtppBmCthOEXuHb-V": { "title": "HTML Rewriting", - "description": "", - "links": [] + "description": "HTML rewriting with Cloudflare Workers enables you to modify HTML content on the fly. You can use Workers to parse HTML, manipulate elements, and inject new content. Common use cases include:\n\n* A/B testing: Dynamically changing content for different users.\n* Personalization: Tailoring the HTML based on user characteristics.\n* Content injection: Adding analytics scripts or ads.\n* Security enhancements: Removing potentially harmful code.\n\nHTML rewriting allows you to customize the user experience and optimize your website without modifying the origin server.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "HTMLRewriter · Cloudflare Workers", + "url": "https://developers.cloudflare.com/workers/runtime-apis/html-rewriter/", + "type": "article" + }, + { + "title": "Introducing the HTMLRewriter API to Cloudflare Workers", + "url": "https://blog.cloudflare.com/introducing-htmlrewriter/", + "type": "article" + } + ] }, "sXBxaQtwJ-luGVXdqVXk1": { "title": "Edge SSL/TLS", - "description": "", - "links": [] + "description": "Cloudflare's Edge SSL/TLS terminates SSL/TLS connections at Cloudflare's edge network, close to the user. This reduces latency and improves performance compared to terminating connections at the origin server. Cloudflare offers various SSL/TLS options, including:\n\n* **Universal SSL:** Free SSL certificates for all Cloudflare users.\n* **Dedicated SSL:** Custom SSL certificates for specific domains.\n* **Origin CA:** Free certificates for securing communication between Cloudflare and your origin.\n\nEdge SSL/TLS ensures secure communication between users and your website while optimizing performance.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Get Started with SSL/TLS - Cloudflare Docs", + "url": "https://developers.cloudflare.com/ssl/get-started/", + "type": "article" + }, + { + "title": "Edge Certificates · Cloudflare SSL/TLS", + "url": "https://developers.cloudflare.com/ssl/edge-certificates/", + "type": "article" + } + ] }, "So-cKAVfbgsw2zzFREu7Q": { "title": "Bot Management", - "description": "", - "links": [] + "description": "Cloudflare Bot Management identifies and mitigates malicious bot traffic. It uses machine learning and behavioral analysis to distinguish between human and bot activity. Cloudflare can block, challenge, or allow bot traffic based on its behavior and characteristics. This helps prevent - Credential stuffing, Content scraping, Spam submissions, DDoS attacks. Effective bot management improves website performance, security, and resource utilization.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare Bot Management & Protection", + "url": "https://www.cloudflare.com/application-services/products/bot-management/", + "type": "article" + }, + { + "title": "What is Bot Management? | How Bot Managers work?", + "url": "https://www.cloudflare.com/learning/bots/what-is-bot-management/", + "type": "article" + } + ] }, "wvurOKbemF4Tt2WZcmqDL": { "title": "Integration & Workflows", - "description": "", - "links": [] + "description": "Workflows refers to the automated processes you can create to manage and respond to various events or conditions. This often involves chaining together different Cloudflare features and potentially integrating with external services. Workflows enable you to automate tasks such as:\n\n* Responding to security threats\n* Optimizing website performance\n* Managing user access\n* Enforcing compliance policies\n\nCloudflare's strength lies in its ability to integrate various services and create automated workflows. You can connect Cloudflare with external platforms using webhooks or APIs. Workflows can automate tasks like responding to security events, optimizing performance based on real-time data, or managing user access. By integrating different components, you can build complex and efficient systems that leverage Cloudflare's global network.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "CI/CD · Cloudflare Workers", + "url": "https://developers.cloudflare.com/workers/ci-cd/", + "type": "article" + }, + { + "title": "Cloudflare Workflows", + "url": "https://developers.cloudflare.com/workflows/", + "type": "article" + }, + { + "title": "Workers Builds: Integrated CI/CD built on the Workers platform", + "url": "https://blog.cloudflare.com/workers-builds-integrated-ci-cd-built-on-the-workers-platform/", + "type": "article" + } + ] }, "SaHqm7T4FFVrsgyfImo66": { "title": "Pages Functions", - "description": "", - "links": [] + "description": "Pages Functions, (now part of Cloudflare Functions), allow you to run serverless code directly within your Cloudflare Pages projects. This lets you add dynamic functionality, like form handling or API endpoints, to your otherwise static sites. They're deployed alongside your static assets and execute on Cloudflare's edge network, ensuring low latency and high performance.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Functions · Cloudflare Pages", + "url": "https://developers.cloudflare.com/pages/functions/", + "type": "article" + } + ] }, "JfpVexcbuWCx_R3EjFmbo": { "title": "Service Bindings", - "description": "", - "links": [] + "description": "Service Bindings allow Cloudflare Workers to seamlessly integrate with other Cloudflare services. They provide a secure and efficient way for a Worker to access resources like KV storage, Durable Objects, R2 storage, and other Workers. Instead of using API keys or direct network calls, Service Bindings create a direct connection between your Worker and the bound service, simplifying configuration and improving performance. They're essential for building complex applications that leverage the full power of the Cloudflare ecosystem.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Service Bindings · Cloudflare", + "url": "https://developers.cloudflare.com/workers/platform/service-bindings/", + "type": "article" + } + ] }, "jYAUIKozuhsNK5LbkeAJ6": { "title": "Inter Worker Communication", - "description": "", - "links": [] + "description": "Inter-Worker communication enables different Cloudflare Workers to interact and share data. This can be achieved through:\n\n* **Durable Objects:** Workers can share persistent data and coordinate state using Durable Objects.\n* **KV Storage:** Workers can read and write data to a shared KV namespace.\n* **Webhooks:** One Worker can trigger another by sending a webhook request.\n\nThese methods allow you to build complex applications where different Workers handle specific tasks and collaborate to achieve a common goal.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "How Workers for Platforms works - Cloudflare Docs", + "url": "https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/reference/how-workers-for-platforms-works/", + "type": "article" + }, + { + "title": "Cooperation between Cloudflare Workers", + "url": "https://dev.to/chimame/cooperation-between-cloudflare-workers-has-become-amazing-thanks-to-rpc-support-4co9", + "type": "article" + } + ] }, "4g5w6IAdzefdlRTxbRbdS": { "title": "External API Integration", - "description": "", - "links": [] + "description": "Cloudflare Workers can integrate with external APIs to enrich functionality. You can use fetch() within a Worker to make requests to third-party services. This enables you to:\n\n* Retrieve data from external sources.\n* Send data to external systems.\n* Authenticate with external services using API keys or tokens.\n\nIntegrating with external APIs allows you to build powerful applications that leverage the capabilities of other platforms.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "APIs · Cloudflare Workers", + "url": "https://developers.cloudflare.com/workers/configuration/integrations/apis/", + "type": "article" + }, + { + "title": "External Services · Cloudflare Workers", + "url": "https://developers.cloudflare.com/workers/configuration/integrations/external-services/", + "type": "article" + } + ] }, "uOUjI6CPrhZIlz6mRCtOW": { "title": "Webhook Handling", - "description": "", - "links": [] + "description": "Cloudflare can handle webhooks to trigger actions based on external events. You can configure Cloudflare Workers to receive webhook requests and process the data. This allows you to integrate Cloudflare with other services like GitHub, Slack, or monitoring tools. When an event occurs in the external service, it sends a webhook to your Cloudflare Worker, which can then perform actions such as updating DNS records, purging the cache, or sending notifications.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Configure Webhooks - Cloudflare", + "url": "https://developers.cloudflare.com/notifications/get-started/configure-webhooks/", + "type": "article" + } + ] }, "Z9Yywlf7rXFBtxTq5B2Y5": { "title": "Event-driven Architectures", - "description": "", - "links": [] + "description": "Cloudflare Workers are well-suited for event-driven architectures. You can trigger Workers based on various events, such as:\n\n* Incoming HTTP requests\n* Scheduled tasks (using Cron Triggers)\n* Webhooks from external services\n\nThis allows you to build reactive systems that respond to events in real-time. Workers can process events and trigger other actions, creating a chain reaction that automates complex tasks.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "What Is Event-Driven Architecture? - IBM", + "url": "https://www.ibm.com/think/topics/event-driven-architecture", + "type": "article" + } + ] }, "gsCRhwwjXuyueaYHSPOVZ": { "title": "Development Tools", - "description": "", + "description": "* **Wrangler:** The command-line interface (CLI) is your primary tool for interacting with Cloudflare Workers. It handles project creation, local testing, deployment, secret management, and more. Wrangler simplifies the entire development lifecycle.\n* **Miniflare:** This local simulator replicates the Cloudflare Workers environment on your machine. It supports features like KV storage, Durable Objects, and the Cache API, enabling offline development and testing.\n* **Cloudflare Dashboard:** The web interface provides a visual way to manage your Cloudflare account, configure settings, monitor performance, and view analytics. It's useful for managing DNS, security rules, and other global settings.\n* **Workers Playground:** A browser-based environment for experimenting with Workers code. It's ideal for quick prototyping and testing small code snippets without setting up a local development environment.\n* **VS Code Extension:** This extension integrates with Visual Studio Code, providing features like syntax highlighting, code completion, and debugging support for Cloudflare Workers. It enhances the development experience within your preferred IDE.", "links": [] }, "n0vIbHmUZHrF4WjEhYdb8": { "title": "Wrangler", - "description": "", - "links": [] + "description": "Wrangler is the command-line interface (CLI) tool for building, deploying, and managing Cloudflare Workers. It simplifies the development workflow by providing commands for creating new projects, testing Workers locally, deploying code to Cloudflare's edge network, and managing secrets. Wrangler automates many tasks, making it easier to develop and deploy serverless applications on Cloudflare.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Wrangler Documentation", + "url": "https://developers.cloudflare.com/workers/wrangler/", + "type": "article" + }, + { + "title": "Wrangler Commands", + "url": "https://developers.cloudflare.com/workers/wrangler/commands//", + "type": "article" + } + ] }, "vZHBp4S6WaS5sa5rfUOk-": { "title": "Miniflare", - "description": "", - "links": [] + "description": "Miniflare is a simulator for Cloudflare Workers that allows you to test your Workers locally. It mimics the Cloudflare Workers runtime environment, including features like KV storage, Durable Objects, and the Cache API. Miniflare enables rapid iteration and debugging without deploying to Cloudflare's edge network. It's a valuable tool for developing and testing Workers offline or in a controlled environment.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "cloudflare/miniflare", + "url": "https://github.com/cloudflare/miniflare", + "type": "opensource" + }, + { + "title": "Miniflare - Cloudflare Workers", + "url": "https://developers.cloudflare.com/workers/testing/miniflare/", + "type": "article" + } + ] }, "G6YQZUQh_x8Qxm1oBseLQ": { "title": "DevTools", - "description": "", - "links": [] + "description": "While you can't directly use traditional browser DevTools with Cloudflare Workers running on the edge, you can leverage similar debugging principles. Cloudflare offers tools like `wrangler tail` for real-time logging and the ability to inspect request/response headers. Using `console.log` strategically within your Worker code and analyzing the output via `wrangler tail` is the primary way to inspect variables and execution flow, emulating some DevTools functionality.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Chrome DevTools", + "url": "https://developer.chrome.com/docs/devtools", + "type": "article" + }, + { + "title": "Overview | Chrome DevTools | Chrome for Developers", + "url": "https://developer.chrome.com/docs/devtools/overview/", + "type": "article" + }, + { + "title": "Debugging Cloudflare Workers", + "url": "https://developers.cloudflare.com/workers/playground/#devtools", + "type": "article" + } + ] }, "jyWxaMx7_nojt5HsyAv7K": { "title": "Testing Frameworks", - "description": "", - "links": [] + "description": "Testing frameworks are crucial for ensuring Cloudflare Workers function correctly. Popular options include Jest, Mocha, and Chai. These frameworks allow you to write unit tests, integration tests, and end-to-end tests for your Workers. You can simulate Cloudflare's environment and test how your Worker responds to different requests and events. Thorough testing helps identify and fix bugs early in the development process, ensuring the reliability of your Workers.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Testing - Cloudflare Workers Docs", + "url": "https://developers.cloudflare.com/workers/testing/", + "type": "article" + }, + { + "title": "Jest - Delightful JavaScript Testing", + "url": "https://jestjs.io/", + "type": "article" + }, + { + "title": "Vitest - A Fast JavaScript Test Runner", + "url": "https://vitest.dev/", + "type": "article" + } + ] }, "Cy2T8978yUAPGol-yzxv_": { "title": "Monitoring Tools", - "description": "", - "links": [] + "description": "Monitoring tools provide insights into the performance and health of your Cloudflare applications. Cloudflare offers built-in analytics, but you can also integrate with external monitoring services like Datadog, New Relic, or Prometheus. These tools allow you to track metrics such as:\n\n* Request latency\n* Error rates\n* Cache hit ratio\n* Resource usage\n\nBy monitoring these metrics, you can identify performance bottlenecks, detect security threats, and ensure your applications are running smoothly.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Application Performance Monitoring Tools", + "url": "https://www.cloudflare.com/application-services/solutions/app-performance-monitoring/", + "type": "article" + }, + { + "title": "Network Monitoring Tools", + "url": "https://www.cloudflare.com/network-services/solutions/network-monitoring-tools/", + "type": "article" + } + ] }, "TmQC7fTL6b9EsBDYibv4g": { "title": "Debugging Techniques", - "description": "", - "links": [] + "description": "Debugging Cloudflare Workers involves several techniques:\n\n* **Console Logging:** Using `console.log()` to output variables and track code execution.\n* **`wrangler tail`:** Viewing real-time logs from your Worker in the command line.\n* **Source Maps:** Mapping compiled code back to the original source for easier debugging.\n* **Try-Catch Blocks:** Handling errors gracefully and logging relevant information.\n* **Local Testing:** Using `wrangler dev` to test Workers locally before deployment.\n\nThese techniques help identify and resolve issues in your Workers effectively.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Chrome DevTools", + "url": "https://developer.chrome.com/docs/devtools", + "type": "article" + }, + { + "title": "Debugging Cloudflare Workers", + "url": "https://developers.cloudflare.com/workers/playground/#devtools", + "type": "article" + }, + { + "title": "Debugging Cloudflare Workers", + "url": "https://blog.cloudflare.com/debugging-cloudflare-workers/", + "type": "article" + } + ] }, "8WZpSKBHCeYfTEL9tBNKr": { "title": "Tunnels", - "description": "", - "links": [] + "description": "Cloudflare Tunnel creates a secure, outbound-only connection between your origin server and Cloudflare's network, without opening any inbound ports. This protects your origin from direct attacks and simplifies network configuration. You can use Cloudflare Tunnel to securely expose web applications, APIs, and other services to the internet, without compromising security.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Cloudflare Tunnel · Cloudflare Zero Trust", + "url": "https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/", + "type": "article" + }, + { + "title": "Ridiculously easy to use Tunnels - The Cloudflare Blog", + "url": "https://blog.cloudflare.com/ridiculously-easy-to-use-tunnels/", + "type": "article" + } + ] } } \ No newline at end of file diff --git a/public/roadmap-content/computer-science.json b/public/roadmap-content/computer-science.json index b34130194..21c666fdd 100644 --- a/public/roadmap-content/computer-science.json +++ b/public/roadmap-content/computer-science.json @@ -55,12 +55,12 @@ "type": "article" }, { - "title": "Python Website", + "title": "Python", "url": "https://www.python.org/", "type": "article" }, { - "title": "Python Getting Started", + "title": "Getting Started with Python", "url": "https://www.python.org/about/gettingstarted/", "type": "article" }, @@ -182,6 +182,11 @@ "title": "Rust", "description": "Rust is a modern systems programming language focusing on safety, speed, and concurrency. It accomplishes these goals by being memory safe without using garbage collection.\n\nVisit the following resources to learn more:", "links": [ + { + "title": "Visit Dedicated Rust Roadmap", + "url": "https://roadmap.sh/rust", + "type": "article" + }, { "title": "The Rust Programming Language - online book", "url": "https://doc.rust-lang.org/book/", @@ -213,6 +218,11 @@ "title": "C++", "description": "C++ is a powerful general-purpose programming language. It can be used to develop operating systems, browsers, games, and so on. C++ supports different ways of programming like procedural, object-oriented, functional, and so on. This makes C++ powerful as well as flexible.\n\nVisit the following resources to learn more:", "links": [ + { + "title": "C++ Roadmap", + "url": "https://roadmap.sh/cpp", + "type": "article" + }, { "title": "Learn C++", "url": "https://learncpp.com/", @@ -238,11 +248,6 @@ "url": "https://www.w3schools.com/cpp/default.asp", "type": "article" }, - { - "title": "C++ Roadmap", - "url": "https://roadmap.sh/cpp", - "type": "article" - }, { "title": "Explore top posts about C++ Programming", "url": "https://app.daily.dev/tags/c++?ref=roadmapsh", @@ -326,6 +331,11 @@ "url": "https://techdevguide.withgoogle.com/paths/data-structures-and-algorithms/", "type": "course" }, + { + "title": "Visit Dedicated DSA Roadmap", + "url": "https://roadmap.sh/datastructures-and-algorithms", + "type": "article" + }, { "title": "Data Structures and Algorithms", "url": "https://www.javatpoint.com/data-structure-tutorial", @@ -645,6 +655,11 @@ "title": "Complete Binary Tree - Programiz", "url": "https://www.programiz.com/dsa/complete-binary-tree", "type": "article" + }, + { + "title": "Complete Binary Trees", + "url": "https://www.wscubetech.com/resources/dsa/complete-binary-tree", + "type": "article" } ] }, @@ -771,8 +786,14 @@ }, "HZ1kk0TQ13FLC9t13BZl5": { "title": "Adjacency Matrix", - "description": "", - "links": [] + "description": "An adjacency matrix is a square matrix used to represent a finite graph. It is used to represent the connections between vertices in a graph. The matrix is filled with 0s and 1s, where a 1 represents a connection between two vertices and a 0 represents no connection.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Adjacency Matrix", + "url": "https://en.wikipedia.org/wiki/Adjacency_matrix", + "type": "article" + } + ] }, "rTnKJcPniUtqvfOyC88N0": { "title": "Adjacency List", @@ -1017,8 +1038,14 @@ }, "7a6-AnBI-3tAU1dkOvPkx": { "title": "Common Algorithms", - "description": "Here are some common algorithms that you should know. You can find more information about them in the [Algorithms](https://www.khanacademy.org/computing/computer-science/algorithms) section of the Computer Science course.\n\n* Sorting\n* Recursion\n* Searching\n* Cache Algorithms\n* Tree Algorithms\n* Graph Algorithms\n* Greedy Algorithms\n* Backtracking\n* Substring Search\n* Suffix Arrays\n* Dynamic Programming", - "links": [] + "description": "Here are some common algorithms that you should know. You can find more information about them in the Algorithms section of the Computer Science course.\n\n* Sorting\n* Recursion\n* Searching\n* Cache Algorithms\n* Tree Algorithms\n* Graph Algorithms\n* Greedy Algorithms\n* Backtracking\n* Substring Search\n* Suffix Arrays\n* Dynamic Programming\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Top Algorithms and Data Structures", + "url": "https://towardsdatascience.com/top-algorithms-and-data-structures-you-really-need-to-know-ab9a2a91c7b5", + "type": "article" + } + ] }, "0_qNhprnXU3i8koW3XTdD": { "title": "Tail Recursion", @@ -1143,20 +1170,26 @@ "XwyqBK9rgP1MMcJrdIzm5": { "title": "Linear Search", "description": "Linear search is a very simple algorithm that is used to search for a value in an array. It sequentially checks each element of the array until a match is found or until all the elements have been searched.\n\nVisit the following resources to learn more:", - "links": [] + "links": [ + { + "title": "Linear Search", + "url": "https://www.programiz.com/dsa/linear-search", + "type": "article" + } + ] }, "4wGBYFZpcdTt97WTbSazx": { "title": "Bubble Sort", "description": "Bubble sort is a simple sorting algorithm that repeatedly steps through the list, compares adjacent elements and swaps them if they are in the wrong order. The pass through the list is repeated until the list is sorted.\n\nVisit the following resources to learn more:", "links": [ { - "title": "Bubble Sort", - "url": "https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB", - "type": "video" + "title": "Bubble Sort Algorithm", + "url": "https://www.programiz.com/dsa/bubble-sort", + "type": "article" }, { - "title": "Analyzing Bubble Sort", - "url": "https://www.youtube.com/watch?v=ni_zk257Nqo&index=7&list=PL89B61F78B552C1AB", + "title": "Bubble Sort", + "url": "https://www.youtube.com/watch?v=P00xJgWzz2c&index=1&list=PL89B61F78B552C1AB", "type": "video" }, { @@ -1375,7 +1408,13 @@ "Yf5gOIe7oiL19MjEVcpdw": { "title": "Depth First Search", "description": "Depth first search is a graph traversal algorithm that starts at a root node and explores as far as possible along each branch before backtracking.\n\nVisit the following resources to learn more:", - "links": [] + "links": [ + { + "title": "Depth-first Search", + "url": "https://en.wikipedia.org/wiki/Depth-first_search", + "type": "article" + } + ] }, "eY4nK2lPYsrR-a_8y2sao": { "title": "Bellman Ford's Algorithm", @@ -1442,8 +1481,13 @@ }, "aBjBHpq_OajgQjxdCobXD": { "title": "Finding Hamiltonian Paths", - "description": "Hamiltonian paths are paths that visit every node in a graph exactly once. They are named after the famous mathematician [Hamilton](https://en.wikipedia.org/wiki/William_Rowan_Hamilton). Hamiltonian paths are a special case of [Hamiltonian cycles](https://en.wikipedia.org/wiki/Hamiltonian_cycle), which are cycles that visit every node in a graph exactly once.\n\nVisit the following resources to learn more:", + "description": "Hamiltonian paths are paths that visit every node in a graph exactly once. They are named after the famous mathematician Hamilton. Hamiltonian paths are a special case of Hamiltonian cycles, which are cycles that visit every node in a graph exactly once.\n\nVisit the following resources to learn more:", "links": [ + { + "title": "Hamiltonian Cycles", + "url": "https://en.wikipedia.org/wiki/Hamiltonian_cycle", + "type": "article" + }, { "title": "Hamiltonian Path", "url": "https://www.hackerearth.com/practice/algorithms/graphs/hamiltonian-path/tutorial/", @@ -1967,13 +2011,13 @@ "description": "Class Diagrams are used to model the static structure of a system. They are used to show the classes, their attributes, operations (or methods), and the relationships between objects.\n\nVisit the following resources to learn more:", "links": [ { - "title": "UML Class Diagram Tutorial", - "url": "https://www.youtube.com/watch?v=UI6lqHOVHic", - "type": "video" + "title": "Class Diagrams", + "url": "https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-class-diagram-tutorial/", + "type": "article" }, { "title": "UML Class Diagram Tutorial", - "url": "https://www.youtube.com/watch?v=3cmzqZzwNDM&list=PLfoY2ARMh0hC2FcJKP5voAKCpk6PZXSd5&index=2", + "url": "https://www.youtube.com/watch?v=UI6lqHOVHic", "type": "video" } ] @@ -2354,26 +2398,6 @@ "title": "NP Completeness IV", "url": "https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18", "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 23 - NP-Completeness", - "url": "https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 24 - Satisfiability", - "url": "https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 25 - More NP-Completeness", - "url": "https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 26 - NP-Completeness Challenge", - "url": "https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26", - "type": "video" } ] }, @@ -2425,26 +2449,6 @@ "title": "NP Completeness IV", "url": "https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18", "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 23 - NP-Completeness", - "url": "https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 24 - Satisfiability", - "url": "https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 25 - More NP-Completeness", - "url": "https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 26 - NP-Completeness Challenge", - "url": "https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26", - "type": "video" } ] }, @@ -2496,26 +2500,6 @@ "title": "NP Completeness IV", "url": "https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18", "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 23 - NP-Completeness", - "url": "https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 24 - Satisfiability", - "url": "https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 25 - More NP-Completeness", - "url": "https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 26 - NP-Completeness Challenge", - "url": "https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26", - "type": "video" } ] }, @@ -2567,26 +2551,6 @@ "title": "NP Completeness IV", "url": "https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18", "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 23 - NP-Completeness", - "url": "https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 24 - Satisfiability", - "url": "https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 25 - More NP-Completeness", - "url": "https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 26 - NP-Completeness Challenge", - "url": "https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26", - "type": "video" } ] }, @@ -2643,26 +2607,6 @@ "title": "NP Completeness IV", "url": "https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18", "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 23 - NP-Completeness", - "url": "https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 24 - Satisfiability", - "url": "https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 25 - More NP-Completeness", - "url": "https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 26 - NP-Completeness Challenge", - "url": "https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26", - "type": "video" } ] }, @@ -2941,11 +2885,6 @@ "url": "https://www.youtube.com/watch?v=svfnVhJOfMc&index=8&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6", "type": "video" }, - { - "title": "MIT 6.851 - Memory Hierarchy Models", - "url": "https://www.youtube.com/watch?v=V3omVLzI0WE&index=7&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf", - "type": "video" - }, { "title": "B-Trees (playlist) in 26 minutes", "url": "https://www.youtube.com/playlist?list=PL9xmBV_5YoZNFPPv98DjTdD9X6UI9KMHz", @@ -3057,6 +2996,11 @@ "title": "CDN", "description": "A CDN is a network of servers that are distributed geographically. The servers are connected to each other and to the internet. The servers are used to deliver content to users. The content is delivered to the user from the server that is closest to the user. This is done to reduce latency and improve the performance of the content delivery.\n\nVisit the following resources to learn more:", "links": [ + { + "title": "What is a CDN?", + "url": "https://www.cloudflare.com/learning/cdn/what-is-a-cdn/", + "type": "article" + }, { "title": "Content Delivery Network (CDN) - System Design", "url": "https://dev.to/karanpratapsingh/system-design-the-complete-course-10fo#content-delivery-network-cdn", @@ -3163,6 +3107,11 @@ "title": "GraphQL", "description": "GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.\n\nVisit the following resources to learn more:", "links": [ + { + "title": "Visit Dedicated GraphQL Roadmap", + "url": "https://roadmap.sh/graphql", + "type": "article" + }, { "title": "Apollo GraphQL Tutorials", "url": "https://www.apollographql.com/tutorials/", @@ -3227,7 +3176,7 @@ "description": "Long polling is a technique used to implement server push functionality over HTTP. It is a method of opening a request on the server and keeping it open until an event occurs, at which point the server responds. This is in contrast to a regular HTTP request, where the server responds immediately with whatever data is available at the time.\n\nVisit the following resources to learn more:", "links": [ { - "title": "Long polling", + "title": "Long Polling", "url": "https://javascript.info/long-polling", "type": "article" }, @@ -3252,7 +3201,18 @@ "bVjI14VismTHNCyA0mEBP": { "title": "Web Sockets", "description": "Web sockets are a bidirectional communication protocol between a client and a server. They are used for real-time applications like chat, multiplayer games, and live data updates. Web sockets are also used to establish a connection between a server and a client. This connection is then used to send data in both directions.\n\nVisit the following resources to learn more:", - "links": [] + "links": [ + { + "title": "WebSockets", + "url": "https://en.wikipedia.org/wiki/WebSocket", + "type": "article" + }, + { + "title": "Web Sockets API", + "url": "https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API", + "type": "article" + } + ] }, "JckRqZA8C6IqQLPpTCgf4": { "title": "SSE", @@ -3280,12 +3240,12 @@ "description": "A database is a collection of useful data of one or more related organizations structured in a way to make data an asset to the organization. A database management system is a software designed to assist in maintaining and extracting large collections of data in a timely fashion.\n\nVisit the following resources to learn more:", "links": [ { - "title": "Oracle: What is a Database?", + "title": "What is a Database?", "url": "https://www.oracle.com/database/what-is-database/", "type": "article" }, { - "title": "Prisma.io: What are Databases?", + "title": "What are Databases?", "url": "https://www.prisma.io/dataguide/intro/what-are-databases", "type": "article" }, @@ -3362,7 +3322,13 @@ "ii1vF74u3yrFNlw_21b3B": { "title": "DDL", "description": "DDL or Data Definition Language actually consists of the SQL commands that can be used to define the database schema. It simply deals with descriptions of the database schema and is used to create and modify the structure of database objects in the database. DDL is a set of SQL commands used to create, modify, and delete database structures but not data. These commands are normally not used by a general user, who should be accessing the database via an application.\n\nVisit the following resources to learn more:", - "links": [] + "links": [ + { + "title": "DDL", + "url": "https://en.wikipedia.org/wiki/Data_definition_language", + "type": "article" + } + ] }, "tcQSH-eAvJUZuePTDjAIb": { "title": "DML", @@ -3383,12 +3349,29 @@ "05lkb3B86Won7Rkf-8DeD": { "title": "DQL", "description": "DQL statements are used for performing queries on the data within schema objects. The purpose of the DQL Command is to get some schema relation based on the query passed to it. We can define DQL as follows it is a component of SQL statement that allows getting data from the database and imposing order upon it. It includes the SELECT statement. This command allows getting the data out of the database to perform operations with it. When a SELECT is fired against a table or tables the result is compiled into a further temporary table, which is displayed or perhaps received by the program i.e. a front-end.\n\nVisit the following resources to learn more:", - "links": [] + "links": [ + { + "title": "Data Query Language", + "url": "https://en.wikipedia.org/wiki/Data_query_language", + "type": "article" + } + ] }, "4bUmfuP2qgcli8I2Vm9zh": { "title": "DCL", "description": "DCL includes commands such as GRANT and REVOKE which mainly deal with the rights, permissions, and other controls of the database system.\n\nVisit the following resources to learn more:", - "links": [] + "links": [ + { + "title": "DCL", + "url": "https://en.wikipedia.org/wiki/Data_Control_Language", + "type": "article" + }, + { + "title": "DCL Commands", + "url": "https://www.geeksforgeeks.org/sql-ddl-dql-dml-dcl-tcl-commands/", + "type": "article" + } + ] }, "_sm63rZNKoibVndeNgOpW": { "title": "Locking", @@ -3435,7 +3418,13 @@ "q3nRhTYS5wg9tYnQe2sCF": { "title": "BASE", "description": "The rise in popularity of NoSQL databases provided a flexible and fluidity with ease to manipulate data and as a result, a new database model was designed, reflecting these properties. The acronym BASE is slightly more confusing than ACID but however, the words behind it suggest ways in which the BASE model is different and acronym BASE stands for:-\n\n* **B**asically **A**vailable\n* **S**oft state\n* **E**ventual consistency\n\nVisit the following resources to learn more:", - "links": [] + "links": [ + { + "title": "BASE Model vs. ACID Model", + "url": "https://www.geeksforgeeks.org/acid-model-vs-base-model-for-database/", + "type": "article" + } + ] }, "uqfeiQ9K--QkGNwks4kjk": { "title": "CAP Theorem", @@ -3804,7 +3793,7 @@ "description": "Public-key cryptography, or asymmetric cryptography, is the field of cryptographic systems that use pairs of related keys. Each key pair consists of a public key and a corresponding private key. Key pairs are generated with cryptographic algorithms based on mathematical problems termed one-way functions.\n\nVisit the following resources to learn more:", "links": [ { - "title": "Public-key cryptography - Wikipedia", + "title": "Public-key Cryptography", "url": "https://en.wikipedia.org/wiki/Public-key_cryptography", "type": "article" }, @@ -3877,7 +3866,12 @@ "type": "opensource" }, { - "title": "Wikipedia - OWASP", + "title": "OWASP", + "url": "https://owasp.org/", + "type": "article" + }, + { + "title": "OWASP - Wiki", "url": "https://en.wikipedia.org/wiki/OWASP", "type": "article" }, @@ -3926,7 +3920,7 @@ }, "1eglba39q426Nh0E0qcdj": { "title": "How CPU Executes Programs", - "description": "Visit the following resources to learn more:", + "description": "The CPU executes programs by repeatedly fetching instructions from memory, decoding them to understand the operation, and then executing those operations. This cycle, called the fetch-decode-execute cycle, continues for each instruction in the program, with the CPU using registers for temporary storage and a program counter to keep track of the next instruction. Modern CPUs use techniques like pipelining and caches to speed up this process, enabling them to execute complex programs efficiently.\n\nVisit the following resources to learn more:", "links": [ { "title": "Explore top posts about Computing", @@ -3934,7 +3928,7 @@ "type": "article" }, { - "title": "How CPU executes a program", + "title": "How CPU Executes a Program", "url": "https://www.youtube.com/watch?v=XM4lGflQFvA", "type": "video" } @@ -3964,8 +3958,13 @@ }, "AxiGqbteK7ZSXEUt_zckH": { "title": "Instructions and Programs", - "description": "Visit the following resources to learn more:", + "description": "Instructions are the most basic commands a CPU can understand, directing it to perform specific actions like adding numbers or moving data. A program, on the other hand, is a collection of these instructions, organized in a sequence to accomplish a particular task. Think of instructions as individual words and a program as a complete sentence or story; the CPU executes these instructions one by one, following the program's logic, to achieve the desired outcome.\n\nVisit the following resources to learn more:", "links": [ + { + "title": "Instruction and Programs", + "url": "https://nerdfighteria.info/v/zltgXvg6r3k/", + "type": "article" + }, { "title": "Instructions and Programs", "url": "https://youtu.be/zltgXvg6r3k", @@ -3975,8 +3974,13 @@ }, "DjTQjMbika4_yTzrBpcmB": { "title": "CPU Cache", - "description": "Visit the following resources to learn more:", + "description": "A CPU cache is a hardware cache used by the central processing unit of a computer to reduce the average cost to access data from the main memory. A cache is a smaller, faster memory, located closer to a processor core, which stores copies of the data from frequently used main memory locations.\n\nVisit the following resources to learn more:", "links": [ + { + "title": "What is CPU Cache", + "url": "https://www.howtogeek.com/854138/what-is-cpu-cache/", + "type": "article" + }, { "title": "Explore top posts about Computing", "url": "https://app.daily.dev/tags/computing?ref=roadmapsh", @@ -4070,10 +4074,10 @@ }, "xUo5Ox_HTgGyeQMDIkVyK": { "title": "Concurrency in Multiple Cores", - "description": "Visit the following resources to learn more:", + "description": "Concurrency or Parallelism is simultaneous execution of processes on a multiple cores per CPU or multiple CPUs (on a single motherboard). Concurrency is when Parallelism is achieved on a single core/CPU by using scheduling algorithms that divides the CPU's time (time-slice).\n\nVisit the following resources to learn more:", "links": [ { - "title": "What is the difference between multicore and concurrent programming?", + "title": "Difference between Multi-core and concurrent Programming?", "url": "https://stackoverflow.com/questions/5372861/what-is-the-difference-between-multicore-and-concurrent-programming", "type": "article" }, @@ -4081,12 +4085,17 @@ "title": "Concurrency in Multicore systems", "url": "https://cs.stackexchange.com/questions/140793/concurrency-in-multiple-core", "type": "article" + }, + { + "title": "Mastering Concurrency", + "url": "https://www.harrisonclarke.com/blog/mastering-concurrency-a-guide-for-software-engineers", + "type": "article" } ] }, "Ge2nagN86ofa2y-yYR1lv": { "title": "Scheduling Algorithms", - "description": "CPU Scheduling is the process of selecting a process from the ready queue and allocating the CPU to it. The selection of a process is based on a particular scheduling algorithm. The scheduling algorithm is chosen depending on the type of system and the requirements of the processes.\n\nHere is the list of some of the most commonly used scheduling algorithms:\n\n* **First Come First Serve (FCFS):** The process that arrives first is allocated the CPU first. It is a non-preemptive algorithm.\n* **Shortest Job First (SJF):** The process with the smallest execution time is allocated the CPU first. It is a non-preemptive algorithm.\n* **Shortest Remaining Time First (SRTF):** The process with the smallest remaining execution time is allocated the CPU first. It is a preemptive algorithm.\n* **Round Robin (RR):** The process is allocated the CPU for a fixed time slice. The time slice is usually 10 milliseconds. It is a preemptive algorithm.\n* **Priority Scheduling:** The process with the highest priority is allocated the CPU first. It is a preemptive algorithm.\n* **Multi-level Queue Scheduling:** The processes are divided into different queues based on their priority. The process with the highest priority is allocated the CPU first. It is a preemptive algorithm.\n* **Multi-level Feedback Queue Scheduling:** The processes are divided into different queues based on their priority. The process with the highest priority is allocated the CPU first. If a process is preempted, it is moved to the next queue. It is a preemptive algorithm.\n* **Highest Response Ratio Next(HRRN):** CPU is allotted to the next process which has the highest response ratio and not to the process having less burst time. It is a Non-Preemptive algorithm.\n* **Lottery Scheduling:** The process is allocated the CPU based on a lottery system. It is a preemptive algorithm.\n\nVisit the following resources to learn more :", + "description": "CPU Scheduling is the process of selecting a process from the ready queue and allocating the CPU to it. The selection of a process is based on a particular scheduling algorithm. The scheduling algorithm is chosen depending on the type of system and the requirements of the processes.\n\nHere is the list of some of the most commonly used scheduling algorithms:\n\n* **First Come First Serve (FCFS):** The process that arrives first is allocated the CPU first. It is a non-preemptive algorithm.\n* **Shortest Job First (SJF):** The process with the smallest execution time is allocated the CPU first. It is a non-preemptive algorithm.\n* **Shortest Remaining Time First (SRTF):** The process with the smallest remaining execution time is allocated the CPU first. It is a preemptive algorithm.\n* **Round Robin (RR):** The process is allocated the CPU for a fixed time slice. The time slice is usually 10 milliseconds. It is a preemptive algorithm.\n* **Priority Scheduling:** The process with the highest priority is allocated the CPU first. It is a preemptive algorithm.\n* **Multi-level Queue Scheduling:** The processes are divided into different queues based on their priority. The process with the highest priority is allocated the CPU first. It is a preemptive algorithm.\n* **Multi-level Feedback Queue Scheduling:** The processes are divided into different queues based on their priority. The process with the highest priority is allocated the CPU first. If a process is preempted, it is moved to the next queue. It is a preemptive algorithm.\n* **Highest Response Ratio Next(HRRN):** CPU is allotted to the next process which has the highest response ratio and not to the process having less burst time. It is a Non-Preemptive algorithm.\n* **Lottery Scheduling:** The process is allocated the CPU based on a lottery system. It is a preemptive algorithm.\n\nVisit the following resources to learn more", "links": [ { "title": "CPU Scheduling in Operating Systems - geeksforgeeks", @@ -4120,7 +4129,7 @@ "type": "article" }, { - "title": "Video on Interrupts", + "title": "Interrupts", "url": "https://youtu.be/iKlAWIKEyuw", "type": "video" } @@ -4222,26 +4231,6 @@ "title": "NP Completeness IV", "url": "https://www.youtube.com/watch?v=NKLDp3Rch3M&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=18", "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 23 - NP-Completeness", - "url": "https://www.youtube.com/watch?v=ItHp5laE1VE&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=23", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 24 - Satisfiability", - "url": "https://www.youtube.com/watch?v=inaFJeCzGxU&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=24", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 25 - More NP-Completeness", - "url": "https://www.youtube.com/watch?v=B-bhKxjZLlc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=25", - "type": "video" - }, - { - "title": "CSE373 2020 - Lecture 26 - NP-Completeness Challenge", - "url": "https://www.youtube.com/watch?v=_EzetTkG_Cc&list=PLOtl7M3yp-DX6ic0HGT0PUX_wiNmkWkXx&index=26", - "type": "video" } ] }, diff --git a/public/roadmap-content/git-github.json b/public/roadmap-content/git-github.json index eed5fb996..3517c3d1b 100644 --- a/public/roadmap-content/git-github.json +++ b/public/roadmap-content/git-github.json @@ -1440,7 +1440,7 @@ }, "uxqJzQFRcALqatNRIWR0w": { "title": "Unstaged Changes", - "description": "For changes that are not yet staged with `git add`, such as untracked new files or modified existing ones, use `git diff --unified`. This command compares your working directory against the latest committed version of each file. It's a useful tool for reviewing any local modifications before deciding whether to stage them for future commits.", + "description": "For changes that are not yet staged with `git add`, such as untracked new files or modified existing ones , use `git diff`. This command compares your working directory (your current changes) against the staging area (changes already staged with `git add`). It’s a useful tool for reviewing local modifications before deciding whether to stage them for future commits.\n\nThe `--unified` option (or -U) controls the number of context lines shown in the diff output. By default, Git shows 3 lines of context around each change. For example, `git diff --unified=5` will display 5 lines of context around each change, making it easier to understand the surrounding code or content.", "links": [ { "title": "What are unstaged changes in GitHub?",