From 5514773691eedf54fe82b31f2048326fe3ee6456 Mon Sep 17 00:00:00 2001 From: hphuangg <7632721+hphuangg@users.noreply.github.com> Date: Tue, 10 Mar 2026 02:35:09 +0000 Subject: [PATCH] chore: update roadmap content json --- public/roadmap-content/ai-agents.json | 22 +- public/roadmap-content/ai-engineer.json | 1301 ++++++----------- public/roadmap-content/ai-red-teaming.json | 24 +- public/roadmap-content/android.json | 5 + public/roadmap-content/api-design.json | 63 +- public/roadmap-content/backend.json | 899 ++++-------- public/roadmap-content/blockchain.json | 608 ++------ public/roadmap-content/computer-science.json | 26 +- public/roadmap-content/cpp.json | 6 +- public/roadmap-content/data-analyst.json | 99 +- public/roadmap-content/design-system.json | 982 +++++++++++++ public/roadmap-content/devops.json | 99 +- public/roadmap-content/docker.json | 21 +- .../roadmap-content/engineering-manager.json | 35 +- public/roadmap-content/flutter.json | 19 +- public/roadmap-content/frontend.json | 1288 ++++------------ public/roadmap-content/graphql.json | 5 + public/roadmap-content/java.json | 10 + public/roadmap-content/mlops.json | 574 +++++--- public/roadmap-content/python.json | 89 +- public/roadmap-content/qa.json | 78 +- public/roadmap-content/react-native.json | 5 + public/roadmap-content/react.json | 29 +- public/roadmap-content/redis.json | 24 +- public/roadmap-content/rust.json | 10 + .../roadmap-content/software-architect.json | 44 +- public/roadmap-content/spring-boot.json | 29 +- public/roadmap-content/system-design.json | 4 +- 28 files changed, 2763 insertions(+), 3635 deletions(-) create mode 100644 public/roadmap-content/design-system.json diff --git a/public/roadmap-content/ai-agents.json b/public/roadmap-content/ai-agents.json index 319a22ea74d6..57c34cf19bbf 100644 --- a/public/roadmap-content/ai-agents.json +++ b/public/roadmap-content/ai-agents.json @@ -1513,7 +1513,7 @@ ] }, "Ka6VpCEnqABvwiF9vba7t": { - "title": "Langchain", + "title": "LangChain", "description": "LangChain is a Python and JavaScript library that helps you put large language models to work in real products. It gives ready-made parts for common agent tasks such as talking to many tools, keeping short-term memory, and calling an external API when the model needs fresh data. You combine these parts like Lego blocks: pick a model, add a prompt template, chain the steps, then wrap the chain in an “agent” that can choose what step to run next. Built-in connectors link to OpenAI, Hugging Face, vector stores, and SQL databases, so you can search documents or pull company data without writing a lot of glue code. This lets you move fast from idea to working bot, while still letting you swap out parts if your needs change.\n\nVisit the following resources to learn more:", "links": [ { @@ -2065,5 +2065,25 @@ "type": "article" } ] + }, + "agno@PY5WTJgRnXiYeOM6BBUvn.md": { + "title": "Agno", + "description": "", + "links": [] + }, + "langgraph@O53AvUSRB5SI6hhwKxniL.md": { + "title": "LangGraph", + "description": "", + "links": [] + }, + "self-critique-agents@hBW8-z72NcETDn_cearYc.md": { + "title": "Self-critique Agents", + "description": "", + "links": [] + }, + "multi-agents@FjAYD6ZhAuPcS6gbvBBtE.md": { + "title": "Multi-Agents", + "description": "", + "links": [] } } \ No newline at end of file diff --git a/public/roadmap-content/ai-engineer.json b/public/roadmap-content/ai-engineer.json index 27c09d679735..7da981877668 100644 --- a/public/roadmap-content/ai-engineer.json +++ b/public/roadmap-content/ai-engineer.json @@ -1,4 +1,25 @@ { + "v99C5Bml2a6148LCJ9gy9": { + "title": "Hugging Face", + "description": "Hugging Face is a leading AI company and open-source platform that provides tools, models, and libraries for natural language processing (NLP), computer vision, and other machine learning tasks. It is best known for its \"Transformers\" library, which simplifies the use of pre-trained models like BERT, GPT, T5, and CLIP, making them accessible for tasks such as text classification, translation, summarization, and image recognition.\n\nLearn more from the following resources:", + "links": [ + { + "title": "Hugging Face Official Video Course", + "url": "https://www.youtube.com/watch?v=00GKzGyWFEs&list=PLo2EIpI_JMQvWfQndUesu0nPBAtZ9gP1o", + "type": "course" + }, + { + "title": "Hugging Face", + "url": "https://huggingface.co", + "type": "article" + }, + { + "title": "What is Hugging Face? - Machine Learning Hub Explained", + "url": "https://www.youtube.com/watch?v=1AUjKfpRZVo", + "type": "video" + } + ] + }, "_hYN0gEi9BL24nptEtXWU": { "title": "Introduction", "description": "AI Engineering is the process of designing and implementing AI systems using pre-trained models and existing AI tools to solve practical problems. AI Engineers focus on applying AI in real-world scenarios, improving user experiences, and automating tasks, without developing new models from scratch. They work to ensure AI systems are efficient, scalable, and can be seamlessly integrated into business applications, distinguishing their role from AI Researchers and ML Engineers, who concentrate more on creating new models or advancing AI theory.\n\nLearn more from the following resources:", @@ -62,47 +83,15 @@ } ] }, - "wf2BSyUekr1S1q6l8kyq6": { - "title": "LLMs", - "description": "LLMs, or Large Language Models, are advanced AI models trained on vast datasets to understand and generate human-like text. They can perform a wide range of natural language processing tasks, such as text generation, translation, summarization, and question answering. Examples include GPT-4, BERT, and T5. LLMs are capable of understanding context, handling complex queries, and generating coherent responses, making them useful for applications like chatbots, content creation, and automated support. However, they require significant computational resources and may carry biases from their training data.\n\nLearn more from the following resources:", - "links": [ - { - "title": "What is a large language model (LLM)?", - "url": "https://www.cloudflare.com/en-gb/learning/ai/what-is-large-language-model/", - "type": "article" - }, - { - "title": "How Large Language Models Work", - "url": "https://www.youtube.com/watch?v=5sLYAQS9sWQ", - "type": "video" - }, - { - "title": "Large Language Models (LLMs) - Everything You NEED To Know", - "url": "https://www.youtube.com/watch?v=osKyvYJ3PRM", - "type": "video" - } - ] + "large-language-model-llm@wf2BSyUekr1S1q6l8kyq6.md": { + "title": "Large Language Model (LLM)", + "description": "", + "links": [] }, - "KWjD4xEPhOOYS51dvRLd2": { + "inference@4NtUD9V64gkp8SFudj_ai.md": { "title": "Inference", - "description": "In artificial intelligence (AI), inference refers to the process where a trained machine learning model makes predictions or draws conclusions from new, unseen data. Unlike training, inference involves the model applying what it has learned to make decisions without needing examples of the exact result. In essence, inference is the AI model actively functioning. For example, a self-driving car recognizing a stop sign on a road it has never encountered before demonstrates inference. The model identifies the stop sign in a new setting, using its learned knowledge to make a decision in real-time.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Inference vs Training", - "url": "https://www.cloudflare.com/learning/ai/inference-vs-training/", - "type": "article" - }, - { - "title": "What is Machine Learning Inference?", - "url": "https://hazelcast.com/glossary/machine-learning-inference/", - "type": "article" - }, - { - "title": "What is Machine Learning Inference? An Introduction to Inference Approaches", - "url": "https://www.datacamp.com/blog/what-is-machine-learning-inference", - "type": "article" - } - ] + "description": "", + "links": [] }, "xostGgoaYkqMO28iN2gx8": { "title": "Training", @@ -125,100 +114,25 @@ } ] }, - "XyEp6jnBSpCxMGwALnYfT": { - "title": "Embeddings", - "description": "Embeddings are dense, continuous vector representations of data, such as words, sentences, or images, in a lower-dimensional space. They capture the semantic relationships and patterns in the data, where similar items are placed closer together in the vector space. In machine learning, embeddings are used to convert complex data into numerical form that models can process more easily. For example, word embeddings represent words based on their meanings and contexts, allowing models to understand relationships like synonyms or analogies. Embeddings are widely used in tasks like natural language processing, recommendation systems, and image recognition to improve model performance and efficiency.\n\nLearn more from the following resources:", - "links": [ - { - "title": "What are Embeddings in Machine Learning?", - "url": "https://www.cloudflare.com/en-gb/learning/ai/what-are-embeddings/", - "type": "article" - }, - { - "title": "What is Embedding?", - "url": "https://www.ibm.com/topics/embedding", - "type": "article" - }, - { - "title": "What are Word Embeddings", - "url": "https://www.youtube.com/watch?v=wgfSDrqYMJ4", - "type": "video" - } - ] - }, - "LnQ2AatMWpExUHcZhDIPd": { - "title": "Vector Databases", - "description": "Vector databases are specialized systems designed to store, index, and retrieve high-dimensional vectors, often used as embeddings that represent data like text, images, or audio. Unlike traditional databases that handle structured data, vector databases excel at managing unstructured data by enabling fast similarity searches, where vectors are compared to find those that are most similar to a query. This makes them essential for tasks like semantic search, recommendation systems, and content discovery, where understanding relationships between items is crucial. Vector databases use indexing techniques such as approximate nearest neighbor (ANN) search to efficiently handle large datasets, ensuring quick and accurate retrieval even at scale.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Vector Databases", - "url": "https://developers.cloudflare.com/vectorize/reference/what-is-a-vector-database/", - "type": "article" - }, - { - "title": "What are Vector Databases?", - "url": "https://www.mongodb.com/resources/basics/databases/vector-databases", - "type": "article" - } - ] + "vector-dbs@dzPKW_fn82lY1OOVrggk3.md": { + "title": "Vector DBs", + "description": "", + "links": [] }, - "9JwWIK0Z2MK8-6EQQJsCO": { + "rag@IX1BJWGwGmB4L063g0Frf.md": { "title": "RAG", - "description": "Retrieval-Augmented Generation (RAG) is an AI approach that combines information retrieval with language generation to create more accurate, contextually relevant outputs. It works by first retrieving relevant data from a knowledge base or external source, then using a language model to generate a response based on that information. This method enhances the accuracy of generative models by grounding their outputs in real-world data, making RAG ideal for tasks like question answering, summarization, and chatbots that require reliable, up-to-date information.\n\nLearn more from the following resources:", - "links": [ - { - "title": "What is Retrieval Augmented Generation (RAG)? - Datacamp", - "url": "https://www.datacamp.com/blog/what-is-retrieval-augmented-generation-rag", - "type": "article" - }, - { - "title": "What is Retrieval-Augmented Generation? - Google", - "url": "https://cloud.google.com/use-cases/retrieval-augmented-generation", - "type": "article" - }, - { - "title": "What is Retrieval-Augmented Generation? - IBM", - "url": "https://www.youtube.com/watch?v=T-D1OfcDW1M", - "type": "video" - } - ] + "description": "", + "links": [] }, - "Dc15ayFlzqMF24RqIF_-X": { + "prompt-engineering@VjXmSCdzi2ACv-W85Sy9D.md": { "title": "Prompt Engineering", - "description": "Prompt engineering is the process of crafting effective inputs (prompts) to guide AI models, like GPT, to generate desired outputs. It involves strategically designing prompts to optimize the model’s performance by providing clear instructions, context, and examples. Effective prompt engineering can improve the quality, relevance, and accuracy of responses, making it essential for applications like chatbots, content generation, and automated support. By refining prompts, developers can better control the model’s behavior, reduce ambiguity, and achieve more consistent results, enhancing the overall effectiveness of AI-driven systems.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Visit Dedicated Prompt Engineering Roadmap", - "url": "https://roadmap.sh/prompt-engineering", - "type": "article" - }, - { - "title": "What is Prompt Engineering?", - "url": "https://www.youtube.com/watch?v=nf1e-55KKbg", - "type": "video" - } - ] + "description": "", + "links": [] }, - "9XCxilAQ7FRet7lHQr1gE": { + "ai-agents@Uffu609uQbIzDl88Ddccv.md": { "title": "AI Agents", - "description": "In AI engineering, \"agents\" refer to autonomous systems or components that can perceive their environment, make decisions, and take actions to achieve specific goals. Agents often interact with external systems, users, or other agents to carry out complex tasks. They can vary in complexity, from simple rule-based bots to sophisticated AI-powered agents that leverage machine learning models, natural language processing, and reinforcement learning.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Building an AI Agent Tutorial - LangChain", - "url": "https://python.langchain.com/docs/tutorials/agents/", - "type": "article" - }, - { - "title": "AI Agents and Their Types", - "url": "https://play.ht/blog/ai-agents-use-cases/", - "type": "article" - }, - { - "title": "The Complete Guide to Building AI Agents for Beginners", - "url": "https://youtu.be/MOyl58VF2ak?si=-QjRD_5y3iViprJX", - "type": "video" - } - ] + "description": "", + "links": [] }, "5QdihE1lLpMc3DFrGy46M": { "title": "AI vs AGI", @@ -279,181 +193,40 @@ } ] }, - "1Ga6DbOPc6Crz7ilsZMYy": { - "title": "Benefits of Pre-trained Models", - "description": "Pre-trained models offer several benefits in AI engineering by significantly reducing development time and computational resources because these models are trained on large datasets and can be fine-tuned for specific tasks, which enables quicker deployment and better performance with less data. They help overcome the challenge of needing vast amounts of labeled data and computational power for training from scratch. Additionally, pre-trained models often demonstrate improved accuracy, generalization, and robustness across different tasks, making them ideal for applications in natural language processing, computer vision, and other AI domains.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Why Pre-Trained Models Matter For Machine Learning", - "url": "https://www.ahead.com/resources/why-pre-trained-models-matter-for-machine-learning/", - "type": "article" - }, - { - "title": "Why You Should Use Pre-Trained Models Versus Building Your Own", - "url": "https://cohere.com/blog/pre-trained-vs-in-house-nlp-models", - "type": "article" - } - ] - }, - "MXqbQGhNM3xpXlMC2ib_6": { - "title": "Limitations and Considerations", - "description": "Pre-trained models, while powerful, come with several limitations and considerations. They may carry biases present in the training data, leading to unintended or discriminatory outcomes, these models are also typically trained on general data, so they might not perform well on niche or domain-specific tasks without further fine-tuning. Another concern is the \"black-box\" nature of many pre-trained models, which can make their decision-making processes hard to interpret and explain.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Pre-trained Topic Models: Advantages and Limitation", - "url": "https://www.kaggle.com/code/amalsalilan/pretrained-topic-models-advantages-and-limitation", - "type": "article" - }, - { - "title": "Should You Use Open Source Large Language Models?", - "url": "https://www.youtube.com/watch?v=y9k-U9AuDeM", - "type": "video" - } - ] - }, - "2WbVpRLqwi3Oeqk1JPui4": { - "title": "Open AI Models", - "description": "OpenAI provides a variety of models designed for diverse tasks. GPT models like GPT-3 and GPT-4 handle text generation, conversation, and translation, offering context-aware responses, while Codex specializes in generating and debugging code across multiple languages. DALL-E creates images from text descriptions, supporting applications in design and content creation, and Whisper is a speech recognition model that converts spoken language to text for transcription and voice-to-text tasks.\n\nLearn more from the following resources:", - "links": [ - { - "title": "OpenAI Models Overview", - "url": "https://platform.openai.com/docs/models", - "type": "article" - }, - { - "title": "OpenAI’s new “deep-thinking” o1 model crushes coding benchmarks", - "url": "https://www.youtube.com/watch?v=6xlPJiNpCVw", - "type": "video" - } - ] - }, - "vvpYkmycH0_W030E-L12f": { - "title": "Capabilities / Context Length", - "description": "A key aspect of the OpenAI models is their context length, which refers to the amount of input text the model can process at once. Earlier models like GPT-3 had a context length of up to 4,096 tokens (words or word pieces), while more recent models like GPT-4 can handle significantly larger context lengths, some supporting up to 32,768 tokens. This extended context length enables the models to handle more complex tasks, such as maintaining long conversations or processing lengthy documents, which enhances their utility in real-world applications like legal document analysis or code generation.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Managing Context", - "url": "https://platform.openai.com/docs/guides/conversation-state?api-mode=responses#managing-context-for-text-generation", - "type": "article" - }, - { - "title": "Capabilities", - "url": "https://platform.openai.com/docs/guides/text-generation", - "type": "article" - } - ] - }, - "LbB2PeytxRSuU07Bk0KlJ": { - "title": "Cut-off Dates / Knowledge", - "description": "OpenAI models, such as GPT-3.5 and GPT-4, have a knowledge cutoff date, which refers to the last point in time when the model was trained on data. For instance, as of the current version of GPT-4, the knowledge cutoff is October 2023. This means the model does not have awareness or knowledge of events, advancements, or data that occurred after that date. Consequently, the model may lack information on more recent developments, research, or real-time events unless explicitly updated in future versions. This limitation is important to consider when using the models for time-sensitive tasks or inquiries involving recent knowledge.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Knowledge Cutoff Dates of all LLMs explained", - "url": "https://otterly.ai/blog/knowledge-cutoff/", - "type": "article" - }, - { - "title": "Knowledge Cutoff Dates For ChatGPT, Meta Ai, Copilot, Gemini, Claude", - "url": "https://computercity.com/artificial-intelligence/knowledge-cutoff-dates-llms", - "type": "article" - } - ] + "tokens@2WbVpRLqwi3Oeqk1JPui4.md": { + "title": "Tokens", + "description": "", + "links": [] }, - "hy6EyKiNxk1x84J63dhez": { - "title": "Anthropic's Claude", - "description": "Anthropic's Claude is an AI language model designed to facilitate safe and scalable AI systems. Named after Claude Shannon, the father of information theory, Claude focuses on responsible AI use, emphasizing safety, alignment with human intentions, and minimizing harmful outputs. Built as a competitor to models like OpenAI's GPT, Claude is designed to handle natural language tasks such as generating text, answering questions, and supporting conversations, with a strong focus on aligning AI behavior with user goals while maintaining transparency and avoiding harmful biases.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Claude", - "url": "https://claude.ai", - "type": "article" - }, - { - "title": "How To Use Claude Pro For Beginners", - "url": "https://www.youtube.com/watch?v=J3X_JWQkvo8", - "type": "video" - } - ] + "context@vvpYkmycH0_W030E-L12f.md": { + "title": "Context", + "description": "", + "links": [] }, - "oe8E6ZIQWuYvHVbYJHUc1": { - "title": "Google's Gemini", - "description": "Google Gemini is an advanced AI model by Google DeepMind, designed to integrate natural language processing with multimodal capabilities, enabling it to understand and generate not just text but also images, videos, and other data types. It combines generative AI with reasoning skills, making it effective for complex tasks requiring logical analysis and contextual understanding. Built on Google's extensive knowledge base and infrastructure, Gemini aims to offer high accuracy, efficiency, and safety, positioning it as a competitor to models like OpenAI's GPT-4.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Google Gemini", - "url": "https://gemini.google.com/", - "type": "article" - }, - { - "title": "Google's Gemini Documentation", - "url": "https://workspace.google.com/solutions/ai/", - "type": "article" - }, - { - "title": "Welcome to the Gemini era", - "url": "https://www.youtube.com/watch?v=_fuimO6ErKI", - "type": "video" - } - ] + "anthropic-claude@hy6EyKiNxk1x84J63dhez.md": { + "title": "Anthropic Claude", + "description": "", + "links": [] }, - "3PQVZbcr4neNMRr6CuNzS": { - "title": "Azure AI", - "description": "Azure AI is a suite of AI services and tools provided by Microsoft through its Azure cloud platform. It includes pre-built AI models for natural language processing, computer vision, and speech, as well as tools for developing custom machine learning models using services like Azure Machine Learning. Azure AI enables developers to integrate AI capabilities into applications with APIs for tasks like sentiment analysis, image recognition, and language translation. It also supports responsible AI development with features for model monitoring, explainability, and fairness, aiming to make AI accessible, scalable, and secure across industries.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Azure AI", - "url": "https://azure.microsoft.com/en-gb/solutions/ai", - "type": "article" - }, - { - "title": "How to Choose the Right Models for Your Apps", - "url": "https://www.youtube.com/watch?v=sx_uGylH8eg", - "type": "video" - } - ] + "google-gemini@oe8E6ZIQWuYvHVbYJHUc1.md": { + "title": "Google Gemini", + "description": "", + "links": [] }, - "OkYO-aSPiuVYuLXHswBCn": { - "title": "AWS Sagemaker", - "description": "AWS SageMaker is a fully managed machine learning service from Amazon Web Services that enables developers and data scientists to build, train, and deploy machine learning models at scale. It provides an integrated development environment, simplifying the entire ML workflow, from data preparation and model development to training, tuning, and inference. SageMaker supports popular ML frameworks like TensorFlow, PyTorch, and Scikit-learn, and offers features like automated model tuning, model monitoring, and one-click deployment. It's designed to make machine learning more accessible and scalable, even for large enterprise applications.\n\nLearn more from the following resources:", - "links": [ - { - "title": "AWS SageMaker", - "url": "https://aws.amazon.com/sagemaker/", - "type": "article" - }, - { - "title": "Introduction to Amazon SageMaker", - "url": "https://www.youtube.com/watch?v=Qv_Tr_BCFCQ", - "type": "video" - } - ] + "openai-gpt-o-series@3PQVZbcr4neNMRr6CuNzS.md": { + "title": "OpenAI (GPT, o-series)", + "description": "", + "links": [] }, - "8XjkRqHOdyH-DbXHYiBEt": { - "title": "Hugging Face Models", - "description": "Hugging Face models are a collection of pre-trained machine learning models available through the Hugging Face platform, covering a wide range of tasks like natural language processing, computer vision, and audio processing. The platform includes models for tasks such as text classification, translation, summarization, question answering, and more, with popular models like BERT, GPT, T5, and CLIP. Hugging Face provides easy-to-use tools and APIs that allow developers to access, fine-tune, and deploy these models, fostering a collaborative community where users can share, modify, and contribute models to improve AI research and application development.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Hugging Face Models", - "url": "https://huggingface.co/models", - "type": "article" - } - ] + "meta-llama@OkYO-aSPiuVYuLXHswBCn.md": { + "title": "Meta Llama", + "description": "", + "links": [] }, - "n-Ud2dXkqIzK37jlKItN4": { - "title": "Mistral AI", - "description": "Mistral AI is a company focused on developing open-weight, large language models (LLMs) to provide high-performance AI solutions. Mistral aims to create models that are both efficient and versatile, making them suitable for a wide range of natural language processing tasks, including text generation, translation, and summarization. By releasing open-weight models, Mistral promotes transparency and accessibility, allowing developers to customize and deploy AI solutions more flexibly compared to proprietary models.\n\nLearn more from the resources:", - "links": [ - { - "title": "Mistral AI", - "url": "https://mistral.ai/", - "type": "article" - }, - { - "title": "Mistral AI: The Gen AI Start-up you did not know existed", - "url": "https://www.youtube.com/watch?v=vzrRGd18tAg", - "type": "video" - } - ] + "mistral@n-Ud2dXkqIzK37jlKItN4.md": { + "title": "Mistral", + "description": "", + "links": [] }, "a7qsvoauFe5u953I699ps": { "title": "Cohere", @@ -463,148 +236,49 @@ "title": "Cohere", "url": "https://cohere.com/", "type": "article" - }, - { - "title": "What Does Cohere Do?", - "url": "https://medium.com/geekculture/what-does-cohere-do-cdadf6d70435", - "type": "article" - } - ] - }, - "5ShWZl1QUqPwO-NRGN85V": { - "title": "OpenAI Models", - "description": "OpenAI provides a variety of models designed for diverse tasks. GPT models like GPT-3 and GPT-4 handle text generation, conversation, and translation, offering context-aware responses, while Codex specializes in generating and debugging code across multiple languages. DALL-E creates images from text descriptions, supporting applications in design and content creation, and Whisper is a speech recognition model that converts spoken language to text for transcription and voice-to-text tasks.\n\nLearn more from the following resources:", - "links": [ - { - "title": "OpenAI Models Overview", - "url": "https://platform.openai.com/docs/models", - "type": "article" - } - ] - }, - "zdeuA4GbdBl2DwKgiOA4G": { - "title": "OpenAI API", - "description": "The OpenAI API provides access to powerful AI models like GPT, Codex, DALL-E, and Whisper, enabling developers to integrate capabilities such as text generation, code assistance, image creation, and speech recognition into their applications via a simple, scalable interface.\n\nLearn more from the following resources:", - "links": [ - { - "title": "OpenAI API", - "url": "https://openai.com/api/", - "type": "article" - } - ] - }, - "_bPTciEA1GT1JwfXim19z": { - "title": "Chat Completions API", - "description": "The OpenAI Chat Completions API is a powerful interface that allows developers to integrate conversational AI into applications by utilizing models like GPT-3.5 and GPT-4. It is designed to manage multi-turn conversations, keeping context across interactions, making it ideal for chatbots, virtual assistants, and interactive AI systems. With the API, users can structure conversations by providing messages in a specific format, where each message has a role (e.g., \"system\" to guide the model, \"user\" for input, and \"assistant\" for responses).\n\nLearn more from the following resources:", - "links": [ - { - "title": "Create Chat Completions", - "url": "https://platform.openai.com/docs/api-reference/chat/create", - "type": "article" - }, - { - "title": "Getting Start with Chat Completions API", - "url": "https://medium.com/the-ai-archives/getting-started-with-openais-chat-completions-api-in-2024-462aae00bf0a", - "type": "article" - } - ] - }, - "9-5DYeOnKJq9XvEMWP45A": { - "title": "Writing Prompts", - "description": "Prompts for the OpenAI API are carefully crafted inputs designed to guide the language model in generating specific, high-quality content. These prompts can be used to direct the model to create stories, articles, dialogue, or even detailed responses on particular topics. Effective prompts set clear expectations by providing context, specifying the format, or including examples, such as \"Write a short sci-fi story about a future where humans can communicate with animals,\" or \"Generate a detailed summary of the key benefits of using renewable energy.\" Well-designed prompts help ensure that the API produces coherent, relevant, and creative outputs, making it easier to achieve desired results across various applications.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Visit Dedicated Prompt Engineering Roadmap", - "url": "https://roadmap.sh/prompt-engineering", - "type": "article" - }, - { - "title": "How to Write AI prompts", - "url": "https://www.descript.com/blog/article/how-to-write-ai-prompts", - "type": "article" - }, - { - "title": "Prompt Engineering Guide", - "url": "https://www.promptingguide.ai/", - "type": "article" - } - ] - }, - "nyBgEHvUhwF-NANMwkRJW": { - "title": "Open AI Playground", - "description": "The OpenAI Playground is an interactive web interface that allows users to experiment with OpenAI's language models, such as GPT-3 and GPT-4, without needing to write code. It provides a user-friendly environment where you can input prompts, adjust parameters like temperature and token limits, and see how the models generate responses in real-time. The Playground helps users test different use cases, from text generation to question answering, and refine prompts for better outputs. It's a valuable tool for exploring the capabilities of OpenAI models, prototyping ideas, and understanding how the models behave before integrating them into applications.\n\nLearn more from the following resources:", - "links": [ - { - "title": "OpenAI Playground", - "url": "https://platform.openai.com/playground/chat", - "type": "article" - }, - { - "title": "How to Use OpenAi Playground Like a Pro", - "url": "https://www.youtube.com/watch?v=PLxpvtODiqs", - "type": "video" - } - ] - }, - "15XOFdVp0IC-kLYPXUJWh": { - "title": "Fine-tuning", - "description": "Fine-tuning the OpenAI API involves adapting pre-trained models, such as GPT, to specific use cases by training them on custom datasets. This process allows you to refine the model's behavior and improve its performance on specialized tasks, like generating domain-specific text or following particular patterns. By providing labeled examples of the desired input-output pairs, you guide the model to better understand and predict the appropriate responses for your use case.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Fine-tuning Documentation", - "url": "https://platform.openai.com/docs/guides/fine-tuning", - "type": "article" - }, - { - "title": "Fine-tuning ChatGPT with OpenAI Tutorial", - "url": "https://www.youtube.com/watch?v=VVKcSf6r3CM", - "type": "video" - } - ] - }, - "qzvp6YxWDiGakA2mtspfh": { - "title": "Maximum Tokens", - "description": "The OpenAI API has different maximum token limits depending on the model being used. For instance, GPT-3 has a limit of 4,096 tokens, while GPT-4 can support larger inputs, with some versions allowing up to 8,192 tokens, and extended versions reaching up to 32,768 tokens. Tokens include both the input text and the generated output, so longer inputs mean less space for responses. Managing token limits is crucial to ensure the model can handle the entire input and still generate a complete response, especially for tasks involving lengthy documents or multi-turn conversations.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Maximum Tokens", - "url": "https://platform.openai.com/docs/guides/rate-limits", - "type": "article" - }, - { - "title": "The Ins and Outs of GPT Token Limits", - "url": "https://www.supernormal.com/blog/gpt-token-limits", - "type": "article" - } - ] - }, - "FjV3oD7G2Ocq5HhUC17iH": { - "title": "Token Counting", - "description": "Token counting refers to tracking the number of tokens processed during interactions with language models, including both input and output text. Tokens are units of text that can be as short as a single character or as long as a word, and models like GPT process text by splitting it into these tokens. Knowing how many tokens are used is crucial because the API has token limits (e.g., 4,096 for GPT-3 and up to 32,768 for some versions of GPT-4), and costs are typically calculated based on the total number of tokens processed.\n\nLearn more from the following resources:", - "links": [ - { - "title": "OpenAI Tokenizer Tool", - "url": "https://platform.openai.com/tokenizer", - "type": "article" - }, - { - "title": "How to count tokens with Tiktoken", - "url": "https://cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken", - "type": "article" - } - ] - }, - "DZPM9zjCbYYWBPLmQImxQ": { - "title": "Pricing Considerations", - "description": "When using the OpenAI API, pricing considerations depend on factors like the model type, usage volume, and specific features utilized. Different models, such as GPT-3.5, GPT-4, or DALL-E, have varying cost structures based on the complexity of the model and the number of tokens processed (inputs and outputs). For cost efficiency, you should optimize prompt design, monitor usage, and consider rate limits or volume discounts offered by OpenAI for high usage.", - "links": [ + }, { - "title": "OpenAI API Pricing", - "url": "https://openai.com/api/pricing/", + "title": "What Does Cohere Do?", + "url": "https://medium.com/geekculture/what-does-cohere-do-cdadf6d70435", "type": "article" } ] }, + "how-llms-work@zdeuA4GbdBl2DwKgiOA4G.md": { + "title": "How LLMs Work", + "description": "", + "links": [] + }, + "react@Waox7xR_yUeSnOtQFzU4c.md": { + "title": "ReAct", + "description": "", + "links": [] + }, + "cot@nyBgEHvUhwF-NANMwkRJW.md": { + "title": "CoT", + "description": "", + "links": [] + }, + "zero-shot@15XOFdVp0IC-kLYPXUJWh.md": { + "title": "Zero-Shot", + "description": "", + "links": [] + }, + "top-k@qzvp6YxWDiGakA2mtspfh.md": { + "title": "Top-K", + "description": "", + "links": [] + }, + "top-p@FjV3oD7G2Ocq5HhUC17iH.md": { + "title": "Top-P", + "description": "", + "links": [] + }, + "few-shot@DZPM9zjCbYYWBPLmQImxQ.md": { + "title": "Few-Shot", + "description": "", + "links": [] + }, "8ndKHDJgL_gYwaXC7XMer": { "title": "AI Safety and Ethics", "description": "AI safety and ethics involve establishing guidelines and best practices to ensure that artificial intelligence systems are developed, deployed, and used in a manner that prioritizes human well-being, fairness, and transparency. This includes addressing risks such as bias, privacy violations, unintended consequences, and ensuring that AI operates reliably and predictably, even in complex environments. Ethical considerations focus on promoting accountability, avoiding discrimination, and aligning AI systems with human values and societal norms. Frameworks like explainability, human-in-the-loop design, and robust monitoring are often used to build systems that not only achieve technical objectives but also uphold ethical standards and mitigate potential harms.\n\nLearn more from the following resources:", @@ -690,21 +364,10 @@ } ] }, - "ljZLa3yjQpegiZWwtnn_q": { - "title": "OpenAI Moderation API", - "description": "The OpenAI Moderation API helps detect and filter harmful content by analyzing text for issues like hate speech, violence, self-harm, and adult content. It uses machine learning models to identify inappropriate or unsafe language, allowing developers to create safer online environments and maintain community guidelines. The API is designed to be integrated into applications, websites, and platforms, providing real-time content moderation to reduce the spread of harmful or offensive material.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Moderation", - "url": "https://platform.openai.com/docs/guides/moderation", - "type": "article" - }, - { - "title": "How to user the moderation API", - "url": "https://cookbook.openai.com/examples/how_to_use_moderation", - "type": "article" - } - ] + "content-moderation-apis@ljZLa3yjQpegiZWwtnn_q.md": { + "title": "Content Moderation APIs", + "description": "", + "links": [] }, "4Q5x2VCXedAWISBXUIyin": { "title": "Adding end-user IDs in prompts", @@ -760,74 +423,15 @@ } ] }, - "a_3SabylVqzzOyw3tZN5f": { - "title": "OpenSource AI", - "description": "Open-source AI refers to AI models, tools, and frameworks that are freely available for anyone to use, modify, and distribute. Examples include TensorFlow, PyTorch, and models like BERT and Stable Diffusion. Open-source AI fosters transparency, collaboration, and innovation by allowing developers to inspect code, adapt models for specific needs, and contribute improvements. This approach accelerates the development of AI technologies, enabling faster experimentation and reducing dependency on proprietary solutions.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Open Source AI Is the Path Forward", - "url": "https://about.fb.com/news/2024/07/open-source-ai-is-the-path-forward/", - "type": "article" - }, - { - "title": "Should You Use Open Source Large Language Models?", - "url": "https://www.youtube.com/watch?v=y9k-U9AuDeM", - "type": "video" - } - ] - }, - "RBwGsq9DngUsl8PrrCbqx": { - "title": "Open vs Closed Source Models", - "description": "Open-source models are freely available for customization and collaboration, promoting transparency and flexibility, while closed-source models are proprietary, offering ease of use but limiting modification and transparency.\n\nLearn more from the following resources:", - "links": [ - { - "title": "OpenAI vs. Open Source LLM", - "url": "https://ubiops.com/openai-vs-open-source-llm/", - "type": "article" - }, - { - "title": "Open-Source vs Closed-Source LLMs", - "url": "https://www.youtube.com/watch?v=710PDpuLwOc", - "type": "video" - } - ] - }, - "97eu-XxYUH9pYbD_KjAtA": { - "title": "Popular Open Source Models", - "description": "Open-source large language models (LLMs) are models whose source code and architecture are publicly available for use, modification, and distribution. They are built using machine learning algorithms that process and generate human-like text, and being open-source, they promote transparency, innovation, and community collaboration in their development and application.\n\nLearn more from the following resources:", - "links": [ - { - "title": "The Best Large Language Models (LLMs) in 2024", - "url": "https://zapier.com/blog/best-llm/", - "type": "article" - }, - { - "title": "8 Top Open-Source LLMs for 2024 and Their Uses", - "url": "https://www.datacamp.com/blog/top-open-source-llms", - "type": "article" - } - ] + "lm-studio@a_3SabylVqzzOyw3tZN5f.md": { + "title": "LM Studio", + "description": "", + "links": [] }, - "v99C5Bml2a6148LCJ9gy9": { - "title": "Hugging Face", - "description": "Hugging Face is a leading AI company and open-source platform that provides tools, models, and libraries for natural language processing (NLP), computer vision, and other machine learning tasks. It is best known for its \"Transformers\" library, which simplifies the use of pre-trained models like BERT, GPT, T5, and CLIP, making them accessible for tasks such as text classification, translation, summarization, and image recognition.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Hugging Face Official Video Course", - "url": "https://www.youtube.com/watch?v=00GKzGyWFEs&list=PLo2EIpI_JMQvWfQndUesu0nPBAtZ9gP1o", - "type": "course" - }, - { - "title": "Hugging Face", - "url": "https://huggingface.co", - "type": "article" - }, - { - "title": "What is Hugging Face? - Machine Learning Hub Explained", - "url": "https://www.youtube.com/watch?v=1AUjKfpRZVo", - "type": "video" - } - ] + "closed-vs-open-source-models@RBwGsq9DngUsl8PrrCbqx.md": { + "title": "Closed vs Open Source Models", + "description": "", + "links": [] }, "YLOdOvLXa5Fa7_mmuvKEi": { "title": "Hugging Face Hub", @@ -845,42 +449,10 @@ } ] }, - "YKIPOiSj_FNtg0h8uaSMq": { - "title": "Hugging Face Tasks", - "description": "Hugging Face supports text classification, named entity recognition, question answering, summarization, and translation. It also extends to multimodal tasks that involve both text and images, such as visual question answering (VQA) and image-text matching. Each task is done by various pre-trained models that can be easily accessed and fine-tuned through the Hugging Face library.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Task and Model", - "url": "https://huggingface.co/learn/computer-vision-course/en/unit4/multimodal-models/tasks-models-part1", - "type": "article" - }, - { - "title": "Task Summary", - "url": "https://huggingface.co/docs/transformers/v4.14.1/en/task_summary", - "type": "article" - }, - { - "title": "Task Manager", - "url": "https://huggingface.co/docs/optimum/en/exporters/task_manager", - "type": "article" - } - ] - }, - "3kRTzlLNBnXdTsAEXVu_M": { - "title": "Inference SDK", - "description": "The Hugging Face Inference SDK is a powerful tool that allows developers to easily integrate and run inference on large language models hosted on the Hugging Face Hub. By using the `InferenceClient`, users can make API calls to various models for tasks such as text generation, image creation, and more. The SDK supports both synchronous and asynchronous operations thus compatible with existing workflows.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Inference", - "url": "https://huggingface.co/docs/huggingface_hub/en/package_reference/inference_client", - "type": "article" - }, - { - "title": "Endpoint Setup", - "url": "https://www.npmjs.com/package/@huggingface/inference", - "type": "article" - } - ] + "hugging-face-inference-sdk@3kRTzlLNBnXdTsAEXVu_M.md": { + "title": "Hugging Face Inference SDK", + "description": "", + "links": [] }, "bGLrbpxKgENe2xS1eQtdh": { "title": "Transformers.js", @@ -919,42 +491,15 @@ } ] }, - "ro3vY_sp6xMQ-hfzO-rc1": { - "title": "Ollama Models", - "description": "Ollama provides a collection of large language models (LLMs) designed to run locally on personal devices, enabling privacy-focused and efficient AI applications without relying on cloud services. These models can perform tasks like text generation, translation, summarization, and question answering, similar to popular models like GPT. Ollama emphasizes ease of use, offering models that are optimized for lower resource consumption, making it possible to deploy AI capabilities directly on laptops or edge devices.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Ollama Model Library", - "url": "https://ollama.com/library", - "type": "article" - }, - { - "title": "What are the different types of models? Ollama Course", - "url": "https://www.youtube.com/watch?v=f4tXwCNP1Ac", - "type": "video" - } - ] + "openai-response-api@ro3vY_sp6xMQ-hfzO-rc1.md": { + "title": "OpenAI Response API", + "description": "", + "links": [] }, - "TsG_I7FL-cOCSw8gvZH3r": { - "title": "Ollama SDK", - "description": "The Ollama SDK is a community-driven tool that allows developers to integrate and run large language models (LLMs) locally through a simple API. Enabling users to easily import the Ollama provider and create customized instances for various models, such as Llama 2 and Mistral. The SDK supports functionalities like `text generation` and `embeddings`, making it versatile for applications ranging from `chatbots` to `content generation`. Also Ollama SDK enhances privacy and control over data while offering seamless integration with existing workflows.\n\nLearn more from the following resources:", - "links": [ - { - "title": "SDK Provider", - "url": "https://sdk.vercel.ai/providers/community-providers/ollama", - "type": "article" - }, - { - "title": "Beginner's Guide", - "url": "https://dev.to/jayantaadhikary/using-the-ollama-api-to-run-llms-and-generate-responses-locally-18b7", - "type": "article" - }, - { - "title": "Setup", - "url": "https://klu.ai/glossary/ollama", - "type": "article" - } - ] + "google-gemini-api@TsG_I7FL-cOCSw8gvZH3r.md": { + "title": "Google Gemini APi", + "description": "", + "links": [] }, "--ig0Ume_BnXb9K2U7HJN": { "title": "What are Embeddings", @@ -1047,48 +592,20 @@ } ] }, - "y0qD5Kb4Pf-ymIwW-tvhX": { - "title": "Open AI Embedding Models", - "description": "OpenAI's embedding models convert text into dense vector representations that capture semantic meaning, allowing for efficient similarity searches, clustering, and recommendations. These models are commonly used for tasks like semantic search, where similar phrases are mapped to nearby points in a vector space, and for building recommendation systems by comparing embeddings to find related content. OpenAI's embedding models offer versatility, supporting a range of applications from document retrieval to content classification, and can be easily integrated through the OpenAI API for scalable and efficient deployment.\n\nLearn more from the following resources:", - "links": [ - { - "title": "OpenAI Embedding Models", - "url": "https://platform.openai.com/docs/guides/embeddings/embedding-models", - "type": "article" - }, - { - "title": "OpenAI Embeddings Explained in 5 Minutes", - "url": "https://www.youtube.com/watch?v=8kJStTRuMcs", - "type": "video" - } - ] + "cohere@y0qD5Kb4Pf-ymIwW-tvhX.md": { + "title": "Cohere", + "description": "", + "links": [] }, - "4GArjDYipit4SLqKZAWDf": { - "title": "Pricing Considerations", - "description": "The pricing for the OpenAI Embedding API is based on the number of tokens processed and the specific embedding model used. Costs are determined by the total tokens needed to generate embeddings, so longer texts will result in higher charges. To manage costs, developers can optimize by shortening inputs or batching requests. Additionally, selecting the right embedding model for your performance and budget requirements, along with monitoring token usage, can help control expenses.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "OpenAI Pricing", - "url": "https://openai.com/api/pricing/", - "type": "article" - } - ] + "gemini-embedding@4GArjDYipit4SLqKZAWDf.md": { + "title": "Gemini Embedding", + "description": "", + "links": [] }, - "apVYIV4EyejPft25oAvdI": { - "title": "Open-Source Embeddings", - "description": "Open-source embeddings are pre-trained vector representations of data, usually text, that are freely available for use and modification. These embeddings capture semantic meanings, making them useful for tasks like semantic search, text classification, and clustering. Examples include Word2Vec, GloVe, and FastText, which represent words as vectors based on their context in large corpora, and more advanced models like Sentence-BERT and CLIP that provide embeddings for sentences and images. Open-source embeddings allow developers to leverage pre-trained models without starting from scratch, enabling faster development and experimentation in natural language processing and other AI applications.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Embeddings", - "url": "https://platform.openai.com/docs/guides/embeddings", - "type": "article" - }, - { - "title": "A Guide to Open-Source Embedding Models", - "url": "https://www.bentoml.com/blog/a-guide-to-open-source-embedding-models", - "type": "article" - } - ] + "jina@apVYIV4EyejPft25oAvdI.md": { + "title": "Jina", + "description": "", + "links": [] }, "ZV_V6sqOnRodgaw4mzokC": { "title": "Sentence Transformers", @@ -1323,21 +840,10 @@ } ] }, - "lVhWhZGR558O-ljHobxIi": { - "title": "RAG & Implementation", - "description": "Retrieval-Augmented Generation (RAG) combines information retrieval with language generation to produce more accurate, context-aware responses. It uses two components: a retriever, which searches a database to find relevant information, and a generator, which crafts a response based on the retrieved data. Implementing RAG involves using a retrieval model (e.g., embeddings and vector search) alongside a generative language model (like GPT). The process starts by converting a query into embeddings, retrieving relevant documents from a vector database, and feeding them to the language model, which then generates a coherent, informed response. This approach grounds outputs in real-world data, resulting in more reliable and detailed answers.\n\nLearn more from the following resources:", - "links": [ - { - "title": "What is RAG?", - "url": "https://aws.amazon.com/what-is/retrieval-augmented-generation/", - "type": "article" - }, - { - "title": "What is Retrieval-Augmented Generation? IBM", - "url": "https://www.youtube.com/watch?v=T-D1OfcDW1M", - "type": "video" - } - ] + "what-are-rags@lVhWhZGR558O-ljHobxIi.md": { + "title": "What are RAGs?", + "description": "", + "links": [] }, "GCn4LGNEtPI0NWYAZCRE-": { "title": "RAG Usecases", @@ -1428,150 +934,90 @@ "type": "article" }, { - "title": "Retrieval Augmented Generation (RAG) with Vector Databases: Expanding AI Capabilities", - "url": "https://objectbox.io/retrieval-augmented-generation-rag-with-vector-databases-expanding-ai-capabilities/", - "type": "article" - } - ] - }, - "OCGCzHQM2LQyUWmiqe6E0": { - "title": "Retrieval Process", - "description": "The retrieval process in Retrieval-Augmented Generation (RAG) involves finding relevant information from a large dataset or knowledge base to support the generation of accurate, context-aware responses. When a query is received, the system first converts it into a vector (embedding) and uses this vector to search a database of pre-indexed embeddings, identifying the most similar or relevant data points. Techniques like approximate nearest neighbor (ANN) search are often used to speed up this process.\n\nLearn more from the following resources:", - "links": [ - { - "title": "What is Retrieval-Augmented Generation (RAG)?", - "url": "https://cloud.google.com/use-cases/retrieval-augmented-generation", - "type": "article" - }, - { - "title": "What Is Retrieval-Augmented Generation, aka RAG?", - "url": "https://blogs.nvidia.com/blog/what-is-retrieval-augmented-generation/", - "type": "article" - } - ] - }, - "2jJnS9vRYhaS69d6OxrMh": { - "title": "Generation", - "description": "Generation refers to the process where a generative language model, such as GPT, creates a response based on the information retrieved during the retrieval phase. After relevant documents or data snippets are identified using embeddings, they are passed to the generative model, which uses this information to produce coherent, context-aware, and informative responses. The retrieved content helps the model stay grounded and factual, enhancing its ability to answer questions, provide summaries, or engage in dialogue by combining retrieved knowledge with its natural language generation capabilities. This synergy between retrieval and generation makes RAG systems effective for tasks that require detailed, accurate, and contextually relevant outputs.\n\nLearn more from the following resources:", - "links": [ - { - "title": "What is RAG (Retrieval-Augmented Generation)?", - "url": "https://aws.amazon.com/what-is/retrieval-augmented-generation/", - "type": "article" - }, - { - "title": "Retrieval Augmented Generation (RAG) Explained in 8 Minutes!", - "url": "https://www.youtube.com/watch?v=HREbdmOSQ18", - "type": "video" - } - ] - }, - "WZVW8FQu6LyspSKm1C_sl": { - "title": "Using SDKs Directly", - "description": "While tools like Langchain and LlamaIndex make it easy to implement RAG, you don't have to necessarily learn and use them. If you know about the different steps of implementing RAG you can simply do it all yourself e.g. do the chunking using `@langchain/textsplitters` package, create embeddings using any LLM e.g. use OpenAI Embedding API through their SDK, save the embeddings to any vector database e.g. if you are using Supabase Vector DB, you can use their SDK and similarly you can use the relevant SDKs for the rest of the steps as well.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Langchain Text Splitter Package", - "url": "https://www.npmjs.com/package/@langchain/textsplitters", - "type": "article" - }, - { - "title": "OpenAI Embedding API", - "url": "https://platform.openai.com/docs/guides/embeddings", - "type": "article" - }, - { - "title": "Supabase AI & Vector Documentation", - "url": "https://supabase.com/docs/guides/ai", - "type": "article" - } - ] - }, - "ebXXEhNRROjbbof-Gym4p": { - "title": "Langchain", - "description": "LangChain is a development framework that simplifies building applications powered by language models, enabling seamless integration of multiple AI models and data sources. It focuses on creating chains, or sequences, of operations where language models can interact with databases, APIs, and other models to perform complex tasks. LangChain offers tools for prompt management, data retrieval, and workflow orchestration, making it easier to develop robust, scalable applications like chatbots, automated data analysis, and multi-step reasoning systems.\n\nLearn more from the following resources:", - "links": [ - { - "title": "LangChain", - "url": "https://www.langchain.com/", - "type": "article" - }, - { - "title": "What is LangChain?", - "url": "https://www.youtube.com/watch?v=1bUy-1hGZpI", - "type": "video" - } - ] - }, - "d0ontCII8KI8wfP-8Y45R": { - "title": "Llama Index", - "description": "LlamaIndex, formerly known as GPT Index, is a tool designed to facilitate the integration of large language models (LLMs) with structured and unstructured data sources. It acts as a data framework that helps developers build retrieval-augmented generation (RAG) applications by indexing various types of data, such as documents, databases, and APIs, enabling LLMs to query and retrieve relevant information efficiently.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Llama Index", - "url": "https://docs.llamaindex.ai/en/stable/", - "type": "article" - }, - { - "title": "Introduction to LlamaIndex with Python (2024)", - "url": "https://www.youtube.com/watch?v=cCyYGYyCka4", - "type": "video" + "title": "Retrieval Augmented Generation (RAG) with Vector Databases: Expanding AI Capabilities", + "url": "https://objectbox.io/retrieval-augmented-generation-rag-with-vector-databases-expanding-ai-capabilities/", + "type": "article" } ] }, - "eOqCBgBTKM8CmY3nsWjre": { - "title": "Open AI Assistant API", - "description": "The OpenAI Assistant API enables developers to create advanced conversational systems using models like GPT-4. It supports multi-turn conversations, allowing the AI to maintain context across exchanges, which is ideal for chatbots, virtual assistants, and interactive applications. Developers can customize interactions by defining roles, such as system, user, and assistant, to guide the assistant's behavior. With features like temperature control, token limits, and stop sequences, the API offers flexibility to ensure responses are relevant, safe, and tailored to specific use cases.\n\nLearn more from the following resources:", + "OCGCzHQM2LQyUWmiqe6E0": { + "title": "Retrieval Process", + "description": "The retrieval process in Retrieval-Augmented Generation (RAG) involves finding relevant information from a large dataset or knowledge base to support the generation of accurate, context-aware responses. When a query is received, the system first converts it into a vector (embedding) and uses this vector to search a database of pre-indexed embeddings, identifying the most similar or relevant data points. Techniques like approximate nearest neighbor (ANN) search are often used to speed up this process.\n\nLearn more from the following resources:", "links": [ { - "title": "OpenAI Assistants API – Course for Beginners", - "url": "https://www.youtube.com/watch?v=qHPonmSX4Ms", - "type": "course" + "title": "What is Retrieval-Augmented Generation (RAG)?", + "url": "https://cloud.google.com/use-cases/retrieval-augmented-generation", + "type": "article" }, { - "title": "Assistants API", - "url": "https://platform.openai.com/docs/assistants/overview", + "title": "What Is Retrieval-Augmented Generation, aka RAG?", + "url": "https://blogs.nvidia.com/blog/what-is-retrieval-augmented-generation/", "type": "article" } ] }, - "c0RPhpD00VIUgF4HJgN2T": { - "title": "Replicate", - "description": "Replicate is a platform that allows developers to run machine learning models in the cloud without needing to manage infrastructure. It provides a simple API for deploying and scaling models, making it easy to integrate AI capabilities like image generation, text processing, and more into applications. Users can select from a library of pre-trained models or deploy their own, with the platform handling tasks like scaling, monitoring, and versioning.\n\nLearn more from the following resources:", + "2jJnS9vRYhaS69d6OxrMh": { + "title": "Generation", + "description": "Generation refers to the process where a generative language model, such as GPT, creates a response based on the information retrieved during the retrieval phase. After relevant documents or data snippets are identified using embeddings, they are passed to the generative model, which uses this information to produce coherent, context-aware, and informative responses. The retrieved content helps the model stay grounded and factual, enhancing its ability to answer questions, provide summaries, or engage in dialogue by combining retrieved knowledge with its natural language generation capabilities. This synergy between retrieval and generation makes RAG systems effective for tasks that require detailed, accurate, and contextually relevant outputs.\n\nLearn more from the following resources:", "links": [ { - "title": "Replicate", - "url": "https://replicate.com/", + "title": "What is RAG (Retrieval-Augmented Generation)?", + "url": "https://aws.amazon.com/what-is/retrieval-augmented-generation/", "type": "article" }, { - "title": "Replicate.com Beginners Tutorial", - "url": "https://www.youtube.com/watch?v=y0_GE5ErqY8", + "title": "Retrieval Augmented Generation (RAG) Explained in 8 Minutes!", + "url": "https://www.youtube.com/watch?v=HREbdmOSQ18", "type": "video" } ] }, - "AeHkNU-uJ_gBdo5-xdpEu": { - "title": "AI Agents", - "description": "In AI engineering, \"agents\" refer to autonomous systems or components that can perceive their environment, make decisions, and take actions to achieve specific goals. Agents often interact with external systems, users, or other agents to carry out complex tasks. They can vary in complexity, from simple rule-based bots to sophisticated AI-powered agents that leverage machine learning models, natural language processing, and reinforcement learning.\n\nVisit the following resources to learn more:", + "WZVW8FQu6LyspSKm1C_sl": { + "title": "Using SDKs Directly", + "description": "While tools like Langchain and LlamaIndex make it easy to implement RAG, you don't have to necessarily learn and use them. If you know about the different steps of implementing RAG you can simply do it all yourself e.g. do the chunking using `@langchain/textsplitters` package, create embeddings using any LLM e.g. use OpenAI Embedding API through their SDK, save the embeddings to any vector database e.g. if you are using Supabase Vector DB, you can use their SDK and similarly you can use the relevant SDKs for the rest of the steps as well.\n\nLearn more from the following resources:", "links": [ { - "title": "Building an AI Agent Tutorial - LangChain", - "url": "https://python.langchain.com/docs/tutorials/agents/", + "title": "Langchain Text Splitter Package", + "url": "https://www.npmjs.com/package/@langchain/textsplitters", "type": "article" }, { - "title": "AI agents and their types", - "url": "https://play.ht/blog/ai-agents-use-cases/", + "title": "OpenAI Embedding API", + "url": "https://platform.openai.com/docs/guides/embeddings", "type": "article" }, { - "title": "The Complete Guide to Building AI Agents for Beginners", - "url": "https://youtu.be/MOyl58VF2ak?si=-QjRD_5y3iViprJX", - "type": "video" + "title": "Supabase AI & Vector Documentation", + "url": "https://supabase.com/docs/guides/ai", + "type": "article" } ] }, + "langchain@jM-Jbo0wUilhVY830hetJ.md": { + "title": "Langchain", + "description": "", + "links": [] + }, + "llama-index@JT4mBXOjvvrUnynA7yrqt.md": { + "title": "Llama Index", + "description": "", + "links": [] + }, + "tools--function-calling@eOqCBgBTKM8CmY3nsWjre.md": { + "title": "Tools & Function Calling", + "description": "", + "links": [] + }, + "deepseek@UGYYh2W1XnnbgYNY8L8Hb.md": { + "title": "DeepSeek", + "description": "", + "links": [] + }, + "ai-agents@4_ap0rD9Gl6Ep_4jMfPpG.md": { + "title": "AI Agents", + "description": "", + "links": [] + }, "778HsQzTuJ_3c9OSn5DmH": { "title": "Agents Usecases", "description": "AI Agents have a variety of usecases ranging from customer support, workflow automation, cybersecurity, finance, marketing and sales, and more.\n\nVisit the following resources to learn more:", @@ -1625,37 +1071,15 @@ } ] }, - "Sm0Ne5Nx72hcZCdAcC0C2": { - "title": "OpenAI Functions / Tools", - "description": "OpenAI Functions, also known as tools, enable developers to extend the capabilities of language models by integrating external APIs and functionalities, allowing the models to perform specific actions, fetch real-time data, or interact with other software systems. This feature enhances the model's utility by bridging it with services like web searches, databases, and custom business applications, enabling more dynamic and task-oriented responses.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Function Calling", - "url": "https://platform.openai.com/docs/guides/function-calling", - "type": "article" - }, - { - "title": "How does OpenAI Function Calling work?", - "url": "https://www.youtube.com/watch?v=Qor2VZoBib0", - "type": "video" - } - ] + "openai-agentkit--agent-sdk@Sm0Ne5Nx72hcZCdAcC0C2.md": { + "title": "OpenAI AgentKit & Agent SDK", + "description": "", + "links": [] }, - "mbp2NoL-VZ5hZIIblNBXt": { - "title": "OpenAI Assistant API", - "description": "The OpenAI Assistant API enables developers to create advanced conversational systems using models like GPT-4. It supports multi-turn conversations, allowing the AI to maintain context across exchanges, which is ideal for chatbots, virtual assistants, and interactive applications. Developers can customize interactions by defining roles, such as system, user, and assistant, to guide the assistant's behavior. With features like temperature control, token limits, and stop sequences, the API offers flexibility to ensure responses are relevant, safe, and tailored to specific use cases.\n\nLearn more from the following resources:", - "links": [ - { - "title": "OpenAI Assistants API – Course for Beginners", - "url": "https://www.youtube.com/watch?v=qHPonmSX4Ms", - "type": "course" - }, - { - "title": "Assistants API", - "url": "https://platform.openai.com/docs/assistants/overview", - "type": "article" - } - ] + "claude-agent-sdk@xXLyuUNrKEc32XLQxMjgT.md": { + "title": "Claude Agent SDK", + "description": "", + "links": [] }, "W7cKPt_UxcUgwp8J6hS4p": { "title": "Multimodal AI", @@ -1912,61 +1336,296 @@ } ] }, - "XcKeQfpTA5ITgdX51I4y-": { - "title": "AI Code Editors", - "description": "AI code editors are development tools that leverage artificial intelligence to assist software developers in writing, debugging, and optimizing code. These editors go beyond traditional syntax highlighting and code completion by incorporating machine learning models, natural language processing, and data analysis to understand code context, generate suggestions, and even automate portions of the software development process.\n\nVisit the following resources to learn more:", + "haystack@ebXXEhNRROjbbof-Gym4p.md": { + "title": "Haystack", + "description": "", + "links": [] + }, + "ragflow@d0ontCII8KI8wfP-8Y45R.md": { + "title": "RAGFlow", + "description": "", + "links": [] + }, + "model-context-protocol-mcp@AeHkNU-uJ_gBdo5-xdpEu.md": { + "title": "Model Context Protocol (MCP)", + "description": "", + "links": [] + }, + "mcp-host@MabZ9jOrSj539C5qZrVBd.md": { + "title": "MCP Host", + "description": "", + "links": [] + }, + "mcp-server@8Xkd88EjX3GE_9DWQhr7G.md": { + "title": "MCP Server", + "description": "", + "links": [] + }, + "mcp-client@po0fIZYaFhRbNlza7sB37.md": { + "title": "MCP Client", + "description": "", + "links": [] + }, + "data-layer@Z0920V57_ziDhXbQJMN9O.md": { + "title": "Data Layer", + "description": "", + "links": [] + }, + "transport-layer@o4gHDZ5p9lyeHuCAPvAKz.md": { + "title": "Transport Layer", + "description": "", + "links": [] + }, + "building-an-mcp-server@oLGfKjcqBzJ3vd6Cg-T1B.md": { + "title": "Building an MCP Server", + "description": "", + "links": [] + }, + "building-an-mcp-client@0Rk0rCbmRFJT2GKwUibQS.md": { + "title": "Building an MCP Client", + "description": "", + "links": [] + }, + "connect-to-local-server@H-G93SsEgsA_NGL_v4hPv.md": { + "title": "Connect to Local Server", + "description": "", + "links": [] + }, + "connect-to-remote-server@2t4uINxmzfx8FUF-_i_2B.md": { + "title": "Connect to Remote Server", + "description": "", + "links": [] + }, + "vertex-ai-agent-builder@AxzTGDCC2Ftp4G66U4Uqr.md": { + "title": "Vertex AI Agent Builder", + "description": "", + "links": [] + }, + "google-adk@mbp2NoL-VZ5hZIIblNBXt.md": { + "title": "Google ADK", + "description": "", + "links": [] + }, + "fine-tuning@zTvsCNS3ucsZmvy1tHyeI.md": { + "title": "Fine-tuning", + "description": "", + "links": [] + }, + "context-engineering@kCiHNaZ9CgnS9uksIQ_SY.md": { + "title": "Context Engineering", + "description": "", + "links": [] + }, + "prompt-vs-context-engineering@ozrR8IvjNFbHd44kZrExX.md": { + "title": "Prompt vs Context Engineering", + "description": "", + "links": [] + }, + "input-format@LCHse57rXf3sl8ml1ow0T.md": { + "title": "Input Format", + "description": "", + "links": [] + }, + "system-prompting@S46Vaq8hYq6Ee1Id_-fSQ.md": { + "title": "System Prompting", + "description": "", + "links": [] + }, + "context@9oUpeEnaMWctQLTobbmY7.md": { + "title": "Context", + "description": "", + "links": [] + }, + "role--behavior@N3TzWYxU0jgv1l99Ts58n.md": { + "title": "Role & Behavior", + "description": "", + "links": [] + }, + "constrains@PT3uDiUjiKhO8laOkCmgP.md": { + "title": "Constrains", + "description": "", + "links": [] + }, + "structured-output@zqhmLzHsmDlrTFVHzhq6-.md": { + "title": "Structured Output", + "description": "", + "links": [] + }, + "function-calling@wFfjHkGLrcCyLyXV4BiFM.md": { + "title": "Function Calling", + "description": "", + "links": [] + }, + "prompt-caching@bqqY0gsZkBpcHMZw1hcZ5.md": { + "title": "Prompt Caching", + "description": "", + "links": [] + }, + "streaming-responses@MUDBYjR7uCUZQ-kQxi2K_.md": { + "title": "Streaming Responses", + "description": "", + "links": [] + }, + "type-of-models@2X0NDcq2ojBJ0RxY_U6bl.md": { + "title": "Type of Models", + "description": "", + "links": [] + }, + "self-hosted-models@_qqITQ8O0Q0RWUeZsUXnY.md": { + "title": "Self-Hosted Models", + "description": "", + "links": [] + }, + "repetition-penalties@0_pa739kMPWHfuSQV-VO7.md": { + "title": "Repetition Penalties", + "description": "", + "links": [] + }, + "choosing-the-right-model@zeWoTtAFEpVXDQzWNsha4.md": { + "title": "Choosing the Right Model ", + "description": "", + "links": [] + }, + "gemma2@MNtaY1_kOJHeoWuM-abb4.md": { + "title": "Gemma2", + "description": "", + "links": [] + }, + "qwen@c0RPhpD00VIUgF4HJgN2T.md": { + "title": "Qwen", + "description": "", + "links": [] + }, + "openrouter@1GlpMjmdAWor0X_BnISGg.md": { + "title": "OpenRouter", + "description": "", + "links": [] + }, + "embedding-models@fr0UOXlVVctkk1K84Z8Of.md": { + "title": "Embedding Models", + "description": "", + "links": [] + }, + "claude-messages-api@nxwMVla0-PNG8nlocKK5v.md": { + "title": "Claude Messages API", + "description": "", + "links": [] + }, + "openai-compatible-apis@vnXtUupJUlyU_uCbZBbnk.md": { + "title": "OpenAI-compatible APIs", + "description": "", + "links": [] + }, + "multi-agents@kG1bkF2oY21CJOm9zhdpn.md": { + "title": "Multi-agents", + "description": "", + "links": [] + }, + "YKIPOiSj_FNtg0h8uaSMq": { + "title": "Hugging Face Tasks", + "description": "Hugging Face supports text classification, named entity recognition, question answering, summarization, and translation. It also extends to multimodal tasks that involve both text and images, such as visual question answering (VQA) and image-text matching. Each task is done by various pre-trained models that can be easily accessed and fine-tuned through the Hugging Face library.\n\nLearn more from the following resources:", "links": [ { - "title": "Cursor - The AI Code Editor", - "url": "https://www.cursor.com/", - "type": "website" - }, - { - "title": "PearAI - The Open Source, Extendable AI Code Editor", - "url": "https://trypear.ai/", - "type": "website" - }, - { - "title": "Bolt - Prompt, run, edit, and deploy full-stack web apps", - "url": "https://bolt.new", - "type": "website" + "title": "Task and Model", + "url": "https://huggingface.co/learn/computer-vision-course/en/unit4/multimodal-models/tasks-models-part1", + "type": "article" }, { - "title": "Replit - Build Apps using AI", - "url": "https://replit.com/ai", - "type": "website" + "title": "Task Summary", + "url": "https://huggingface.co/docs/transformers/v4.14.1/en/task_summary", + "type": "article" }, { - "title": "v0 - Build Apps with AI", - "url": "https://v0.dev", - "type": "website" + "title": "Task Manager", + "url": "https://huggingface.co/docs/optimum/en/exporters/task_manager", + "type": "article" } ] }, - "TifVhqFm1zXNssA8QR3SM": { - "title": "Code Completion Tools", - "description": "Code completion tools are AI-powered development assistants designed to enhance productivity by automatically suggesting code snippets, functions, and entire blocks of code as developers type. These tools, such as GitHub Copilot and Tabnine, leverage machine learning models trained on vast code repositories to predict and generate contextually relevant code. They help reduce repetitive coding tasks, minimize errors, and accelerate the development process by offering real-time, intelligent suggestions.\n\nLearn more from the following resources:", + "XyEp6jnBSpCxMGwALnYfT": { + "title": "Embeddings", + "description": "Embeddings are dense, continuous vector representations of data, such as words, sentences, or images, in a lower-dimensional space. They capture the semantic relationships and patterns in the data, where similar items are placed closer together in the vector space. In machine learning, embeddings are used to convert complex data into numerical form that models can process more easily. For example, word embeddings represent words based on their meanings and contexts, allowing models to understand relationships like synonyms or analogies. Embeddings are widely used in tasks like natural language processing, recommendation systems, and image recognition to improve model performance and efficiency.\n\nLearn more from the following resources:", "links": [ { - "title": "GitHub Copilot", - "url": "https://github.com/features/copilot", - "type": "article" - }, - { - "title": "Codeium", - "url": "https://codeium.com/", + "title": "What are Embeddings in Machine Learning?", + "url": "https://www.cloudflare.com/en-gb/learning/ai/what-are-embeddings/", "type": "article" }, { - "title": "Supermaven", - "url": "https://supermaven.com/", + "title": "What is Embedding?", + "url": "https://www.ibm.com/topics/embedding", "type": "article" }, { - "title": "Tabnine", - "url": "https://www.tabnine.com/", - "type": "article" + "title": "What are Word Embeddings", + "url": "https://www.youtube.com/watch?v=wgfSDrqYMJ4", + "type": "video" } ] + }, + "claude-code@wr5ddjutC-fX_ixysTHaT.md": { + "title": "Claude Code", + "description": "", + "links": [] + }, + "gemini@hzeEo8COf2l07iu5EdlFo.md": { + "title": "Gemini", + "description": "", + "links": [] + }, + "codex@XY2l96sry3WyLzzo3KUeU.md": { + "title": "Codex", + "description": "", + "links": [] + }, + "windsurf@Xsl8mx6J182TxPPtNP471.md": { + "title": "Windsurf", + "description": "", + "links": [] + }, + "cursor@MWhoqhNnBaoeCdN_8i15k.md": { + "title": "Cursor", + "description": "", + "links": [] + }, + "replit@Ubk4GN0Z4XlDJ3EbRXdxg.md": { + "title": "Replit", + "description": "", + "links": [] + }, + "nanobanana-api@6y73FLjshnqxV8BTGUeiu.md": { + "title": "NanoBanana API", + "description": "", + "links": [] + }, + "sampling-parameters@LbB2PeytxRSuU07Bk0KlJ.md": { + "title": "Sampling Parameters", + "description": "", + "links": [] + }, + "temperature@_bPTciEA1GT1JwfXim19z.md": { + "title": "Temperature", + "description": "", + "links": [] + }, + "external-memory@KWjD4xEPhOOYS51dvRLd2.md": { + "title": "External Memory", + "description": "", + "links": [] + }, + "rag-and-dynamic-filters@LnQ2AatMWpExUHcZhDIPd.md": { + "title": " RAG and Dynamic Filters", + "description": "", + "links": [] + }, + "context-compaction@9XCxilAQ7FRet7lHQr1gE.md": { + "title": "Context compaction", + "description": "", + "links": [] + }, + "context-isolation@9JwWIK0Z2MK8-6EQQJsCO.md": { + "title": "Context Isolation", + "description": "", + "links": [] } } \ No newline at end of file diff --git a/public/roadmap-content/ai-red-teaming.json b/public/roadmap-content/ai-red-teaming.json index 5f1cfe56059b..3572c6962bd3 100644 --- a/public/roadmap-content/ai-red-teaming.json +++ b/public/roadmap-content/ai-red-teaming.json @@ -807,26 +807,10 @@ } ] }, - "JQ3bR8odXJfd-1RCEf3-Q": { - "title": "Authentication", - "description": "AI Red Teamers test authorization controls to ensure that authenticated users can only access the AI features and data permitted by their roles/permissions. They attempt privilege escalation, try to access other users' data via the AI, or manipulate the AI to perform actions beyond its authorized scope.\n\nLearn more from the following resources:", - "links": [ - { - "title": "What is Authentication vs Authorization?", - "url": "https://auth0.com/intro-to-iam/authentication-vs-authorization", - "type": "article" - }, - { - "title": "Identity and access management (IAM) fundamental concepts", - "url": "https://learn.microsoft.com/en-us/entra/fundamentals/identity-fundamental-concepts", - "type": "article" - }, - { - "title": "OWASP API Security Project", - "url": "https://owasp.org/www-project-api-security/", - "type": "article" - } - ] + "authorization@JQ3bR8odXJfd-1RCEf3-Q.md": { + "title": "Authorization", + "description": "", + "links": [] }, "0bApnJTt-Z2IUf0X3OCYf": { "title": "Black Box Testing", diff --git a/public/roadmap-content/android.json b/public/roadmap-content/android.json index ad09f6700519..21265bad4c01 100644 --- a/public/roadmap-content/android.json +++ b/public/roadmap-content/android.json @@ -1457,5 +1457,10 @@ "type": "article" } ] + }, + "security@j5qmSMOdhpGZo1XOUVx1k.md": { + "title": "Security", + "description": "", + "links": [] } } \ No newline at end of file diff --git a/public/roadmap-content/api-design.json b/public/roadmap-content/api-design.json index a4625a5e832d..bc34598b7684 100644 --- a/public/roadmap-content/api-design.json +++ b/public/roadmap-content/api-design.json @@ -735,42 +735,15 @@ } ] }, - "wFsbmMi5Ey9UyDADdbdPW": { - "title": "Role Based Access Control (RBAC)", - "description": "Role-Based Access Control (RBAC) is a method of managing authorization in API design that assigns system access to users based on their role within an organization. RBAC is crucial in controlling which endpoints a user can call, and what operations they are allowed to execute. In the context of API design, RBAC ensures appropriate levels of access for different types of users to guarantee data security and integrity. It simplifies the process of security administration by assigning privileges based on a user's job function, rather than on an individual basis.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Role-Based Access Control", - "url": "https://auth0.com/docs/manage-users/access-control/rbac", - "type": "article" - }, - { - "title": "What is Role-based Access Control (RBAC)?", - "url": "https://www.redhat.com/en/topics/security/what-is-role-based-access-control", - "type": "article" - }, - { - "title": "Role-based Access Control (RBAC) vs. Attribute-based Access Control (ABAC)", - "url": "https://www.youtube.com/watch?v=rvZ35YW4t5k", - "type": "video" - } - ] + "mac@tl1wXmOaj_zHL2o38VygO.md": { + "title": "MAC", + "description": "", + "links": [] }, - "dZTe_kxIUQsc9N3w920aR": { - "title": "Attribute Based Access Control (ABAC)", - "description": "Attribute Based Access Control (ABAC) is a flexible and powerful authorization method in the realm of API Design. Distinct from Role-Based Access Control (RBAC), which relies on predefined roles and permissions, ABAC uses attributes to build policies and make decisions. These attributes can be associated with the user, the action they want to perform, targeted resources, or the environment. With ABAC, finer-grained access control can be achieved, thereby improving the security and efficiency of APIs. This approach is widely used in complex and dynamic environments where access control requirements can be multifaceted and deeply context-dependent.\n\nLearn more from the following resources:", - "links": [ - { - "title": "What is Attribute Based Access Control?", - "url": "https://www.okta.com/uk/blog/2020/09/attribute-based-access-control-abac/", - "type": "article" - }, - { - "title": "Attribute Based Access Control", - "url": "https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html", - "type": "article" - } - ] + "rebac@CCcY8UsGdd2pdBYHt9L4o.md": { + "title": "ReBAC", + "description": "", + "links": [] }, "tzUJwXu_scwQHnPPT0oY-": { "title": "API Keys & Management", @@ -1591,5 +1564,25 @@ "type": "video" } ] + }, + "dac@_BXgYUlaYfpYrryXTw5n2.md": { + "title": "DAC", + "description": "", + "links": [] + }, + "abac@dZTe_kxIUQsc9N3w920aR.md": { + "title": "ABAC", + "description": "", + "links": [] + }, + "pbac@nJWtUyn9bljh3T-q_adJK.md": { + "title": "PBAC", + "description": "", + "links": [] + }, + "rbac@wFsbmMi5Ey9UyDADdbdPW.md": { + "title": "RBAC", + "description": "", + "links": [] } } \ No newline at end of file diff --git a/public/roadmap-content/backend.json b/public/roadmap-content/backend.json index 4726e97e9bfa..343264b1b06f 100644 --- a/public/roadmap-content/backend.json +++ b/public/roadmap-content/backend.json @@ -1,27 +1,37 @@ { - "gKTSe9yQFVbPVlLzWB0hC": { - "title": "Search Engines", - "description": "Search engines like Elasticsearch are specialized tools designed for fast, scalable, and flexible searching and analyzing of large volumes of data. Elasticsearch is an open-source, distributed search and analytics engine built on Apache Lucene, offering full-text search capabilities, real-time indexing, and advanced querying features. Key characteristics of search engines like Elasticsearch include:\n\n1. **Full-Text Search**: Support for complex search queries, including relevance scoring and text analysis.\n2. **Distributed Architecture**: Scalability through horizontal distribution across multiple nodes or servers.\n3. **Real-Time Indexing**: Ability to index and search data almost instantaneously.\n4. **Powerful Query DSL**: A domain-specific language for constructing and executing sophisticated queries.\n5. **Analytics**: Capabilities for aggregating and analyzing data, often used for log and event data analysis.\n\nVisit the following resources to learn more:", + "9cD5ag1L0GqHx4_zxc5JX": { + "title": "Open API Specs", + "description": "The OpenAPI Specification (OAS), formerly known as Swagger, is a standard for defining and documenting RESTful APIs. It provides a structured format in YAML or JSON to describe API endpoints, request and response formats, authentication methods, and other metadata. By using OAS, developers can create a comprehensive and machine-readable API description that facilitates client generation, automated documentation, and testing. This specification promotes consistency and clarity in API design, enhances interoperability between different systems, and enables tools to generate client libraries, server stubs, and interactive API documentation.\n\nVisit the following resources to learn more:", "links": [ { - "title": "Elasticsearch", - "url": "https://www.elastic.co/elasticsearch/", + "title": "OpenAPI Specification Website", + "url": "https://swagger.io/specification/", "type": "article" + }, + { + "title": "Open API Live Editor", + "url": "https://swagger.io/tools/swagger-editor/", + "type": "article" + }, + { + "title": "OpenAPI 3.0: How to Design and Document APIs with the Latest OpenAPI Specification 3.0", + "url": "https://www.youtube.com/watch?v=6kwmW_p_Tig", + "type": "video" + }, + { + "title": " REST API and OpenAPI: It’s Not an Either/Or Question", + "url": "https://www.youtube.com/watch?v=pRS9LRBgjYg", + "type": "video" } ] }, - "9Fpoor-Os_9lvrwu5Zjh-": { - "title": "Design and Development Principles", - "description": "Design and Development Principles are fundamental guidelines that inform the creation of software systems. Key principles include:\n\n* SOLID (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Dependency Inversion)\n* DRY (Don't Repeat Yourself)\n* KISS (Keep It Simple, Stupid)\n* YAGNI (You Aren't Gonna Need It)\n* Separation of Concerns\n* Modularity\n* Encapsulation\n* Composition over Inheritance\n* Loose Coupling and High Cohesion\n* Principle of Least Astonishment\n\nVisit the following resources to learn more:", + "gKTSe9yQFVbPVlLzWB0hC": { + "title": "Search Engines", + "description": "Search engines like Elasticsearch are specialized tools designed for fast, scalable, and flexible searching and analyzing of large volumes of data. Elasticsearch is an open-source, distributed search and analytics engine built on Apache Lucene, offering full-text search capabilities, real-time indexing, and advanced querying features. Key characteristics of search engines like Elasticsearch include:\n\n1. **Full-Text Search**: Support for complex search queries, including relevance scoring and text analysis.\n2. **Distributed Architecture**: Scalability through horizontal distribution across multiple nodes or servers.\n3. **Real-Time Indexing**: Ability to index and search data almost instantaneously.\n4. **Powerful Query DSL**: A domain-specific language for constructing and executing sophisticated queries.\n5. **Analytics**: Capabilities for aggregating and analyzing data, often used for log and event data analysis.\n\nVisit the following resources to learn more:", "links": [ { - "title": "Design Principles - Wikipedia", - "url": "https://en.wikipedia.org/wiki/Design_principles", - "type": "article" - }, - { - "title": "Design Principles - Microsoft", - "url": "https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/index", + "title": "Elasticsearch", + "url": "https://www.elastic.co/elasticsearch/", "type": "article" } ] @@ -47,41 +57,10 @@ } ] }, - "SiYUdtYMDImRPmV2_XPkH": { - "title": "Internet", - "description": "The internet is a global network of interconnected computers that communicate using standardized protocols, primarily TCP/IP. When you request a webpage, your device sends a data packet through your internet service provider (ISP) to a DNS server, which translates the website's domain name into an IP address. The packet is then routed across various networks (using routers and switches) to the destination server, which processes the request and sends back the response. This back-and-forth exchange enables the transfer of data like web pages, emails, and files, making the internet a dynamic, decentralized system for global communication.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "How does the Internet Work?", - "url": "https://cs.fyi/guide/how-does-internet-work", - "type": "article" - }, - { - "title": "The Internet Explained", - "url": "https://www.vox.com/2014/6/16/18076282/the-internet", - "type": "article" - }, - { - "title": "How Does the Internet Work?", - "url": "http://web.stanford.edu/class/msande91si/www-spr04/readings/week1/InternetWhitepaper.htm", - "type": "article" - }, - { - "title": "Introduction to Internet", - "url": "/guides/what-is-internet", - "type": "article" - }, - { - "title": "How does the Internet work?", - "url": "https://www.youtube.com/watch?v=x3c1ih2NJEg", - "type": "video" - }, - { - "title": "How does the internet work? (Full Course)", - "url": "https://www.youtube.com/watch?v=zN8YNNHcaZc", - "type": "video" - } - ] + "introduction@SiYUdtYMDImRPmV2_XPkH.md": { + "title": "Introduction", + "description": "", + "links": [] }, "CWwh2abwqx4hAxpAGvhIx": { "title": "Rust", @@ -336,9 +315,9 @@ } ] }, - "2f0ZO6GJElfZ2Eis28Hzg": { - "title": "Pick a Language", - "description": "Even if you’re a beginner, the first thing you’ll learn is that web development is primarily divided into two aspects: Frontend Development and Backend Development, each with its unique tools and technologies. For Frontend Development, foundational technologies include HTML, CSS, and JavaScript. Similarly, Backend Development revolves around server-side programming languages like Python, Java, or Node.js, complemented by databases, frameworks, and web servers that enable website functionality.", + "pick-a-backend-language@2f0ZO6GJElfZ2Eis28Hzg.md": { + "title": "Pick a Backend Language", + "description": "", "links": [] }, "_I1E__wCIVrhjMk6IMieE": { @@ -449,37 +428,6 @@ } ] }, - "Ry_5Y-BK7HrkIc6X0JG1m": { - "title": "Bitbucket", - "description": "Bitbucket is a web-based version control repository hosting service owned by Atlassian. It primarily uses Git version control systems, offering both cloud-hosted and self-hosted options. Bitbucket provides features such as pull requests for code review, branch permissions, and inline commenting on code. It integrates seamlessly with other Atlassian products like Jira and Trello, making it popular among teams already using Atlassian tools. Bitbucket supports continuous integration and deployment through Bitbucket Pipelines. It offers unlimited private repositories for small teams, making it cost-effective for smaller organizations.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Bitbucket", - "url": "https://bitbucket.org/product", - "type": "article" - }, - { - "title": "Overview of Bitbucket", - "url": "https://bitbucket.org/product/guides/getting-started/overview#a-brief-overview-of-bitbucket", - "type": "article" - }, - { - "title": "Using Git with Bitbucket Cloud", - "url": "https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud", - "type": "article" - }, - { - "title": "Explore top posts about Bitbucket", - "url": "https://app.daily.dev/tags/bitbucket?ref=roadmapsh", - "type": "article" - }, - { - "title": "Bitbucket tutorial | How to use Bitbucket Cloud", - "url": "https://www.youtube.com/watch?v=M44nEyd_5To", - "type": "video" - } - ] - }, "Wcp-VDdFHipwa7hNAp1z_": { "title": "GitLab", "description": "GitLab is a web-based DevOps platform that provides a complete solution for the software development lifecycle. It offers source code management, continuous integration/continuous deployment (CI/CD), issue tracking, and more, all integrated into a single application. GitLab supports Git repositories and includes features like merge requests (similar to GitHub's pull requests), wiki pages, and issue boards. It emphasizes DevOps practices, providing built-in CI/CD pipelines, container registry, and Kubernetes integration. GitLab offers both cloud-hosted and self-hosted options, giving organizations flexibility in deployment. Its all-in-one approach differentiates it from competitors, as it includes features that might require multiple tools in other ecosystems. GitLab's focus on the entire DevOps lifecycle, from planning to monitoring, makes it popular among enterprises and teams seeking a unified platform for their development workflows.\n\nVisit the following resources to learn more:", @@ -834,21 +782,10 @@ } ] }, - "SYXJhanu0lFmGj2m2XXhS": { - "title": "Profiling Perfor.", - "description": "Profiling performance involves analyzing a system or application's behavior to identify bottlenecks, inefficiencies, and areas for optimization. This process typically involves collecting detailed information about resource usage, such as CPU and memory consumption, I/O operations, and execution time of functions or methods. Profiling tools can provide insights into how different parts of the code contribute to overall performance, highlighting slow or resource-intensive operations. By understanding these performance characteristics, developers can make targeted improvements, optimize code paths, and enhance system responsiveness and scalability. Profiling is essential for diagnosing performance issues and ensuring that applications meet desired performance standards.\n\nLearn more from the following resources:", - "links": [ - { - "title": "How to Profile SQL Queries for Better Performance", - "url": "https://servebolt.com/articles/profiling-sql-queries/", - "type": "article" - }, - { - "title": "Performance Profiling", - "url": "https://www.youtube.com/watch?v=MaauQTeGg2k", - "type": "video" - } - ] + "profiling-performance@SYXJhanu0lFmGj2m2XXhS.md": { + "title": "Profiling Performance", + "description": "", + "links": [] }, "bQnOAu863hsHdyNMNyJop": { "title": "N+1 Problem", @@ -1002,22 +939,6 @@ } ] }, - "dLY0KafPstajCcSbslC4M": { - "title": "HATEOAS", - "description": "HATEOAS (Hypermedia As The Engine Of Application State) is a constraint of RESTful architecture that allows clients to navigate an API dynamically through hypermedia links provided in responses. Instead of hard-coding URLs or endpoints, the client discovers available actions through these links, much like a web browser following links on a webpage. This enables greater flexibility and decouples clients from server-side changes, making the system more adaptable and scalable without breaking existing clients. It's a key element of REST's principle of statelessness and self-descriptive messages.\n\nLearn more from the following resources:", - "links": [ - { - "title": "What is HATEOAS and why is it important for my REST API?", - "url": "https://restcookbook.com/Basics/hateoas/", - "type": "article" - }, - { - "title": "What happened to HATEOAS", - "url": "https://www.youtube.com/watch?v=HNTSrytKCoQ", - "type": "video" - } - ] - }, "sNceS4MpSIjRkWhNDmrFg": { "title": "JSON APIs", "description": "JSON or JavaScript Object Notation is an encoding scheme that is designed to eliminate the need for an ad-hoc code for each application to communicate with servers that communicate in a defined way. JSON API module exposes an implementation for data stores and data structures, such as entity types, bundles, and fields.\n\nVisit the following resources to learn more:", @@ -1039,32 +960,6 @@ } ] }, - "9cD5ag1L0GqHx4_zxc5JX": { - "title": "Open API Specs", - "description": "The OpenAPI Specification (OAS), formerly known as Swagger, is a standard for defining and documenting RESTful APIs. It provides a structured format in YAML or JSON to describe API endpoints, request and response formats, authentication methods, and other metadata. By using OAS, developers can create a comprehensive and machine-readable API description that facilitates client generation, automated documentation, and testing. This specification promotes consistency and clarity in API design, enhances interoperability between different systems, and enables tools to generate client libraries, server stubs, and interactive API documentation.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "OpenAPI Specification Website", - "url": "https://swagger.io/specification/", - "type": "article" - }, - { - "title": "Open API Live Editor", - "url": "https://swagger.io/tools/swagger-editor/", - "type": "article" - }, - { - "title": "OpenAPI 3.0: How to Design and Document APIs with the Latest OpenAPI Specification 3.0", - "url": "https://www.youtube.com/watch?v=6kwmW_p_Tig", - "type": "video" - }, - { - "title": " REST API and OpenAPI: It’s Not an Either/Or Question", - "url": "https://www.youtube.com/watch?v=pRS9LRBgjYg", - "type": "video" - } - ] - }, "sSNf93azjuyMzQqIHE0Rh": { "title": "SOAP", "description": "Simple Object Access Protocol (SOAP) is a message protocol for exchanging information between systems and applications. When it comes to application programming interfaces (APIs), a SOAP API is developed in a more structured and formalized way. SOAP messages can be carried over a variety of lower-level protocols, including the web-related Hypertext Transfer Protocol (HTTP).\n\nVisit the following resources to learn more:", @@ -1159,89 +1054,15 @@ } ] }, - "KWTbEVX_WxS8jmSaAX3Fe": { - "title": "Client Side", - "description": "Client-side caching is a technique where web browsers or applications store data locally on the user's device to improve performance and reduce server load. It involves saving copies of web pages, images, scripts, and other resources on the client's system for faster access on subsequent visits. Modern browsers implement various caching mechanisms, including HTTP caching (using headers like Cache-Control and ETag), service workers for offline functionality, and local storage APIs. Client-side caching significantly reduces network traffic and load times, enhancing user experience, especially on slower connections. However, it requires careful management to balance improved performance with the need for up-to-date content. Developers must implement appropriate cache invalidation strategies and consider cache-busting techniques for critical updates. Effective client-side caching is crucial for creating responsive, efficient web applications while minimizing server resource usage.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Client Side Caching", - "url": "https://redis.io/docs/latest/develop/use/client-side-caching/", - "type": "article" - }, - { - "title": "Everything you need to know about HTTP Caching", - "url": "https://www.youtube.com/watch?v=HiBDZgTNpXY", - "type": "video" - } - ] - }, - "Nq2BO53bHJdFT1rGZPjYx": { - "title": "CDN", - "description": "A Content Delivery Network (CDN) service aims to provide high availability and performance improvements of websites. This is achieved with fast delivery of website assets and content typically via geographically closer endpoints to the client requests.\n\nTraditional commercial CDNs (Amazon CloudFront, Akamai, CloudFlare and Fastly) provide servers across the globe which can be used for this purpose. Serving assets and contents via a CDN reduces bandwidth on website hosting, provides an extra layer of caching to reduce potential outages and can improve website security as well\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "CloudFlare - What is a CDN? | How do CDNs work?", - "url": "https://www.cloudflare.com/en-ca/learning/cdn/what-is-a-cdn/", - "type": "article" - }, - { - "title": "AWS - CDN", - "url": "https://aws.amazon.com/what-is/cdn/", - "type": "article" - }, - { - "title": "What is Cloud CDN?", - "url": "https://www.youtube.com/watch?v=841kyd_mfH0", - "type": "video" - }, - { - "title": "What is a CDN and how does it work?", - "url": "https://www.youtube.com/watch?v=RI9np1LWzqw", - "type": "video" - } - ] - }, - "z1-eP4sV75GBEIdM4NvL9": { - "title": "Server Side", - "description": "Server-side caching is a technique used to improve application performance by storing frequently accessed data in memory on the server, reducing the need for repeated data retrieval or computation. This approach helps to speed up response times and reduce the load on databases and other backend services. Common methods include caching database query results, HTML fragments, and API responses. Popular server-side caching tools and technologies include Redis, Memcached, and built-in caching mechanisms in web frameworks. By efficiently managing and serving cached content, server-side caching enhances scalability and responsiveness of applications.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Server-side caching and Client-side caching", - "url": "https://www.codingninjas.com/codestudio/library/server-side-caching-and-client-side-caching", - "type": "article" - }, - { - "title": "Caching strategies", - "url": "https://medium.com/@genchilu/cache-strategy-in-backend-d0baaacd2d79", - "type": "article" - }, - { - "title": "Local vs distributed", - "url": "https://redis.io/glossary/distributed-caching/", - "type": "article" - }, - { - "title": "Explore top posts about Web Development", - "url": "https://app.daily.dev/tags/webdev?ref=roadmapsh", - "type": "article" - } - ] + "http-caching@KWTbEVX_WxS8jmSaAX3Fe.md": { + "title": "HTTP Caching", + "description": "", + "links": [] }, - "ELj8af7Mi38kUbaPJfCUR": { + "caching@uPjCrDGA2MHylWXbZvMBM.md": { "title": "Caching", - "description": "Caching is a technique used in computing to store and retrieve frequently accessed data quickly, reducing the need to fetch it from the original, slower source repeatedly. It involves keeping a copy of data in a location that's faster to access than its primary storage. Caching can occur at various levels, including browser caching, application-level caching, and database caching. It significantly improves performance by reducing latency, decreasing network traffic, and lowering the load on servers or databases. Common caching strategies include time-based expiration, least recently used (LRU) algorithms, and write-through or write-back policies. While caching enhances speed and efficiency, it also introduces challenges in maintaining data consistency and freshness. Effective cache management is crucial in balancing performance gains with the need for up-to-date information in dynamic systems.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "What is Caching - AWS", - "url": "https://aws.amazon.com/caching/", - "type": "article" - }, - { - "title": "Caching - Cloudflare", - "url": "https://www.cloudflare.com/learning/cdn/what-is-caching/", - "type": "article" - } - ] + "description": "", + "links": [] }, "RBrIP5KbVQ2F0ly7kMfTo": { "title": "Web Security", @@ -1363,230 +1184,47 @@ } ] }, - "mGfD7HfuP184lFkXZzGjG": { - "title": "CI / CD", - "description": "CI/CD (Continuous Integration/Continuous Delivery) is a set of practices and tools in software development that automate the process of building, testing, and deploying code changes. Continuous Integration involves frequently merging code changes into a central repository, where automated builds and tests are run. Continuous Delivery extends this by automatically deploying all code changes to a testing or staging environment after the build stage. Some implementations include Continuous Deployment, where changes are automatically released to production. CI/CD pipelines typically involve stages like code compilation, unit testing, integration testing, security scans, and deployment. This approach aims to improve software quality, reduce time to market, and increase development efficiency by catching and addressing issues early in the development cycle.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "What is CI/CD?", - "url": "https://about.gitlab.com/topics/ci-cd/", - "type": "article" - }, - { - "title": "A Primer: Continuous Integration and Continuous Delivery (CI/CD)", - "url": "https://thenewstack.io/a-primer-continuous-integration-and-continuous-delivery-ci-cd/", - "type": "article" - }, - { - "title": "Articles about CI/CD", - "url": "https://thenewstack.io/category/ci-cd/", - "type": "article" - }, - { - "title": "Explore top posts about CI/CD", - "url": "https://app.daily.dev/tags/cicd?ref=roadmapsh", - "type": "article" - }, - { - "title": "DevOps CI/CD Explained in 100 Seconds", - "url": "https://www.youtube.com/watch?v=scEDHsr3APg", - "type": "video" - }, - { - "title": "Automate your Workflows with GitHub Actions", - "url": "https://www.youtube.com/watch?v=nyKZTKQS_EQ", - "type": "video" - } - ] - }, - "6XIWO0MoE-ySl4qh_ihXa": { - "title": "GOF Design Patterns", - "description": "The Gang of Four (GoF) Design Patterns are a collection of 23 foundational software design patterns that provide solutions to common object-oriented design problems. These patterns are grouped into three categories: _Creational_ (focused on object creation like Singleton and Factory), _Structural_ (focused on class and object composition like Adapter and Composite), and _Behavioral_ (focused on communication between objects like Observer and Strategy). Each pattern offers a proven template for addressing specific design challenges, promoting code reusability, flexibility, and maintainability across software systems.\n\nLearn more from the following links:", - "links": [ - { - "title": "Gangs of Four (GoF) Design Patterns", - "url": "https://www.digitalocean.com/community/tutorials/gangs-of-four-gof-design-patterns", - "type": "article" - }, - { - "title": "Design Patterns for Humans", - "url": "https://github.com/kamranahmedse/design-patterns-for-humans", - "type": "article" - }, - { - "title": "Tutorial - Builder Pattern (Gang of Four Design Patterns Series)", - "url": "https://www.youtube.com/watch?v=_sa2WlAFWQos", - "type": "video" - } - ] - }, - "u8IRw5PuXGUcmxA0YYXgx": { - "title": "CQRS", - "description": "CQRS (Command Query Responsibility Segregation) is an architectural pattern that separates read and write operations for a data store. In this pattern, \"commands\" handle data modification (create, update, delete), while \"queries\" handle data retrieval. The principle behind CQRS is that for many systems, especially complex ones, the requirements for reading data differ significantly from those for writing data. By separating these concerns, CQRS allows for independent scaling, optimization, and evolution of the read and write sides. This can lead to improved performance, scalability, and security. CQRS is often used in event-sourced systems and can be particularly beneficial in high-performance, complex domain applications. However, it also introduces additional complexity and should be applied judiciously based on the specific needs and constraints of the system.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "CQRS Pattern", - "url": "https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs", - "type": "article" - }, - { - "title": "Learn CQRS Pattern in 5 minutes!", - "url": "https://www.youtube.com/watch?v=eiut3FIY1Cg", - "type": "video" - } - ] - }, - "BvHi5obg0L1JDZFKBzx9t": { - "title": "Domain Driven Design", - "description": "Domain-Driven Design (DDD) is a software development approach that focuses on creating a deep understanding of the business domain and using this knowledge to inform the design of software systems. It emphasizes close collaboration between technical and domain experts to develop a shared language (ubiquitous language) and model that accurately represents the core concepts and processes of the business. DDD promotes organizing code around business concepts (bounded contexts), using rich domain models to encapsulate business logic, and separating the domain logic from infrastructure concerns. Key patterns in DDD include entities, value objects, aggregates, repositories, and domain services. This approach aims to create more maintainable and flexible software systems that closely align with business needs and can evolve with changing requirements. DDD is particularly valuable for complex domains where traditional CRUD-based architectures may fall short in capturing the nuances and rules of the business.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Domain-Driven Design", - "url": "https://redis.com/glossary/domain-driven-design-ddd/", - "type": "article" - }, - { - "title": "Explore top posts about Domain-Driven Design", - "url": "https://app.daily.dev/tags/domain-driven-design?ref=roadmapsh", - "type": "article" - }, - { - "title": "Domain Driven Design: What You Need To Know", - "url": "https://www.youtube.com/watch?v=4rhzdZIDX_k", - "type": "video" - } - ] - }, - "wqE-mkxvehOzOv8UyE39p": { - "title": "Event Sourcing", - "description": "Event sourcing is a design pattern in which the state of a system is represented as a sequence of events that have occurred over time. In an event-sourced system, changes to the state of the system are recorded as events and stored in an event store. The current state of the system is derived by replaying the events from the event store. One of the main benefits of event sourcing is that it provides a clear and auditable history of all the changes that have occurred in the system. This can be useful for debugging and for tracking the evolution of the system over time.Event sourcing is often used in conjunction with other patterns, such as Command Query Responsibility Segregation (CQRS) and domain-driven design, to build scalable and responsive systems with complex business logic. It is also useful for building systems that need to support undo/redo functionality or that need to integrate with external systems.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Event Sourcing - Martin Fowler", - "url": "https://martinfowler.com/eaaDev/EventSourcing.html", - "type": "article" - }, - { - "title": "Explore top posts about Architecture", - "url": "https://app.daily.dev/tags/architecture?ref=roadmapsh", - "type": "article" - }, - { - "title": "Event Sourcing 101", - "url": "https://www.youtube.com/watch?v=lg6aF5PP4Tc", - "type": "video" - } - ] - }, - "I-PUAE2AzbEaUkW9vMaUM": { - "title": "Test Driven Development", - "description": "Test driven development (TDD) is the process of writing tests for software's requirements which will fail until the software is developed to meet those requirements. Once those tests pass, then the cycle repeats to refactor code or develop another feature/requirement. In theory, this ensures that software is written to meet requirements in the simplest form, and avoids code defects.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "What is Test Driven Development (TDD)?", - "url": "https://www.guru99.com/test-driven-development.html", - "type": "article" - }, - { - "title": "Test-driven development", - "url": "https://www.ibm.com/garage/method/practices/code/practice_test_driven_development/", - "type": "article" - }, - { - "title": "Explore top posts about TDD", - "url": "https://app.daily.dev/tags/tdd?ref=roadmapsh", - "type": "article" - }, - { - "title": "Test-Driven Development", - "url": "https://www.youtube.com/watch?v=Jv2uxzhPFl4", - "type": "video" - } - ] - }, - "Ke522R-4k6TDeiDRyZbbU": { - "title": "Monolithic Apps", - "description": "Monolithic applications are designed as a single, cohesive unit where all components—such as user interface, business logic, and data access—are tightly integrated and run as a single service. This architecture simplifies development and deployment since the entire application is managed and deployed together. However, it can lead to challenges with scalability, maintainability, and agility as the application grows. Changes to one part of the application may require redeploying the entire system, and scaling might necessitate duplicating the entire application rather than scaling individual components. Monolithic architectures can be suitable for smaller applications or projects with less complex requirements, but many organizations transition to microservices or modular architectures to address these limitations as they scale.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Pattern: Monolithic Architecture", - "url": "https://microservices.io/patterns/monolithic.html", - "type": "article" - }, - { - "title": "Monolithic Architecture - Advantages & Disadvantages", - "url": "https://datamify.medium.com/monolithic-architecture-advantages-and-disadvantages-e71a603eec89", - "type": "article" - }, - { - "title": "Monolithic vs Microservice Architecture", - "url": "https://www.youtube.com/watch?v=NdeTGlZ__Do", - "type": "video" - } - ] - }, - "nkmIv3dNwre4yrULMgTh3": { - "title": "Serverless", - "description": "Serverless computing is a cloud computing model where developers build and run applications without managing server infrastructure. In this model, cloud providers handle the server management, scaling, and maintenance tasks. Developers deploy code in the form of functions, which are executed in response to events or triggers, and are billed based on the actual usage rather than reserved capacity. This approach simplifies development by abstracting infrastructure concerns, enabling automatic scaling, and reducing operational overhead. Common serverless platforms include AWS Lambda, Google Cloud Functions, and Azure Functions, which support a range of event-driven applications and microservices.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Serverless", - "url": "https://www.ibm.com/cloud/learn/serverless", - "type": "article" - }, - { - "title": "AWS Services", - "url": "https://aws.amazon.com/serverless/", - "type": "article" - }, - { - "title": "Explore top posts about Serverless", - "url": "https://app.daily.dev/tags/serverless?ref=roadmapsh", - "type": "article" - }, - { - "title": "Serverless Computing in 100 Seconds", - "url": "https://www.youtube.com/watch?v=W_VV2Fx32_Y&ab_channel=Fireship", - "type": "video" - } - ] - }, - "K55h3aqOGe6-hgVhiFisT": { - "title": "Microservices", - "description": "Microservices is an architectural style that structures an application as a collection of loosely coupled, independently deployable services. Each microservice focuses on a specific business capability and communicates with others via lightweight protocols, typically HTTP or messaging queues. This approach allows for greater scalability, flexibility, and resilience, as services can be developed, deployed, and scaled independently. Microservices also facilitate the use of diverse technologies and languages for different components, and they support continuous delivery and deployment. However, managing microservices involves complexity in terms of inter-service communication, data consistency, and deployment orchestration.\n\nVisit the following resources to learn more:", + "mGfD7HfuP184lFkXZzGjG": { + "title": "CI / CD", + "description": "CI/CD (Continuous Integration/Continuous Delivery) is a set of practices and tools in software development that automate the process of building, testing, and deploying code changes. Continuous Integration involves frequently merging code changes into a central repository, where automated builds and tests are run. Continuous Delivery extends this by automatically deploying all code changes to a testing or staging environment after the build stage. Some implementations include Continuous Deployment, where changes are automatically released to production. CI/CD pipelines typically involve stages like code compilation, unit testing, integration testing, security scans, and deployment. This approach aims to improve software quality, reduce time to market, and increase development efficiency by catching and addressing issues early in the development cycle.\n\nVisit the following resources to learn more:", "links": [ { - "title": "Pattern: Microservice Architecture", - "url": "https://microservices.io/patterns/microservices.html", + "title": "What is CI/CD?", + "url": "https://about.gitlab.com/topics/ci-cd/", "type": "article" }, { - "title": "What is Microservices?", - "url": "https://smartbear.com/solutions/microservices/", + "title": "A Primer: Continuous Integration and Continuous Delivery (CI/CD)", + "url": "https://thenewstack.io/a-primer-continuous-integration-and-continuous-delivery-ci-cd/", "type": "article" }, { - "title": "Microservices 101", - "url": "https://thenewstack.io/microservices-101/", + "title": "Articles about CI/CD", + "url": "https://thenewstack.io/category/ci-cd/", "type": "article" }, { - "title": "Articles about Microservices", - "url": "https://thenewstack.io/category/microservices/", + "title": "Explore top posts about CI/CD", + "url": "https://app.daily.dev/tags/cicd?ref=roadmapsh", "type": "article" }, { - "title": "Explore top posts about Microservices", - "url": "https://app.daily.dev/tags/microservices?ref=roadmapsh", - "type": "article" + "title": "DevOps CI/CD Explained in 100 Seconds", + "url": "https://www.youtube.com/watch?v=scEDHsr3APg", + "type": "video" }, { - "title": "Microservices explained in 5 minutes", - "url": "https://www.youtube.com/watch?v=lL_j7ilk7rc", + "title": "Automate your Workflows with GitHub Actions", + "url": "https://www.youtube.com/watch?v=nyKZTKQS_EQ", "type": "video" } ] }, + "monolith@Ke522R-4k6TDeiDRyZbbU.md": { + "title": "Monolith", + "description": "", + "links": [] + }, "n14b7sfTOwsjKTpFC9EZ2": { "title": "Service Mesh", "description": "A service mesh is an architectural pattern for enhancing communication, security, and management between microservices in a distributed network. It employs a collection of intelligent proxies to manage service-to-service communication, ensuring high availability, efficient load balancing, and robust service discovery. Additionally, a service mesh offers advanced features like observability for monitoring network behavior, and various traffic management capabilities. In a typical service mesh setup, each microservice is paired with a proxy. This proxy, often deployed using a sidecar pattern, is responsible not only for handling communication to and from its associated microservice but also for implementing various network functionalities. These functionalities include load balancing, intelligent routing, and ensuring secure data transfer. The sidecar pattern, integral to service meshes, involves deploying the proxy as a sidecar container alongside the main microservice container, especially in Kubernetes environments. This design allows the service mesh to function independently from the microservices themselves, simplifying management and updates.\n\nVisit the following resources to learn more:", @@ -1785,27 +1423,6 @@ } ] }, - "SGVwJme-jT_pbOTvems0v": { - "title": "Containerization vs Virtualization", - "description": "Containerization and virtualization are both technologies for isolating and running multiple applications on shared hardware, but they differ significantly in approach and resource usage. Virtualization creates separate virtual machines (VMs), each with its own operating system, running on a hypervisor. This provides strong isolation but consumes more resources. Containerization, exemplified by Docker, uses a shared operating system kernel to create isolated environments (containers) for applications. Containers are lighter, start faster, and use fewer resources than VMs. They're ideal for microservices architectures and rapid deployment. Virtualization offers better security isolation and is suitable for running different operating systems on the same hardware. Containerization provides greater efficiency and scalability, especially for cloud-native applications. The choice between them depends on specific use cases, security requirements, and infrastructure needs.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Containerization vs. Virtualization: Everything you need to know", - "url": "https://middleware.io/blog/containerization-vs-virtualization/", - "type": "article" - }, - { - "title": "Explore top posts about Containers", - "url": "https://app.daily.dev/tags/containers?ref=roadmapsh", - "type": "article" - }, - { - "title": "Virtual Machine (VM) vs Docker", - "url": "https://www.youtube.com/watch?v=a1M_thDTqmU", - "type": "video" - } - ] - }, "sVuIdAe08IWJVqAt4z-ag": { "title": "WebSockets", "description": "WebSockets provide a protocol for full-duplex, real-time communication between a client (usually a web browser) and a server over a single, long-lived connection. Unlike traditional HTTP, which requires multiple request-response cycles to exchange data, WebSockets establish a persistent connection that allows for continuous data exchange in both directions. This enables efficient real-time interactions, such as live chat, online gaming, and real-time updates on web pages. WebSocket connections start with an HTTP handshake, then upgrade to a WebSocket protocol, facilitating low-latency communication and reducing overhead compared to HTTP polling or long polling.\n\nVisit the following resources to learn more:", @@ -1952,26 +1569,10 @@ } ] }, - "fekyMpEnaGqjh1Cu4Nyc4": { - "title": "Web Servers", - "description": "Web servers are software or hardware systems that handle requests from clients (usually web browsers) and serve web content, such as HTML pages, images, and other resources. They process incoming HTTP or HTTPS requests, interact with application servers or databases if needed, and send the appropriate response back to the client. Popular web servers include Apache HTTP Server, Nginx, and Microsoft Internet Information Services (IIS). Web servers are essential for hosting websites and web applications, managing traffic, and ensuring reliable access to online resources by handling concurrent connections, serving static and dynamic content, and providing security features like SSL/TLS encryption.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "What is a Web Server? - Mozilla", - "url": "https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_web_server", - "type": "article" - }, - { - "title": "What is a Web Server?", - "url": "https://www.hostinger.co.uk/tutorials/what-is-a-web-server", - "type": "article" - }, - { - "title": "Web Server Concepts and Examples", - "url": "https://youtu.be/9J1nJOivdyw", - "type": "video" - } - ] + "learn-about-web-servers@fekyMpEnaGqjh1Cu4Nyc4.md": { + "title": "Learn about Web Servers", + "description": "", + "links": [] }, "SHmbcMRsc3SygEDksJQBD": { "title": "Building For Scale", @@ -2224,43 +1825,6 @@ } ] }, - "f7iWBkC0X7yyCoP_YubVd": { - "title": "Migration Strategies", - "description": "Migration strategies involve planning and executing the transition of applications, data, or infrastructure from one environment to another, such as from on-premises systems to the cloud or between different cloud providers. Key strategies include:\n\n1. **Rehost (Lift and Shift)**: Moving applications as-is to the new environment with minimal changes, which is often the quickest but may not fully leverage new platform benefits.\n2. **Replatform**: Making some optimizations or changes to adapt applications for the new environment, enhancing performance or scalability while retaining most of the existing architecture.\n3. **Refactor**: Redesigning and modifying applications to optimize for the new environment, often taking advantage of new features and improving functionality or performance.\n4. **Repurchase**: Replacing existing applications with new, often cloud-based, solutions that better meet current needs.\n5. **Retain**: Keeping certain applications or systems in their current environment due to specific constraints or requirements.\n6. **Retire**: Decommissioning applications that are no longer needed or are redundant.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Databases as a Challenge for Continuous Delivery", - "url": "https://phauer.com/2015/databases-challenge-continuous-delivery/", - "type": "article" - }, - { - "title": "AWS Cloud Migration Strategies", - "url": "https://www.youtube.com/watch?v=9ziB82V7qVM", - "type": "video" - } - ] - }, - "osQlGGy38xMcKLtgZtWaZ": { - "title": "Types of Scaling", - "description": "Horizontal scaling (scaling out/in) involves adding or removing instances of resources, such as servers or containers, to handle increased or decreased loads. It distributes the workload across multiple instances to improve performance and redundancy. This method enhances the system's capacity by expanding the number of nodes in a distributed system.\n\nVertical scaling (scaling up/down) involves increasing or decreasing the resources (CPU, memory, storage) of a single instance or server to handle more load or reduce capacity. This method improves performance by upgrading the existing hardware or virtual machine but has limits based on the maximum capacity of the individual resource.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Horizontal vs Vertical Scaling", - "url": "https://touchstonesecurity.com/horizontal-vs-vertical-scaling-what-you-need-to-know/", - "type": "article" - }, - { - "title": "Vertical Vs Horizontal Scaling: Key Differences You Should Know", - "url": "https://www.youtube.com/watch?v=dvRFHG2-uYs", - "type": "video" - }, - { - "title": "System Design 101", - "url": "https://www.youtube.com/watch?v=Y-Gl4HEyeUQ", - "type": "video" - } - ] - }, "4X-sbqpP0NDhM99bKdqIa": { "title": "Instrumentation", "description": "Instrumentation, monitoring, and telemetry are critical components for ensuring system reliability and performance. _Instrumentation_ refers to embedding code or tools within applications to capture key metrics, logs, and traces. _Monitoring_ involves observing these metrics in real time to detect anomalies, failures, or performance issues, often using dashboards and alerting systems. _Telemetry_ is the automated collection and transmission of this data from distributed systems, enabling visibility into system behavior. Together, these practices provide insights into the health, usage, and performance of systems, aiding in proactive issue resolution and optimizing overall system efficiency.\n\nVisit the following resources to learn more:", @@ -3026,37 +2590,10 @@ } ] }, - "osvajAJlwGI3XnX0fE-kA": { - "title": "Long Polling", - "description": "Long polling is a technique where the client polls the server for new data. However, if the server does not have any data available for the client, instead of sending an empty response, the server holds the request and waits for some specified period of time for new data to be available. If new data becomes available during that time, the server immediately sends a response to the client, completing the open request. If no new data becomes available and the timeout period specified by the client expires, the server sends a response indicating that fact. The client will then immediately re-request data from the server, creating a new request-response cycle.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Long Polling", - "url": "https://javascript.info/long-polling", - "type": "article" - }, - { - "title": "What is Long Polling?", - "url": "https://www.youtube.com/watch?v=LD0_-uIsnOE", - "type": "video" - } - ] - }, - "Tt7yr-ChHncJG0Ge1f0Xk": { - "title": "Short Polling", - "description": "Short polling is a technique where a client periodically sends requests to a server at regular intervals to check for updates or new data. The server responds with the current state or any changes since the last request. While simple to implement and compatible with most HTTP infrastructures, short polling can be inefficient due to the frequent network requests and potential for increased latency in delivering updates. It contrasts with long polling and WebSockets, which offer more efficient mechanisms for real-time communication. Short polling is often used when real-time requirements are less stringent and ease of implementation is a priority.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Amazon SQS Short and Long Polling", - "url": "https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html", - "type": "article" - }, - { - "title": "Short Polling vs Long Polling vs WebSockets", - "url": "https://www.youtube.com/watch?v=ZBM28ZPlin8", - "type": "video" - } - ] + "long--short-polling@osvajAJlwGI3XnX0fE-kA.md": { + "title": "Long / Short Polling", + "description": "", + "links": [] }, "M0iaSSdVPWaCUpyTG50Vf": { "title": "Redis", @@ -3209,63 +2746,15 @@ } ] }, - "WiAK70I0z-_bzbWNwiHUd": { - "title": "TimeScale", - "description": "TimescaleDB is an open-source, time-series database built as an extension to PostgreSQL. It is designed to handle large volumes of time-stamped data efficiently, making it suitable for applications that require high-performance analytics on time-series data, such as monitoring systems, IoT applications, and financial services. TimescaleDB leverages PostgreSQL’s features while providing additional capabilities for time-series data, including efficient data ingestion, advanced time-based queries, and automatic data partitioning (hypertables). It supports complex queries and aggregations, making it a powerful tool for analyzing trends and patterns in time-series data.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Timescale Website", - "url": "https://www.timescale.com/", - "type": "article" - }, - { - "title": "Tutorial - TimeScaleDB Explained in 100 Seconds", - "url": "https://www.youtube.com/watch?v=69Tzh_0lHJ8", - "type": "video" - }, - { - "title": "What is Time Series Data?", - "url": "https://www.youtube.com/watch?v=Se5ipte9DMY", - "type": "video" - } - ] + "timescaledb@WiAK70I0z-_bzbWNwiHUd.md": { + "title": "TimescaleDB", + "description": "", + "links": [] }, - "gT6-z2vhdIQDzmR2K1g1U": { + "cassandra@zsiZLWJ2bMvrjuHch5fX_.md": { "title": "Cassandra", - "description": "Apache Cassandra is a highly scalable, distributed NoSQL database designed to handle large amounts of structured data across multiple commodity servers. It provides high availability with no single point of failure, offering linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure. Cassandra uses a masterless ring architecture, where all nodes are equal, allowing for easy data distribution and replication. It supports flexible data models and can handle both unstructured and structured data. Cassandra excels in write-heavy environments and is particularly suitable for applications requiring high throughput and low latency. Its data model is based on wide column stores, offering a more complex structure than key-value stores. Widely used in big data applications, Cassandra is known for its ability to handle massive datasets while maintaining performance and reliability.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Apache Cassandra", - "url": "https://cassandra.apache.org/_/index.html", - "type": "article" - }, - { - "title": "article@Cassandra - Quick Guide", - "url": "https://www.tutorialspoint.com/cassandra/cassandra_quick_guide.htm", - "type": "article" - }, - { - "title": "Explore top posts about Backend Development", - "url": "https://app.daily.dev/tags/backend?ref=roadmapsh", - "type": "article" - }, - { - "title": "Apache Cassandra - Course for Beginners", - "url": "https://www.youtube.com/watch?v=J-cSy5MeMOA", - "type": "video" - } - ] - }, - "QZwTLOvjUTaSb_9deuxsR": { - "title": "Base", - "description": "Oracle Base Database Service enables you to maintain absolute control over your data while using the combined capabilities of Oracle Database and Oracle Cloud Infrastructure. Oracle Base Database Service offers database systems (DB systems) on virtual machines. They are available as single-node DB systems and multi-node RAC DB systems on Oracle Cloud Infrastructure (OCI). You can manage these DB systems by using the OCI Console, the OCI API, the OCI CLI, the Database CLI (DBCLI), Enterprise Manager, or SQL Developer.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Base Database Documentation", - "url": "https://docs.oracle.com/en-us/iaas/base-database/index.html", - "type": "article" - } - ] + "description": "", + "links": [] }, "5xy66yQrz1P1w7n6PcAFq": { "title": "AWS Neptune", @@ -3324,20 +2813,236 @@ } ] }, - "ZsZvStCvKwFhlBYe9HGhl": { - "title": "Migrations", - "description": "Database migrations are a version-controlled way to manage and apply incremental changes to a database schema over time, allowing developers to modify the database structure (e.g., adding tables, altering columns) without affecting existing data. They ensure that the database evolves alongside application code in a consistent, repeatable manner across environments (e.g., development, testing, production), while maintaining compatibility with older versions of the schema. Migrations are typically written in SQL or a database-agnostic language, and are executed using migration tools like Liquibase, Flyway, or built-in ORM features such as Django or Rails migrations.\n\nLearn more from the following resources:", + "frontend-basics@oyg5g4-cY5EBEUgVkjnL3.md": { + "title": "Frontend Basics", + "description": "", + "links": [] + }, + "html@9-pCsW650T1mfj5dmRB9L.md": { + "title": "HTML", + "description": "", + "links": [] + }, + "css@utA1W2O6pzoV_LbtDE5DN.md": { + "title": "CSS", + "description": "", + "links": [] + }, + "javascript@An2lMuJEkkpL0cfw4RrSl.md": { + "title": "JavaScript", + "description": "", + "links": [] + }, + "K55h3aqOGe6-hgVhiFisT": { + "title": "Microservices", + "description": "Microservices is an architectural style that structures an application as a collection of loosely coupled, independently deployable services. Each microservice focuses on a specific business capability and communicates with others via lightweight protocols, typically HTTP or messaging queues. This approach allows for greater scalability, flexibility, and resilience, as services can be developed, deployed, and scaled independently. Microservices also facilitate the use of diverse technologies and languages for different components, and they support continuous delivery and deployment. However, managing microservices involves complexity in terms of inter-service communication, data consistency, and deployment orchestration.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Pattern: Microservice Architecture", + "url": "https://microservices.io/patterns/microservices.html", + "type": "article" + }, + { + "title": "What is Microservices?", + "url": "https://smartbear.com/solutions/microservices/", + "type": "article" + }, + { + "title": "Microservices 101", + "url": "https://thenewstack.io/microservices-101/", + "type": "article" + }, + { + "title": "Articles about Microservices", + "url": "https://thenewstack.io/category/microservices/", + "type": "article" + }, + { + "title": "Explore top posts about Microservices", + "url": "https://app.daily.dev/tags/microservices?ref=roadmapsh", + "type": "article" + }, + { + "title": "Microservices explained in 5 minutes", + "url": "https://www.youtube.com/watch?v=lL_j7ilk7rc", + "type": "video" + } + ] + }, + "nkmIv3dNwre4yrULMgTh3": { + "title": "Serverless", + "description": "Serverless computing is a cloud computing model where developers build and run applications without managing server infrastructure. In this model, cloud providers handle the server management, scaling, and maintenance tasks. Developers deploy code in the form of functions, which are executed in response to events or triggers, and are billed based on the actual usage rather than reserved capacity. This approach simplifies development by abstracting infrastructure concerns, enabling automatic scaling, and reducing operational overhead. Common serverless platforms include AWS Lambda, Google Cloud Functions, and Azure Functions, which support a range of event-driven applications and microservices.\n\nVisit the following resources to learn more:", "links": [ { - "title": "What are Database Migrations?", - "url": "https://www.prisma.io/dataguide/types/relational/what-are-database-migrations", + "title": "Serverless", + "url": "https://www.ibm.com/cloud/learn/serverless", + "type": "article" + }, + { + "title": "AWS Services", + "url": "https://aws.amazon.com/serverless/", + "type": "article" + }, + { + "title": "Explore top posts about Serverless", + "url": "https://app.daily.dev/tags/serverless?ref=roadmapsh", "type": "article" }, { - "title": "Database Migrations for Beginners", - "url": "https://www.youtube.com/watch?v=dJDBP7pPA-o", + "title": "Serverless Computing in 100 Seconds", + "url": "https://www.youtube.com/watch?v=W_VV2Fx32_Y&ab_channel=Fireship", "type": "video" } ] + }, + "clickhouse@ZyGLSvx17p7QmYDy1LFbM.md": { + "title": "ClickHouse", + "description": "", + "links": [] + }, + "scylladb@aArZ3gKwObzafCkTOd-Hj.md": { + "title": "ScyllaDB", + "description": "", + "links": [] + }, + "dgraph@GKrcTsUi5XWj_pP1TOK0S.md": { + "title": "DGraph", + "description": "", + "links": [] + }, + "migrations@MOLAXgs0CMCT7o84L0EaK.md": { + "title": "Migrations", + "description": "", + "links": [] + }, + "claude-code@RcC1fVuePQZ59AsJfeTdR.md": { + "title": "Claude Code", + "description": "", + "links": [] + }, + "copilot@HQrxxDxKN8gizvXRU5psW.md": { + "title": "Copilot", + "description": "", + "links": [] + }, + "cursor@CKlkVK_7GZ7xzIUHJqZr8.md": { + "title": "Cursor", + "description": "", + "links": [] + }, + "antigravity@E7-LveK7jO2npxVTLUDfw.md": { + "title": "Antigravity", + "description": "", + "links": [] + }, + "how-llms-work@tUNP5VRKvrPcufPDPPEo8.md": { + "title": "How LLMs work", + "description": "", + "links": [] + }, + "ai-vs-traditional-coding@IZKl6PxbvgNkryAkdy3-p.md": { + "title": "AI vs Traditional Coding", + "description": "", + "links": [] + }, + "code-reviews@0TMdly8yiqnNR8sx36iqc.md": { + "title": "Code Reviews", + "description": "", + "links": [] + }, + "documentation-generation@q7NpwqQXUp4wt2to-yFiP.md": { + "title": "Documentation Generation", + "description": "", + "links": [] + }, + "learn-the-basics@UTupdqjOyLh7-56_0SXJ8.md": { + "title": "Learn the Basics", + "description": "", + "links": [] + }, + "ai-assisted-coding@fA3yi9puMbTFmbPpo6OjN.md": { + "title": "AI Assisted Coding", + "description": "", + "links": [] + }, + "prompting-techniques@xL8d-uHMpJKwUvT8z-Jia.md": { + "title": "Prompting Techniques", + "description": "", + "links": [] + }, + "gemini@Bic4PHhz-YqzPWRimJO83.md": { + "title": "Gemini", + "description": "", + "links": [] + }, + "openai@-ye5ZtYFDoYGpj-UJaBP8.md": { + "title": "OpenAI", + "description": "", + "links": [] + }, + "anthropic@Lw2nR7x8PYgq1P5CxPAxi.md": { + "title": "Anthropic", + "description": "", + "links": [] + }, + "refactoring@EYT2rTLZ8tUW2u8DOnAWF.md": { + "title": "Refactoring", + "description": "", + "links": [] + }, + "applications@Nx7mjvYgqLpmJ0_iSx5of.md": { + "title": "Applications", + "description": "", + "links": [] + }, + "streaming@9f-aWi3_7USy4XpNzrTL6.md": { + "title": "Streaming", + "description": "", + "links": [] + }, + "structured-outputs@GMxPmyatxYmIPRFHfRAnr.md": { + "title": "Structured Outputs", + "description": "", + "links": [] + }, + "function-calling@Uve-UObgOBfrd-cLayVWe.md": { + "title": "Function Calling", + "description": "", + "links": [] + }, + "integration-patterns@iatQ3RCxESHt1CwN3PSfx.md": { + "title": "Integration Patterns", + "description": "", + "links": [] + }, + "rags@6PCOCzCbx7jo9wO2Hl2gy.md": { + "title": "RAGs", + "description": "", + "links": [] + }, + "vectors@yKNdBbahm_h81xdMDT-qx.md": { + "title": "Vectors", + "description": "", + "links": [] + }, + "embeddings@Ofv__kXuBk-Vv2jVhaFss.md": { + "title": "Embeddings", + "description": "", + "links": [] + }, + "mcp@mHnI19RgZ57XDEIDaHxD0.md": { + "title": "MCP", + "description": "", + "links": [] + }, + "skills@IWubGe3oquSj882QVnhLU.md": { + "title": "Skills", + "description": "", + "links": [] + }, + "agents@w1D3-bSg93ndKK9XJTu7z.md": { + "title": "Agents", + "description": "", + "links": [] } } \ No newline at end of file diff --git a/public/roadmap-content/blockchain.json b/public/roadmap-content/blockchain.json index b844a498e31e..2210c22c06f4 100644 --- a/public/roadmap-content/blockchain.json +++ b/public/roadmap-content/blockchain.json @@ -1,44 +1,8 @@ { - "MvpHHpbS-EksUfuOKILOq": { - "title": "Basic Blockchain Knowledge", - "description": "A blockchain is a decentralized, distributed, and oftentimes public, digital ledger consisting of records called blocks that is used to record transactions across many computers so that any involved block cannot be altered retroactively, without the alteration of all subsequent blocks.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Cyfirn Updraft | Blockchain Basics", - "url": "https://updraft.cyfrin.io/courses/blockchain-basics", - "type": "course" - }, - { - "title": "Introduction to Blockchain", - "url": "https://chain.link/education-hub/blockchain", - "type": "article" - }, - { - "title": "Blockchain Explained", - "url": "https://www.investopedia.com/terms/b/blockchain.asp", - "type": "article" - }, - { - "title": "An Elementary and Slightly Distilled Introduction to Blockchain", - "url": "https://markpetherbridge.co.uk/blog/an-elementary-and-slightly-distilled-introduction-to-blockchain/", - "type": "article" - }, - { - "title": "Explore top posts about Blockchain", - "url": "https://app.daily.dev/tags/blockchain?ref=roadmapsh", - "type": "article" - }, - { - "title": "How does a blockchain work?", - "url": "https://youtu.be/SSo_EIwHSd4", - "type": "video" - }, - { - "title": "What Is a Blockchain? | Blockchain Basics for Developers", - "url": "https://youtu.be/4ff9esY_4aU", - "type": "video" - } - ] + "introduction@MvpHHpbS-EksUfuOKILOq.md": { + "title": "Introduction", + "description": "", + "links": [] }, "Atv-4Q7edtvfySs_XhgEq": { "title": "Blockchain Structure", @@ -215,52 +179,15 @@ "description": "", "links": [] }, - "bA4V_9AbV3uQi3qrtLWk0": { - "title": "General Blockchain Knowledge", - "description": "A blockchain is a decentralized, distributed ledger technology that records transactions across many computers in such a way that the registered transactions cannot be altered retroactively. This technology is the backbone of cryptocurrencies like Bitcoin and Ethereum, but its applications extend far beyond digital currencies.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Cyfirn Updraft | Blockchain Basics", - "url": "https://updraft.cyfrin.io/courses/blockchain-basics", - "type": "course" - }, - { - "title": "The Complete Course On Understanding Blockchain Technology", - "url": "https://www.udemy.com/course/understanding-blockchain-technology/", - "type": "course" - }, - { - "title": "What is a Blockchain?", - "url": "https://www.wired.com/story/guide-blockchain/", - "type": "article" - }, - { - "title": "Explore top posts about Blockchain", - "url": "https://app.daily.dev/tags/blockchain?ref=roadmapsh", - "type": "article" - }, - { - "title": "Blockchain Technology Explained", - "url": "https://youtu.be/qOVAbKKSH10", - "type": "video" - } - ] + "understanding-blockchain@bA4V_9AbV3uQi3qrtLWk0.md": { + "title": "Understanding Blockchain", + "description": "", + "links": [] }, - "B7niNXMOTbHn_1ixKQ8ri": { - "title": "Mining and Incentive Models", - "description": "Mining is the process of adding transaction details to the Blockchain, like sender address, hash value, etc. The Blockchain contains all the history of the transactions that have taken place in the past for record purposes and it is stored in such a manner that, it can’t be manipulated.\n\nAn Incentive is basically a reward given to a Blockchain Miner for speeding up the transactions and making correct decisions while processing the complete transaction securely.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Ethereum Consensus Mechanisms", - "url": "https://ethereum.org/en/developers/docs/consensus-mechanisms/", - "type": "article" - }, - { - "title": "Solana Staking Rewards", - "url": "https://docs.solana.com/implemented-proposals/staking-rewards", - "type": "article" - } - ] + "mining--incentive-models@B7niNXMOTbHn_1ixKQ8ri.md": { + "title": "Mining & Incentive Models", + "description": "", + "links": [] }, "E9HR_voxQ2a2tvWUuva_p": { "title": "Decentralization vs Trust", @@ -366,62 +293,10 @@ } ] }, - "e_I-4Q6_qIW09Hcn-pgKm": { - "title": "Cryptography", - "description": "Cryptography, or cryptology, is the practice and study of techniques for secure communication in the presence of adversarial behavior. Cryptography is the technique of protecting information and communications by using codes, so that only those intended to receive the information can read and process it. It involves various algorithms and protocols to secure communication by converting plain text into unreadable formats, making it incomprehensible to unauthorized parties.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Cryptography", - "url": "https://en.wikipedia.org/wiki/Cryptography", - "type": "article" - }, - { - "title": "What is Cryptography", - "url": "https://www.synopsys.com/glossary/what-is-cryptography.html", - "type": "article" - }, - { - "title": "Explore top posts about Cryptography", - "url": "https://app.daily.dev/tags/cryptography?ref=roadmapsh", - "type": "article" - }, - { - "title": "Asymmetric Encryption - Simply Explained", - "url": "https://youtu.be/AQDCe585Lnc", - "type": "video" - }, - { - "title": "What is Cryptography?", - "url": "https://www.youtube.com/watch?v=6_Cxj5WKpIw", - "type": "video" - } - ] - }, - "_BkpK9qgp9up8nXNH7q4m": { - "title": "Consensus Protocols", - "description": "Consensus for blockchain is a procedure in which the peers of a Blockchain network reach agreement about the present state of the data in the network. Through this, consensus algorithms establish reliability and trust in the Blockchain network.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Consensus Mechanisms in Blockchain: A Beginner’s Guide", - "url": "https://crypto.com/university/consensus-mechanisms-explained", - "type": "article" - }, - { - "title": "Consensus Mechanisms", - "url": "https://ethereum.org/en/developers/docs/consensus-mechanisms/", - "type": "article" - }, - { - "title": "What Is a Consensus Mechanism?", - "url": "https://www.coindesk.com/learn/what-is-a-consensus-mechanism/", - "type": "article" - }, - { - "title": "Consensus Algorithm", - "url": "https://www.cyfrin.io/glossary/consensus-algorithm", - "type": "article" - } - ] + "cryptography--hashing@e_I-4Q6_qIW09Hcn-pgKm.md": { + "title": "Cryptography & Hashing", + "description": "", + "links": [] }, "nNPa6jKRUaitmHwBip_LE": { "title": "Blockchain Interoperability", @@ -485,27 +360,6 @@ } ] }, - "ug4FB4RXItHU0ADnisvve": { - "title": "TON", - "description": "TON is a fully decentralized layer-1 blockchain designed by Telegram to onboard billions of users. It boasts ultra-fast transactions, tiny fees, easy-to-use apps, and is environmentally friendly.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Start Building on The Open Network", - "url": "https://ton.org/dev", - "type": "article" - }, - { - "title": "TON Introduction", - "url": "https://ton.org/docs/learn/introduction", - "type": "article" - }, - { - "title": "Blockchain Analysis", - "url": "https://ton.org/analysis", - "type": "article" - } - ] - }, "tSJyp46rkJcOtDqVpJX1s": { "title": "EVM-Based", "description": "The Ethereum Virtual Machine (EVM) is a dedicated software virtual stack that executes smart contract bytecode and is integrated into each Ethereum node. Simply said, EVM is a software framework that allows developers to construct Ethereum-based decentralized applications (DApps). All Ethereum accounts and smart contracts are stored on this virtual computer. Many blockchains have forked the Ethereum blockchain and added functionality on top, these blockchains are referred to as EVM-based blockchains.\n\nVisit the following resources to learn more:", @@ -532,21 +386,10 @@ } ] }, - "EQgb4LqXnyq3gOX7Fb85s": { - "title": "Blockchains", - "description": "Blockchain systems vary considerably in their design, particularly with regard to the consensus mechanisms used to perform the essential task of verifying network data.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Types of Blockchains: PoW, PoS, and Private", - "url": "https://www.gemini.com/cryptopedia/blockchain-types-pow-pos-private", - "type": "article" - }, - { - "title": "Explore top posts about Blockchain", - "url": "https://app.daily.dev/tags/blockchain?ref=roadmapsh", - "type": "article" - } - ] + "types-of-blockchains@EQgb4LqXnyq3gOX7Fb85s.md": { + "title": "Types of Blockchains", + "description": "", + "links": [] }, "JLXIbP-y8C2YktIk3R12m": { "title": "Ethereum", @@ -610,31 +453,10 @@ } ] }, - "sJj-6wG5KjjzYYia_eo63": { - "title": "Binance Smart Chain", - "description": "Binance Smart Chain (also known as BNB Chain) is a blockchain project initiated by Binance as a central piece of their cryptocurrency exchange, which is the largest exchange in the world in terms of daily trading volume of cryptocurrencies.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "BNB Chain", - "url": "https://www.binance.com/en/blog/all/bnb-chain-blockchain-for-exchanging-the-world-304219301536473088", - "type": "article" - }, - { - "title": "Binance Website", - "url": "https://www.binance.com/en", - "type": "article" - }, - { - "title": "Binance Whitepaper", - "url": "https://www.exodus.com/assets/docs/binance-coin-whitepaper.pdf", - "type": "article" - }, - { - "title": "Explore top posts about Crypto", - "url": "https://app.daily.dev/tags/crypto?ref=roadmapsh", - "type": "article" - } - ] + "bnb-chain@sJj-6wG5KjjzYYia_eo63.md": { + "title": "BNB Chain", + "description": "", + "links": [] }, "UQ9AejYV6_Sk6ZJkXYWf7": { "title": "Gnosis Chain", @@ -657,22 +479,6 @@ } ] }, - "PkRAYBZQAUAHxWEeCCX4U": { - "title": "Huobi Eco Chain", - "description": "Huobi's ECO Chain (also known as HECO) is a public blockchain that provides developers with a low-cost onchain environment for running decentralized apps (dApps) of smart contracts and storing digital assets.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Introduction to HECO Chain", - "url": "https://docs.hecochain.com/#/", - "type": "article" - }, - { - "title": "Huobi Eco Chain whitepaper", - "url": "https://www.hecochain.com/developer.133bd45.pdf", - "type": "article" - } - ] - }, "txQ9U1wcnZkQVh6B49krk": { "title": "Avalanche", "description": "Avalanche describes itself as an “open, programmable smart contracts platform for decentralized applications.” What does that mean? Like many other decentralized protocols, Avalanche has its own token called AVAX, which is used to pay transaction fees and can be staked to secure the network.\n\nVisit the following resources to learn more:", @@ -876,47 +682,15 @@ } ] }, - "ixTIn2Uhs-i5-UPt9jKAa": { + "arbitrum@A_yVDg-6b42ynmh71jk1V.md": { "title": "Arbitrum", - "description": "Arbitrum aims to reduce transaction fees and congestion by moving as much computation and data storage off of Ethereum's main blockchain (layer 1) as it can. Storing data off of Ethereum's blockchain is known as Layer 2 scaling solutions.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Arbitrum - The Future of Ethereum", - "url": "https://arbitrum.io/", - "type": "article" - }, - { - "title": "Getting Started with Arbitrum", - "url": "https://docs.arbitrum.io/welcome/get-started", - "type": "article" - }, - { - "title": "Arbitrum Whitepaper", - "url": "https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-kalodner.pdf", - "type": "article" - } - ] + "description": "", + "links": [] }, - "Ib9STGxQa8yeoB-GFeGDE": { - "title": "Moonbeam / Moonriver", - "description": "Moonbeam is a Polkadot network parachain that promises cross-chain interoperability between the Ethereum and Polkadot . More specifically, Moonbeam is a smart contract platform that enables developers to move dApps between the two networks without having to rewrite code or redeploy infrastructure. Moonriver is an incentivized testnet. It enables developers to create, test, and adjust their protocols prior to launching on Moonbeam. Moonbeam is the mainnet of the ecosystem.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Moonbeam", - "url": "https://moonbeam.network/", - "type": "article" - }, - { - "title": "About Moonbeam", - "url": "https://docs.moonbeam.network/learn/platform/networks/moonbeam/", - "type": "article" - }, - { - "title": "Moonbeam Vision", - "url": "https://docs.moonbeam.network/learn/platform/vision/", - "type": "article" - } - ] + "optimism@EK5TqRRn15ExsGc4gfMLu.md": { + "title": "Optimism", + "description": "", + "links": [] }, "hlcavpstLnXkJcjccQUL8": { "title": "TVM-Based", @@ -1350,26 +1124,10 @@ } ] }, - "lXukWXEatsF87EWFSYyOO": { - "title": "IDEs", - "description": "An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools and a debugger.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Integrated Development Environments", - "url": "https://ethereum.org/en/developers/docs/ides/", - "type": "article" - }, - { - "title": "Remix - Ethereum IDE & community", - "url": "https://remix-project.org/", - "type": "article" - }, - { - "title": "Explore top posts about DevTools", - "url": "https://app.daily.dev/tags/devtools?ref=roadmapsh", - "type": "article" - } - ] + "remix@lXukWXEatsF87EWFSYyOO.md": { + "title": "Remix", + "description": "", + "links": [] }, "S68IUKs0k_FFHEH97xxs7": { "title": "Crypto Faucets", @@ -1418,27 +1176,6 @@ } ] }, - "KRtEN0845lV5e85SOi6oZ": { - "title": "Smart Contract Frameworks", - "description": "Building a full-fledged dapp requires different pieces of technology. Software frameworks include many of the needed features or provide easy plugin systems to pick the tools you desire.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "dApp Development Frameworks", - "url": "https://ethereum.org/en/developers/docs/frameworks/", - "type": "article" - }, - { - "title": "A Definitive List of Ethereum Developer Tools - Frameworks", - "url": "https://media.consensys.net/an-definitive-list-of-ethereum-developer-tools-2159ce865974#frameworks", - "type": "article" - }, - { - "title": "Top 10 Smart Contract Developer Tools You Need for 2022", - "url": "https://medium.com/better-programming/top-10-smart-contract-developer-tools-you-need-for-2022-b763f5df689a", - "type": "article" - } - ] - }, "l110d4NqTQt9lfEoxqXMX": { "title": "Hardhat", "description": "Hardhat is an Ethereum development environment. It allows users to compile contracts and run them on a development network. Get Solidity stack traces, console.log and more.\n\nVisit the following resources to learn more:", @@ -1643,27 +1380,6 @@ } ] }, - "n3pipnNb76aaQeUwrDLk_": { - "title": "Tools", - "description": "Blockchain and smart contract technology is fairly new, therefore, you should expect constant changes in the security landscape, as new bugs and security risks are discovered, and new best practices are developed. Keeping track of this constantly moving landscape proves difficult, so using tools to aid this mission is important. The cost of failing to properly secure smart contracts can be high, and because change can be difficult, we must make use of these tools.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Best Blockchain Tools", - "url": "https://101blockchains.com/best-blockchain-tools/", - "type": "article" - }, - { - "title": "Top 10 Tools for Blockchain Development", - "url": "https://www.blockchain-council.org/blockchain/top-10-tools-for-blockchain-development/", - "type": "article" - }, - { - "title": "Cyfrin Updraft | Security Tools", - "url": "https://updraft.cyfrin.io/courses/security/audit/tools", - "type": "video" - } - ] - }, "YA3-7EZBRW-T-8HuVI7lk": { "title": "Slither", "description": "Slither is a Solidity static analysis framework written in Python 3. It runs a suite of vulnerability detectors, prints visual information about contract details, and provides an API to easily write custom analyses. Slither enables developers to find vulnerabilities, enhance their code comprehension, and quickly prototype custom analyses.\n\nVisit the following resources to learn more:", @@ -1685,32 +1401,10 @@ } ] }, - "twR3UdzUNSztjpwbAUT4F": { - "title": "Manticore", - "description": "Manticore is a symbolic execution tool for analysis of smart contracts and binaries.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Manticore Docs", - "url": "https://manticore.readthedocs.io/", - "type": "article" - } - ] - }, - "XIgczUc3yKo6kw-_3gskC": { - "title": "MythX", - "description": "MythX is a comprehensive smart contract security analysis tools developed by Consensys. It allows users to detect security vulnerabilities in Ethereum smart contracts throughout the development life cycle as well as analyze Solidity dapps for security holes and known smart contract vulnerabilities.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "MythX", - "url": "https://mythx.io/", - "type": "article" - }, - { - "title": "MythX Documentation", - "url": "https://docs.mythx.io/", - "type": "article" - } - ] + "diligent-fuzzing@twR3UdzUNSztjpwbAUT4F.md": { + "title": "Diligent Fuzzing", + "description": "", + "links": [] }, "U4H62lVac8wIgxNJ3N3ga": { "title": "Echidna", @@ -1728,17 +1422,6 @@ } ] }, - "fbESHQGYqxKRi-5DW8TY3": { - "title": "Management Platforms", - "description": "Managing smart contracts in a production environment (mainnet) can prove difficult as users must keep track of different versions, blockchains, deployments, etc. Using a tool for this process eliminates a lot of the risk that comes with manual tracking.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "What is a Blockchain Platform?", - "url": "https://www.bitdegree.org/crypto/tutorials/blockchain-platform", - "type": "article" - } - ] - }, "qox-x_q-Q7aWcNFWD7RkT": { "title": "OpenZeppelin", "description": "OpenZeppelin Contracts helps you minimize risk by using battle-tested libraries of smart contracts for Ethereum and other blockchains. It includes the most used implementations of ERC standards.\n\nVisit the following resources to learn more:", @@ -1750,27 +1433,6 @@ } ] }, - "Fs9rcEh_f9fJ2tF-bkAUE": { - "title": "Version Control Systems", - "description": "Version control/source control systems allow developers to track and control changes to code over time. These services often include the ability to make atomic revisions to code, branch/fork off of specific points, and to compare versions of code. They are useful in determining the who, what, when, and why code changes were made.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Git", - "url": "https://git-scm.com/", - "type": "article" - }, - { - "title": "Mercurial", - "url": "https://www.mercurial-scm.org/", - "type": "article" - }, - { - "title": "What is Version Control?", - "url": "https://www.atlassian.com/git/tutorials/what-is-version-control", - "type": "article" - } - ] - }, "gpS5CckcQZX3TMFQ2jtIL": { "title": "Git", "description": "Git 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:", @@ -1812,27 +1474,6 @@ } ] }, - "oSK3MRQD_4j1gGDORN7RO": { - "title": "Repo Hosting Services", - "description": "When working on a team, you often need a remote place to put your code so others can access it, create their own branches, and create or review pull requests. These services often include issue tracking, code review, and continuous integration features. A few popular choices are GitHub, GitLab, BitBucket, and AWS CodeCommit.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "GitHub", - "url": "https://github.com/features/", - "type": "article" - }, - { - "title": "GitLab", - "url": "https://about.gitlab.com/", - "type": "article" - }, - { - "title": "BitBucket", - "url": "https://bitbucket.org/product/guides/getting-started/overview", - "type": "article" - } - ] - }, "GOgeaQoRvqg-7mAfL_A8t": { "title": "GitHub", "description": "GitHub is a provider of Internet hosting for software development and version control using Git. It offers the distributed version control and source code management functionality of Git, plus its own features.\n\nVisit the following resources to learn more:", @@ -1931,36 +1572,10 @@ } ] }, - "SXXvFtf_7Rx64cHSEWxMS": { - "title": "dApps - Decentralized Applications", - "description": "A decentralized application (dApp) is an application that can operate autonomously, through the use of smart contracts that run on a blockchain. Like traditional applications, dApps provide some function or utility to its users.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Introduction to dApps", - "url": "https://ethereum.org/en/developers/docs/dapps/", - "type": "article" - }, - { - "title": "What Is a Dapp? Decentralized Apps Explained", - "url": "https://www.coindesk.com/learn/what-is-a-dapp-decentralized-apps-explained/", - "type": "article" - }, - { - "title": "Cyfrin Glossary | dApp", - "url": "https://www.cyfrin.io/glossary/dapp", - "type": "article" - }, - { - "title": "Explore Top dApps on Ethereum and its Layer 2s", - "url": "https://www.ethereum-ecosystem.com/apps", - "type": "article" - }, - { - "title": "Explore Top Ethereum dApps", - "url": "https://eth.blockscout.com/apps", - "type": "article" - } - ] + "dapps@oczIhxMB7WOhcAocIa2Ew.md": { + "title": "dApps", + "description": "", + "links": [] }, "aATSuiqPG-yctr3ChEBa_": { "title": "Applicability", @@ -2141,21 +1756,10 @@ } ] }, - "pJhR9OQo8YFQmAZXQbikJ": { - "title": "Moralis", - "description": "Moralis provides a single workflow for building high performance dapps. Fully compatible with your favorite web3 tools and services.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Moralis", - "url": "https://moralis.io/", - "type": "article" - }, - { - "title": "Explore top posts about Moralis", - "url": "https://app.daily.dev/tags/moralis?ref=roadmapsh", - "type": "article" - } - ] + "pokt-network@pJhR9OQo8YFQmAZXQbikJ.md": { + "title": "Pokt Network", + "description": "", + "links": [] }, "FGih8w9We52PHpBnnGO6H": { "title": "Quicknode", @@ -2824,69 +2428,119 @@ } ] }, - "ecT4W5z8Vq9pXjnuhMdpl": { - "title": "Why it matters?", - "description": "The nature of blockchain allows for trustless systems to be built on top of it. Users don’t rely on a centralized group of people, such as a bank, to make decisions and allow transactions to flow through. Because the system is decentralized, users know that transactions will never be denied for non-custodial reasons. This decentralization enables use-cases that were previously impossible, such as parametric insurance, decentralized finance, and decentralized organizations (DAOs), among a few. This allows developers to build products that provide immediate value without having to go through a bureaucratic process of applications, approvals, and general red tape.\n\nVisit the following resources to learn more:", + "zvUCR0KeigEi9beqFpwny": { + "title": "Storage", + "description": "Unlike a centralized server operated by a single company or organization, decentralized storage systems consist of a peer-to-peer network of user-operators who hold a portion of the overall data, creating a resilient file storage sharing system.\n\nVisit the following resources to learn more:", "links": [ { - "title": "Why Blockchain?", - "url": "https://chain.link/education-hub/blockchain", + "title": "Blockchain Storage", + "url": "https://www.techtarget.com/searchstorage/definition/blockchain-storage", "type": "article" }, { - "title": "What Is The Blockchain And Why Does It Matter?", - "url": "https://www.forbes.com/sites/theyec/2020/05/18/what-is-the-blockchain-and-why-does-it-matter/", + "title": "Decentralized Storage", + "url": "https://ethereum.org/en/developers/docs/storage/", "type": "article" }, { - "title": "Web3/Crypto: Why Bother?", - "url": "https://continuations.com/post/671863718643105792/web3crypto-why-bother", + "title": "How IPFS works", + "url": "https://docs.ipfs.tech/concepts/how-ipfs-works/", "type": "article" }, { - "title": "Why is Blockchain Important and Why Does it Matter", - "url": "https://www.simplilearn.com/tutorials/blockchain-tutorial/why-is-blockchain-important", + "title": "Data Locations - Storage, Memory, and Calldata", + "url": "https://www.cyfrin.io/glossary/data-locations-storage-memory-and-calldata-solidity-code-example", "type": "article" }, { - "title": "Explore top posts about Blockchain", - "url": "https://app.daily.dev/tags/blockchain?ref=roadmapsh", + "title": "Explore top posts about Storage", + "url": "https://app.daily.dev/tags/storage?ref=roadmapsh", "type": "article" - }, - { - "title": "Cyfirn Updraft | The Purpose of Smart Contracts", - "url": "https://updraft.cyfrin.io/courses/blockchain-basics/basics/the-purpose-of-smart-contracts", - "type": "video" } ] }, - "zvUCR0KeigEi9beqFpwny": { - "title": "Storage", - "description": "Unlike a centralized server operated by a single company or organization, decentralized storage systems consist of a peer-to-peer network of user-operators who hold a portion of the overall data, creating a resilient file storage sharing system.\n\nVisit the following resources to learn more:", + "blockchain-networks@nuq_juiBSecI7PwERR_4R.md": { + "title": "Blockchain Networks", + "description": "", + "links": [] + }, + "bft@Bj3T_4lfr0Yianuwr3pDN.md": { + "title": "BFT", + "description": "", + "links": [] + }, + "poh@-bul5ZMIcZf8RNd4kV54s.md": { + "title": "PoH", + "description": "", + "links": [] + }, + "utxo-based@C-SpX4Rzk5Um2F_X5ZdBr.md": { + "title": "UTXO-Based", + "description": "", + "links": [] + }, + "bitcoin@tmI1PrE4fInrGB3-jMrFW.md": { + "title": "Bitcoin", + "description": "", + "links": [] + }, + "cardano@IzBZnvl8lqVKsog-IGwtV.md": { + "title": "Cardano", + "description": "", + "links": [] + }, + "base@ixTIn2Uhs-i5-UPt9jKAa.md": { + "title": "Base", + "description": "", + "links": [] + }, + "starknet@Ib9STGxQa8yeoB-GFeGDE.md": { + "title": "Starknet", + "description": "", + "links": [] + }, + "vs-code@J4ev2h5cipcwh3OcuBdMU.md": { + "title": "VS Code", + "description": "", + "links": [] + }, + "environmental-considerations@-dIX_3qo97B418_BmJ5wP.md": { + "title": "Environmental Considerations", + "description": "", + "links": [] + }, + "pos@WNPNoDZ57M2QHEIIU-Bpa.md": { + "title": "PoS", + "description": "", + "links": [] + }, + "pow@XbO1CKYZ6OVqVjtrcHKq2.md": { + "title": "PoW", + "description": "", + "links": [] + }, + "_BkpK9qgp9up8nXNH7q4m": { + "title": "Consensus Protocols", + "description": "Consensus for blockchain is a procedure in which the peers of a Blockchain network reach agreement about the present state of the data in the network. Through this, consensus algorithms establish reliability and trust in the Blockchain network.\n\nVisit the following resources to learn more:", "links": [ { - "title": "Blockchain Storage", - "url": "https://www.techtarget.com/searchstorage/definition/blockchain-storage", - "type": "article" - }, - { - "title": "Decentralized Storage", - "url": "https://ethereum.org/en/developers/docs/storage/", + "title": "Consensus Mechanisms in Blockchain: A Beginner’s Guide", + "url": "https://crypto.com/university/consensus-mechanisms-explained", "type": "article" }, { - "title": "How IPFS works", - "url": "https://docs.ipfs.tech/concepts/how-ipfs-works/", + "title": "Consensus Mechanisms", + "url": "https://ethereum.org/en/developers/docs/consensus-mechanisms/", "type": "article" }, { - "title": "Data Locations - Storage, Memory, and Calldata", - "url": "https://www.cyfrin.io/glossary/data-locations-storage-memory-and-calldata-solidity-code-example", + "title": "What Is a Consensus Mechanism?", + "url": "https://www.coindesk.com/learn/what-is-a-consensus-mechanism/", "type": "article" }, { - "title": "Explore top posts about Storage", - "url": "https://app.daily.dev/tags/storage?ref=roadmapsh", + "title": "Consensus Algorithm", + "url": "https://www.cyfrin.io/glossary/consensus-algorithm", "type": "article" } ] diff --git a/public/roadmap-content/computer-science.json b/public/roadmap-content/computer-science.json index 5af5a6046fe1..0f158261bfdd 100644 --- a/public/roadmap-content/computer-science.json +++ b/public/roadmap-content/computer-science.json @@ -2994,22 +2994,6 @@ } ] }, - "GZI8EsEqiMJX3fSbO_E-7": { - "title": "CAP Theorem", - "description": "The CAP theorem states that it is impossible for a distributed data store to simultaneously provide more than two out of Consistency, Availability and Partition Tolerance.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "CAP Theorem", - "url": "https://en.wikipedia.org/wiki/CAP_theorem", - "type": "article" - }, - { - "title": "What is CAP Theorem?", - "url": "https://www.youtube.com/watch?v=_RbsFXWRZ10", - "type": "video" - } - ] - }, "LCPEzpyAuHY3ggN3nYrNN": { "title": "Queues", "description": "Messaging queues are a common way to decouple systems. They are used to decouple the producer of a message from the consumer of a message. This allows the producer to send a message and not have to wait for the consumer to process it. It also allows the consumer to process the message at their own pace.\n\nVisit the following resources to learn more:", @@ -4244,5 +4228,15 @@ "type": "video" } ] + }, + "small-o@2cg5PogENPhiYFXQnV9xC.md": { + "title": "Small O", + "description": "", + "links": [] + }, + "small-omega@dUBRG_5aUYlICsjPbRlTf.md": { + "title": "Small Omega", + "description": "", + "links": [] } } \ No newline at end of file diff --git a/public/roadmap-content/cpp.json b/public/roadmap-content/cpp.json index 25ecce8753bc..c3e15e5eca67 100644 --- a/public/roadmap-content/cpp.json +++ b/public/roadmap-content/cpp.json @@ -620,9 +620,9 @@ "description": "C++20 is the latest standard of the C++ programming language, which brings significant improvements and new features to the language. This version is aimed at facilitating better software development practices and enabling developers to write more efficient, readable, and maintainable code.\n\nHere are some of the key features introduced in C++20:\n\nConcepts\n--------\n\nConcepts are a way to enforce specific requirements on template parameters, allowing you to write more expressive and understandable code. They improve the error messages when using templates and ensure that the template parameters fulfill specific criteria.\n\n template \n concept Addable = requires (T a, T b) {\n { a + b } -> std::same_as;\n };\n \n template \n T add(T a, T b) {\n return a + b;\n }\n \n\nRanges\n------\n\nRanges provide a new way to work with sequences of values, enhancing the power and expressiveness of the Standard Library algorithms. The range-based algorithms make it easier and more convenient to work with sequences.\n\n #include \n #include \n #include \n #include \n \n int main() {\n std::vector numbers = { 1, 2, 3, 4, 5 };\n \n auto even_numbers = numbers | std::views::filter([](int n) { return n % 2 == 0; });\n \n for (int n : even_numbers) {\n std::cout << n << ' ';\n }\n }\n \n\nCoroutines\n----------\n\nCoroutines are a new way to write asynchronous and concurrent code with improved readability. They allow functions to be suspended and resumed, enabling you to write more efficient, non-blocking code.\n\n #include \n #include \n #include \n \n std::future async_value(int value) {\n co_await std::chrono::seconds(1);\n co_return value * 2;\n }\n \n int main() {\n auto result = async_value(42);\n std::cout << \"Result: \" << result.get() << '\\n';\n }\n \n\nThe `constexpr` and `consteval` Keywords\n----------------------------------------\n\nBoth `constexpr` and `consteval` are related to compile-time evaluation. Functions marked with `constexpr` can be executed at compile-time or runtime, while functions marked with `consteval` can only be executed at compile-time.\n\n constexpr int add(int a, int b) {\n return a + b;\n }\n \n consteval int square(int x) {\n return x * x;\n }\n \n int main() {\n constexpr int result1 = add(3, 4); // evaluated at compile-time\n int result2 = add(5, 6); // evaluated at runtime\n constexpr int result3 = square(7); // evaluated at compile-time\n }\n \n\nThese are just some of the highlights of the C++20 standard. It also includes many other features and improvements, like structured bindings, improved lambdas, and new standard library components. Overall, C++20 makes it easier for developers to write clean, efficient, and expressive code.", "links": [] }, - "sxbbKtg7kMNbkx7fXhjR9": { - "title": "Newest", - "description": "C++20 is the newest standard of the C++ programming language, which was officially published in December 2020. It introduces many new features, enhancements, and improvements over the previous standards. Here is a brief summary of some key features in C++20.\n\n* **Concepts**: Concepts provide a way to specify constraints on template parameters, ensuring that they meet a specific set of requirements. This allows for better compile-time error messages and code readability.\n \n Example:\n \n template\n concept Printable = requires(T x) {\n {std::cout << x};\n };\n \n template\n void print(const T& x) {\n std::cout << x << '\\n';\n }\n \n \n* **Ranges**: Ranges build on the iterator concept and provide a more usable and composable framework for dealing with sequences of values. They simplify the way algorithms can be applied to collections of data.\n \n Example:\n \n #include \n #include \n #include \n \n int main() {\n std::vector numbers{1, 2, 3, 4, 5};\n auto even_view = numbers | std::views::filter([](int n) { return n % 2 == 0; });\n \n for (int n : even_view) {\n std::cout << n << ' ';\n }\n }\n \n \n* **Coroutines**: Coroutines offer a way to split complex, long-running functions into smaller, more manageable chunks, allowing them to be suspended and resumed at specific points.\n \n Example:\n \n #include \n #include \n \n std::generator generator() {\n for (int i = 0; i < 5; ++i)\n co_yield i;\n }\n \n int main() {\n for (int value : generator())\n std::cout << value << ' ';\n }\n \n \n* **Lambdas with template parameters**: C++20 enables using `auto` as a lambda parameter, allowing for generic lambdas with templated parameters.\n \n Example:\n \n auto sum = [](auto a, auto b) {\n return a + b;\n };\n \n int res1 = sum(1, 2); // int\n double res2 = sum(1.0, 2.0); // double\n \n \n* **Constexpr enhancements**: `constexpr` support is extended with additional features, such as `constexpr` dynamic allocations, `constexpr` try-catch blocks, and `constexpr` lambdas.\n \n Example:\n \n struct Point {\n constexpr Point(int x, int y): x_{x}, y_{y} {}\n int x_, y_;\n };\n \n constexpr auto create_points() {\n Point points[3]{};\n \n for (int i = 0; i < 3; ++i) {\n points[i] = Point{i, i * i};\n }\n \n return points;\n }\n \n constexpr auto points = create_points();\n \n \n\nThere are many other features in C++20, such as new standard library improvements, `std::format`, improvements to compile-time programming, and more. These are just a few highlights that showcase the versatility and power of the newest standard of C++.", + "c-23@sxbbKtg7kMNbkx7fXhjR9.md": { + "title": "C++ 23", + "description": "", "links": [] }, "PPg0V5EzGBeJsysg1215V": { diff --git a/public/roadmap-content/data-analyst.json b/public/roadmap-content/data-analyst.json index 6395d0c2d854..d55504b81559 100644 --- a/public/roadmap-content/data-analyst.json +++ b/public/roadmap-content/data-analyst.json @@ -478,75 +478,11 @@ } ] }, - "8OXmF2Gn6TYJotBRvDjqA": { - "title": "Pandas", - "description": "Pandas is a widely acknowledged and highly useful data manipulation library in the world of data analysis. Known for its robust features like data cleaning, wrangling and analysis, pandas has become one of the go-to tools for data analysts. Built on NumPy, it provides high-performance, easy-to-use data structures and data analysis tools. In essence, its flexibility and versatility make it a critical part of the data analyst's toolkit, as it holds the capability to cater to virtually every data manipulation task.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Pandas", - "url": "https://pandas.pydata.org/", - "type": "article" - }, - { - "title": "NumPy vs Pandas", - "url": "https://www.youtube.com/watch?v=KHoEbRH46Zk", - "type": "video" - } - ] - }, "l1SnPc4EMqGdaIAhIQfrT": { "title": "Data Visualisation Libraries", "description": "Data visualization libraries are crucial in data science for transforming complex datasets into clear and interpretable visual representations, facilitating better understanding and communication of data insights. In Python, several libraries are widely used for this purpose. Matplotlib is a foundational library that offers comprehensive tools for creating static, animated, and interactive plots. Seaborn, built on top of Matplotlib, provides a high-level interface for drawing attractive and informative statistical graphics with minimal code. Plotly is another powerful library that allows for the creation of interactive and dynamic visualizations, which can be easily embedded in web applications. Additionally, libraries like Bokeh and Altair offer capabilities for creating interactive plots and dashboards, enhancing exploratory data analysis and the presentation of data findings. Together, these libraries enable data scientists to effectively visualize trends, patterns, and outliers in their data, making the analysis more accessible and actionable.\n\nLearn more from the following resources:", "links": [] }, - "uGkXxdMXUMY-3fQFS1jK8": { - "title": "Matplotlib", - "description": "Matplotlib is a paramount data visualization library used extensively by data analysts for generating a wide array of plots and graphs. Through Matplotlib, data analysts can convey results clearly and effectively, driving insights from complex data sets. It offers a hierarchical environment which is very natural for a data scientist to work with. Providing an object-oriented API, it allows for extensive customization and integration into larger applications. From histograms, bar charts, scatter plots to 3D graphs, the versatility of Matplotlib assists data analysts in the better comprehension and compelling representation of data.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Matplotlib", - "url": "https://matplotlib.org/", - "type": "article" - }, - { - "title": "Learn Matplotlib in 6 minutes", - "url": "https://www.youtube.com/watch?v=nzKy9GY12yo", - "type": "video" - } - ] - }, - "y__UHXe2DD-IB7bvMF1-X": { - "title": "Dplyr", - "description": "Dplyr is a powerful and popular toolkit for data manipulation in R. As a data analyst, this library provides integral functions to manipulate, clean, and process data efficiently. It has been designed to be easy and intuitive, ensuring a robust and consistent syntax. Dplyr ensures data reliability and fast processing, essential for analysts dealing with large datasets. With a strong focus on efficiency, dplyr functions like select, filter, arrange, mutate, summarise, and group\\_by optimise data analysis operations, making data manipulation a smoother and hassle-free procedure for data analysts.\n\nLearn more from the following resources:", - "links": [ - { - "title": "dplyr", - "url": "https://dplyr.tidyverse.org/", - "type": "article" - }, - { - "title": "Dplyr Essentials", - "url": "https://www.youtube.com/watch?v=Gvhkp-Yw65U", - "type": "video" - } - ] - }, - "E0hIgQEeZlEidr4HtUFrL": { - "title": "Ggplot2", - "description": "When it comes to data visualization in R programming, ggplot2 stands tall as one of the primary tools for data analysts. This data visualization library, which forms part of the tidyverse suite of packages, facilitates the creation of complex and sophisticated visual narratives. With its grammar of graphics philosophy, ggplot2 enables analysts to build graphs and charts layer by layer, thereby offering detailed control over graphical features and design. Its versatility in creating tailored and aesthetically pleasing graphics is a vital asset for any data analyst tackling exploratory data analysis, reporting, or dashboard building.\n\nLearn more from the following resources:", - "links": [ - { - "title": "ggplot2", - "url": "https://ggplot2.tidyverse.org/", - "type": "article" - }, - { - "title": "Make beautiful graphs in R", - "url": "https://www.youtube.com/watch?v=qnw1xDnt_Ec", - "type": "video" - } - ] - }, "_sjXCLHHTbZromJYn6fnu": { "title": "Data Collection", "description": "Data collection is a foundational process that entails gathering relevant data from various sources. This data can be quantitative or qualitative and may be sourced from databases, online platforms, customer feedback, among others. The gathered information is then cleaned, processed, and interpreted to extract meaningful insights. A data analyst performs this whole process carefully, as the quality of data is paramount to ensuring accurate analysis, which in turn informs business decisions and strategies. This highlights the importance of an excellent understanding, proper tools, and precise techniques when it comes to data collection in data analysis.\n\nLearn more from the following resources:", @@ -756,21 +692,10 @@ } ] }, - "Fyqg3MRcwY7g-Q3gjiqwK": { - "title": "Distribution Space", - "description": "In the realm of Data Analysis, the distribution shape is considered as an essential component under descriptive analysis. A data analyst uses the shape of the distribution to understand the spread and trend of the data set. It aids in identifying the skewness (asymmetry) and kurtosis (the 'tailedness') of the data and helps to reveal meaningful patterns that standard statistical measures like mean or median might not capture. The distribution shape can provide insights into data’s normality and variability, informing decisions about which statistical methods are appropriate for further analysis.\n\nLearn more from the following resources:", - "links": [ - { - "title": "Shapes of distributions", - "url": "https://online.stat.psu.edu/stat414/lesson/13/13.5", - "type": "course" - }, - { - "title": "Shapes of Distributions: Definitions, Examples", - "url": "https://www.statisticshowto.com/shapes-of-distributions/", - "type": "article" - } - ] + "distribution-shape@Fyqg3MRcwY7g-Q3gjiqwK.md": { + "title": "Distribution Shape", + "description": "", + "links": [] }, "923KGEUG9ofBm7dYkkrxz": { "title": "Mean", @@ -820,22 +745,6 @@ } ] }, - "yn1sstYMO9du3rpfQqNs9": { - "title": "Average", - "description": "When focusing on data analysis, understanding key statistical concepts is crucial. Amongst these, central tendency is a foundational element. Central Tendency refers to the measure that determines the center of a distribution. The average is a commonly used statistical tool by which data analysts discern trends and patterns. As one of the most recognized forms of central tendency, figuring out the \"average\" involves summing all values in a data set and dividing by the number of values. This provides analysts with a 'typical' value, around which the remaining data tends to cluster, facilitating better decision-making based on existing data.\n\nLearn more from the following resources:", - "links": [ - { - "title": "How to Calculate the Average", - "url": "https://support.microsoft.com/en-gb/office/calculate-the-average-of-a-group-of-numbers-e158ef61-421c-4839-8290-34d7b1e68283#:~:text=Average%20This%20is%20the%20arithmetic,by%206%2C%20which%20is%205.", - "type": "article" - }, - { - "title": "Average Formula", - "url": "https://www.cuemath.com/average-formula/", - "type": "article" - } - ] - }, "tSxtyJhL5wjU0XJcjsJmm": { "title": "Range", "description": "The concept of Range refers to the spread of a dataset, primarily in the realm of statistics and data analysis. This measure is crucial for a data analyst as it provides an understanding of the variability amongst the numbers within a dataset. Specifically in a role such as Data Analyst, understanding the range and dispersion aids in making more precise analyses and predictions. Understanding the dispersion within a range can highlight anomalies, identify standard norms, and form the foundation for statistical conclusions like the standard deviation, variance, and interquartile range. It allows for the comprehension of the reliability and stability of particular datasets, which can help guide strategic decisions in many industries. Therefore, range is a key concept that every data analyst must master.\n\nLearn more from the following resources:", diff --git a/public/roadmap-content/design-system.json b/public/roadmap-content/design-system.json new file mode 100644 index 000000000000..6b6c1b22fb92 --- /dev/null +++ b/public/roadmap-content/design-system.json @@ -0,0 +1,982 @@ +{ + "understand-the-basics@uvnV1IjE8RV-FKDxHntUU.md": { + "title": "Understand the Basics", + "description": "", + "links": [] + }, + "4PrkkoZ5fY-oow0O-bVhu": { + "title": "What is a Design System?", + "description": "A Design System is the single source of truth which groups all the elements that will allow the teams to design, realize and develop a product.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Everything you need to know about Design Systems", + "url": "https://uxdesign.cc/everything-you-need-to-know-about-design-systems-54b109851969", + "type": "article" + }, + { + "title": "Design Systems 101", + "url": "https://www.nngroup.com/articles/design-systems-101/", + "type": "article" + }, + { + "title": "A comprehensive guide to design systems", + "url": "https://www.invisionapp.com/inside-design/guide-to-design-systems/", + "type": "article" + } + ] + }, + "2rlmLn_yQQV-7DpX1qT98": { + "title": "Need of Design System", + "description": "Having a solid design system speeds up your work by making the product team more efficient, and it creates consistency and harmony within the product and brand ecosystem. A strong design system takes the burden off individual designers to think through commonly recurring design problems. With a full library of pre-approved elements, designers can focus on bigger problems like creating seamless, intuitive flows that delight users. That kind of efficiency pays huge dividends over time.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Why You Need a Strong Design System (and How to Build One)", + "url": "https://www.drawbackwards.com/blog/why-you-need-a-strong-design-system-and-how-to-build-one", + "type": "article" + }, + { + "title": "On Design Systems: Sell The Output, Not The Workflow", + "url": "https://www.smashingmagazine.com/2016/05/design-systems-responsive-design-sell-output-not-workflow/", + "type": "article" + }, + { + "title": "Design Systems, when and how much?", + "url": "https://www.youtube.com/watch?v=Hx02SaL_IH0", + "type": "video" + } + ] + }, + "J5mU0v491qrm-mr1W3Msd": { + "title": "Design System vs Component Library", + "description": "A component library is just a collection of visuals i.e. colours, button stylings, fonts, etc. A Design System takes it to the next level by including standards and documentation around the look and usage of each component. The Design System acts as the single-source of truth.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "A Design System: So Much More Than A Component Library", + "url": "https://www.architech.ca/a-design-system-so-much-more-than-a-component-library", + "type": "article" + }, + { + "title": "Design System vs UI Component Library vs Brand Style Guide", + "url": "https://prototype.net/blog/design-system-component-library-style-guide", + "type": "article" + }, + { + "title": "Design Systems vs Pattern Libraries vs Style Guides vs Component Libraries", + "url": "https://www.uxpin.com/studio/blog/design-systems-vs-pattern-libraries-vs-style-guides-whats-difference/", + "type": "article" + } + ] + }, + "6r9XbwlBtHmJrhviG2cTD": { + "title": "What is Atomic Design", + "description": "Atomic design (by Brad Frost) is a mental model to help you think of user interfaces as a cohesive whole and a collection of parts at the same time. Through the comparison to atoms, molecules, and organisms, we can think of the design of our UI as a composition of self-containing modules put together.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Atomic Design Principles & Methodology 101", + "url": "https://xd.adobe.com/ideas/process/ui-design/atomic-design-principles-methodology-101/", + "type": "article" + }, + { + "title": "Atomic Design Methodology", + "url": "https://atomicdesign.bradfrost.com/chapter-2/", + "type": "article" + }, + { + "title": "Atomic Design and UI Components: Theory to Practice", + "url": "https://blog.bitsrc.io/atomic-design-and-ui-components-theory-to-practice-f200db337c24", + "type": "article" + } + ] + }, + "_3_tFOpQisx6DSP4Yc2E2": { + "title": "Stakeholders Involved in Building", + "description": "Building an effective design system is not an individual responsibility, you need more than just designers. Here’s a quick list of the disciplines that can be represented in your team to create an effective design system:\n\n* **Designers:** to define the visual elements of the system\n* **Frontend Developers:** To create modular efficient code\n* **Accessibility Experts:** Accessibility experts to ensure your system conforms to standards like WCAG\n* **Performance Experts:** who can ensure your system loads quickly on all devices\n* **Content Strategists:** who can help the team nail the voice and tone of the system\n* **Researchers:** who can help you understand customer needs\n* **Product Managers:** to ensure the system is aligning to customer needs\n* **Leaders:** (VPs and directors) to champion and align the vision throughout the company including up to executive leadership\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Designing the Design System", + "url": "https://www.designbetter.co/design-systems-handbook/designing-design-system", + "type": "article" + } + ] + }, + "hauTvrBOAHgrUnO_m_kDM": { + "title": "Design System Examples", + "description": "Visit the following resources to learn more:", + "links": [ + { + "title": "Collection of Open Source Design Systems", + "url": "https://github.com/alexpate/awesome-design-systems", + "type": "opensource" + }, + { + "title": "Material Design (Google)", + "url": "https://material.io/", + "type": "article" + }, + { + "title": "Carbon Design System (IBM)", + "url": "https://carbondesignsystem.com/", + "type": "article" + }, + { + "title": "Atlassian Design System", + "url": "https://atlassian.design/", + "type": "article" + }, + { + "title": "Polaris Design System (Shopify)", + "url": "https://polaris.shopify.com/", + "type": "article" + }, + { + "title": "Gov.uk Design System", + "url": "https://design-system.service.gov.uk/", + "type": "article" + } + ] + }, + "de0TKvmFTDmKGZc5X7iFq": { + "title": "Terminology", + "description": "Design systems can be tricky if you don’t know what certain words mean. Have a look at the roadmap nodes as well as follow the link below to read the glossary.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Design Systems Glossary", + "url": "https://web.archive.org/web/20220620075140/https://superfriendly.com/design-systems/glossary/", + "type": "article" + } + ] + }, + "97cpJyKBKNAq1P_pQZH-t": { + "title": "Component", + "description": "Components are the reusable building blocks of a design system. Each component meets a specific interaction or UI needs, and is specifically created to work together to create patterns and intuitive user experiences.", + "links": [] + }, + "vJ4WytrzY7j10mo8S3O1u": { + "title": "Component Library", + "description": "A component library is a collection of all the components used in a website, software or app. Some of the common tools to showcase and browse components in a component library include are given below:\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Pattern Lab", + "url": "https://patternlab.io/", + "type": "article" + }, + { + "title": "Fractal", + "url": "https://fractal.build/", + "type": "article" + }, + { + "title": "Storybook", + "url": "https://storybook.js.org/", + "type": "article" + } + ] + }, + "fPUuXrlchna3K00KcY4O6": { + "title": "Design Language", + "description": "A design language or design vocabulary is an overarching scheme or style that guides the design of a complement of products or architectural settings, creating a coherent design system for styling.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "What is a Design Language.. really?", + "url": "https://medium.com/thinking-design/what-is-a-design-language-really-cd1ef87be793", + "type": "article" + }, + { + "title": "How to Develop a Design Language", + "url": "https://xd.adobe.com/ideas/principles/web-design/how-to-develop-design-language/", + "type": "article" + }, + { + "title": "What Actually Constitutes Design Language?", + "url": "https://www.uxpin.com/studio/blog/design-language/", + "type": "article" + }, + { + "title": "Visual Design Language: The Building Blocks Of Design", + "url": "https://www.smashingmagazine.com/2020/03/visual-design-language-building-blocks/", + "type": "article" + } + ] + }, + "kifE3JE2immnU1O3-toZf": { + "title": "Governance", + "description": "Governance is a framework for clarifying roles, responsibilities, and authority over decisions. Having that clarity ensures that decisions for the design system funnel smoothly through the governance process\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Governance is a design system’s friend", + "url": "https://zeroheight.com/blog/governance-is-a-design-systems-friend", + "type": "article" + }, + { + "title": "Design System Governance – Scale Your Design", + "url": "https://www.uxpin.com/studio/blog/design-system-governance/", + "type": "article" + }, + { + "title": "Governance by design: Building successful design systems", + "url": "https://rangle.io/blog/governance-by-design-building-successful-design-systems/", + "type": "article" + }, + { + "title": "Team Models for Scaling a Design System", + "url": "https://medium.com/eightshapes-llc/team-models-for-scaling-a-design-system-2cf9d03be6a0", + "type": "article" + } + ] + }, + "mlBzJ2YvBr9QuOthKdj0p": { + "title": "Guidelines", + "description": "Design guidelines are sets of recommendations on how to apply design principles to provide a positive user experience. Designers use such guidelines to judge how to adopt principles such as intuitiveness, learnability, efficiency and consistency so they can create compelling designs and meet and exceed user needs.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Design Guidelines", + "url": "https://www.interaction-design.org/literature/topics/design-guidelines", + "type": "article" + } + ] + }, + "7xPT8rUX3hjSWbxH_FfQs": { + "title": "Pattern", + "description": "Patterns are best practice design solutions for specific user-focused tasks and page types. Patterns often use one or more components and explain how to adapt them to the context. Some sample patterns could be user signing in to the application or performing the checkout operation.", + "links": [] + }, + "4dzoZmkNHPedgLqLy93t8": { + "title": "Pilot", + "description": "Pilots are one of the best ways to put your design system through its paces, especially before the design system even gets to a v1. Like television pilots help test audience reactions to a series concept without investing significant resources to create the whole thing, application pilots are a good foundation for ensuring your design system’s design and code are battle-tested.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Design Systems: Pilots & Scorecards", + "url": "https://superfriendly.com/design-systems/articles/design-systems-pilots-scorecards/", + "type": "article" + } + ] + }, + "jETJVuS_EczJiQASLqaQr": { + "title": "Token", + "description": "Design system tokens are the style values of UI elements such as color, typography, spacing, shadows, etc., that are used across products and capable of being converted to a format for any platform (web, mobile, desktop). Tokens are building blocks of the design system—think of them as sub atoms, the smallest pieces of style values that allow designers to create styles for a product.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "What Are Design Tokens?", + "url": "https://xd.adobe.com/ideas/principles/design-systems/what-are-design-tokens/", + "type": "article" + } + ] + }, + "lUObv2N7eH3Jdnwwd5vmI": { + "title": "UI Kit", + "description": "As it relates to a design system, a UI Kit is a representation of coded components created in a way that designers who don’t know code can create interface mockups. Examples of UI kits are Sketch libraries and [Figma design systems](https://www.figma.com/blog/how-to-build-your-design-system-in-figma/).\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Design System vs UI Kit", + "url": "https://uigstudio.com/insights/design-system-vs-ui-kit", + "type": "article" + }, + { + "title": "Your sketch library is not a design system", + "url": "http://bradfrost.com/blog/post/your-sketch-library-is-not-a-design-system/", + "type": "article" + } + ] + }, + "dUaoMARPabiD4DRqdkaer": { + "title": "Making a Design System", + "description": "First step in building a design system is identifying [if you even need a design system](https://sparkbox.com/foundry/when_not_to_use_a_design_system).\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Design Systems: Step-by-Step Guide to Creating Your Own", + "url": "https://www.uxpin.com/create-design-system-guide/", + "type": "article" + }, + { + "title": "Does My Organization Need a Design System?", + "url": "https://www.method.com/insights/does-my-organization-need-a-design-system/", + "type": "article" + }, + { + "title": "Introducing Design Systems Into Chaos - Diana Mounter, GitHub", + "url": "https://www.youtube.com/watch?v=FZSi1bK-BRM", + "type": "video" + }, + { + "title": "Design Systems, when and how much?", + "url": "https://www.youtube.com/watch?v=Hx02SaL_IH0", + "type": "video" + }, + { + "title": "Create a Design System with Figma - Full Course", + "url": "https://www.youtube.com/watch?v=RYDiDpW2VkM", + "type": "video" + } + ] + }, + "-9I3fTpnQlmcZmIIuQiPe": { + "title": "Making it from Scratch", + "description": "If you are building a Design System from Scratch, you may skip the \"Existing Design Analysis\" node of the roadmap and start with \"Creating Design Language\".\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Create a Design System with Figma - Full Course", + "url": "https://www.youtube.com/watch?v=RYDiDpW2VkM", + "type": "video" + } + ] + }, + "z5gBy7BjlBKwbYbxXtoDA": { + "title": "Making it from Existing Design", + "description": "If you are creating a Design System from pre-existing product design, there is an additional step to perform the existing design analysis, understand the existing design process, perform a visual audit, identify design elements and components and so on.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Create a Design System with Figma - Full Course", + "url": "https://www.youtube.com/watch?v=RYDiDpW2VkM", + "type": "video" + } + ] + }, + "8eWhvW2zDIxMGHaXl0Y9i": { + "title": "Existing Design Analysis", + "description": "First step in creating a design system from an existing design is performing a design analysis and understanding what you will be working with to identify the requirements and prepare a plan. Performing the analysis may consist of:\n\n* Understanding the Existing Design Process\n* Performing Visual Audit\n* Identifying Design Elements\n* Identify Common Components\n* Understanding the A/B Testing and Experimentation Needs\n* Understanding any Locale or regional requirements (such as LTR/RTL).\n* Documenting your findings", + "links": [] + }, + "NKm-gXbt5Y7dDwKVkPHjX": { + "title": "Performing a Visual Audit", + "description": "Take screenshots of your current product with the help of your team. You can use any presentation software like Google Slides or print and pin them on foam-core boards. Group the screenshots into categories like buttons, navigation, forms, tables, charts, lists etc.\n\nNow, review each category to find inconsistencies and note areas for improvement with your team. Use a tool like [CSS Stats](https://cssstats.com/) to see how many unique colors, typefaces you have in your style sheets.", + "links": [] + }, + "CnsDoZ3gIaPeNbwHuZXYJ": { + "title": "Identify Existing Design Process", + "description": "To better understand the kind of design system you would like to implement, you need to start by reviewing and analyzing the current approach for design at your company. Find the answers to the following questions:\n\n* What is the design process that your company follows?\n* What are the existing tools that your company uses?\n\nIt’s also recommended to evaluate the level of design maturity of the product teams. This knowledge will help you estimate the time required to introduce the system to your organization.", + "links": [] + }, + "aak3227IDDJMh0MquQX6m": { + "title": "Icons", + "description": "Icons are visual symbols that communicate meaning quickly. They should maintain consistent style, use a grid system, provide multiple sizes, organize into semantic categories, ensure accessibility, consider cultural neutrality, be available in multiple formats, include interactive states, and follow systematic versioning.", + "links": [] + }, + "-MrrapoyFWKhSeE2PZ9mb": { + "title": "Visual Forms", + "description": "Visual forms focus on aesthetic and interactive design aspects of form components. Effective design should establish clear information architecture, create consistent field styling, develop harmonious label positioning, design clear error communication, implement progressive enhancement, prioritize mobile-first design, and ensure cross-platform consistency.", + "links": [] + }, + "78RsPhsWpl00AbkwKXUxL": { + "title": "Sizing", + "description": "Sizing tokens establish consistent dimensions across components and layouts. An effective system should establish a foundational unit, create predefined size variations, ensure minimum accessibility requirements, define standard icon sizes, establish container dimensions, implement fluid sizing, and account for platform-specific requirements.", + "links": [] + }, + "GtLYBPJjdZwG0qgA7erk7": { + "title": "Spaces", + "description": "Spacing tokens define white space between elements, creating visual rhythm and clear relationships. An effective system should establish a foundational unit, create systematic scales, define consistent internal spacing, establish layout guidelines, implement fluid spacing, create meaningful categories, and ensure cross-platform consistency.", + "links": [] + }, + "2prUeRYbSJTYjo2quJIKs": { + "title": "Color", + "description": "Color establishes brand identity and visual hierarchy in design systems. A comprehensive color system should organize colors logically, meet WCAG accessibility standards, support light/dark themes, create semantic categories, establish systematic naming, balance brand expression with function, and provide multiple formats.", + "links": [] + }, + "ODQ8zrHc2rsc8PN-APKvz": { + "title": "Typography", + "description": "Typography establishes hierarchy, readability, and brand personality. An effective system should develop harmonious scales using mathematical ratios, choose appropriate typefaces, implement fluid typography, establish consistent line-heights, define font weight hierarchy, ensure accessibility compliance, and provide clear usage guidelines.", + "links": [] + }, + "_dIMuXWI73ogboGjnLIpT": { + "title": "Avatar", + "description": "Avatars represent users or entities in interfaces. They should support multiple shapes (circular, square), various sizes, handle missing images with initials or default icons, include status indicators, maintain image quality standards, ensure accessibility, provide loading states, and support group arrangements with proper interactive feedback.", + "links": [] + }, + "UG4AIgJBfZpuhia4Y1K5v": { + "title": "Badges", + "description": "Badges are small status indicators that communicate information about objects or actions. Effective design should include numeric indicators for notifications, status badges with distinct colors, category labels, interactive states, multiple sizes, semantic color integration, consistent positioning, content guidelines, and proper accessibility.", + "links": [] + }, + "5DUobzueMZbScyTZTHpCS": { + "title": "Banners", + "description": "Banners communicate important information at the top of pages. They should support different message types with distinct visuals, various positioning options, clear dismissal mechanisms, relevant actions, consistent iconography, mobile adaptations, subtle animations, content guidelines, proper accessibility, and stacking rules for multiple banners.", + "links": [] + }, + "s6oqvHgwK4Cwyx-JENBbY": { + "title": "Buttons", + "description": "Buttons enable user actions and require clear visual hierarchy (primary, secondary, tertiary), comprehensive interactive states, multiple sizes, icon support, content guidelines, minimum 44px touch targets, loading indicators, responsive behavior, proper accessibility with ARIA labels, and subtle animations.", + "links": [] + }, + "yLLAUGbGUHBTEDkZNK0fm": { + "title": "Cards", + "description": "Cards are flexible content containers that group related information and actions. They require clear content hierarchy, consistent elevation systems, responsive behavior, distinct interactive states, media support, defined action areas, content variants, loading states, proper accessibility, and consistent spacing aligned with the design system.", + "links": [] + }, + "hzVwLVzAij6TgPTcNHyhv": { + "title": "Dropdowns", + "description": "Dropdowns reveal option lists when activated to save space. They need clear triggers with visual indicators, organized options with grouping, search/filtering for long lists, multi-select support, smart positioning, full keyboard navigation, loading states, mobile adaptations, proper accessibility, and performance optimization.", + "links": [] + }, + "5LCMzBnnS206t5EtgaUx8": { + "title": "Forms", + "description": "Forms collect user input and require standardized input components, comprehensive validation systems, effective labeling strategies, consistent layouts, clear error handling, progressive disclosure, required field indicators, auto-complete integration, proper accessibility, and mobile optimization.", + "links": [] + }, + "Ia1gYzepJOTvTro961eSj": { + "title": "...other", + "description": "Specialized elements beyond core components include badges for notifications, breadcrumbs for navigation, progress indicators, tooltips for help, pagination for browsing, tab systems, accordions for collapsible content, modals for focused interactions, notification systems, and basic data visualization elements.", + "links": [] + }, + "ILRDAnpfGHCZq-FBlbfDO": { + "title": "A/B Tests & Experiments", + "description": "Understand how the team implements A/B tests and experiments on different screens and if the new design system should accommodate any necessary requirements.", + "links": [] + }, + "pRJ9wEPNfFx_6EYB501vk": { + "title": "Regional Requirements", + "description": "Understand any regional requirements such as LTR or any other UX variations that your design system should accommodate.", + "links": [] + }, + "-b4GjLpL_ppDMJSiChTef": { + "title": "Documentation", + "description": "Organize and document the results of visual audit, design elements, components with variations, states, patterns found, any existing documentation, current design process, and considerations. This documentation will be shared across the team and act as a guide when building the new design system.", + "links": [] + }, + "JnaNZ9MfMrXQrjW2wABzB": { + "title": "Creating Design Language", + "description": "Like any language, a design language is a methodical way of communicating with your audience through your approach to product design. It’s the cornerstone of consistent customer experiences.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "What is a Design Language.. really?", + "url": "https://medium.com/thinking-design/what-is-a-design-language-really-cd1ef87be793", + "type": "article" + }, + { + "title": "How to Develop a Design Language", + "url": "https://xd.adobe.com/ideas/principles/web-design/how-to-develop-design-language/", + "type": "article" + }, + { + "title": "What Actually Constitutes Design Language?", + "url": "https://www.uxpin.com/studio/blog/design-language/", + "type": "article" + }, + { + "title": "Visual Design Language: The Building Blocks Of Design", + "url": "https://www.smashingmagazine.com/2020/03/visual-design-language-building-blocks/", + "type": "article" + } + ] + }, + "toyNbBB5tbyiJZkzuklIv": { + "title": "Writing Guidelines", + "description": "Every consistent experience needs watertight writing. Laying down the foundations for your house style early keeps everything in line with consistent grammar, style choices and action-oriented language to help your design.", + "links": [] + }, + "fnlVIgsmyxj2UVCCjM-8g": { + "title": "Tone of Voice", + "description": "A clear tone of voice defines how you speak to your audience at every moment in their journey, helping them get wherever they want to go.", + "links": [] + }, + "Zspu1SsuTE34PVmYePcs4": { + "title": "Terminology", + "description": "Create the standard terms and phrases that need to be kept the same throughout the user experience, speeding up the design process and unifying your voice.", + "links": [] + }, + "1RJrMVJf_3clM7E5OML-f": { + "title": "Design Principles", + "description": "The considerations that guide the basis of your practice. They outline how you approach design from a philosophical perspective and help with everyday decisions.", + "links": [] + }, + "cMfsRtvzvDZZJ0TqeUOxm": { + "title": "Vision", + "description": "Brand vision serves as the foundation for design system decisions, providing purpose and direction. An effective vision should articulate organizational purpose, identify core values, visualize future success, prioritize user needs, clarify brand uniqueness, account for cultural considerations, and connect to measurable goals.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Creating Brand Vision", + "url": "https://www.interaction-design.org/literature/article/branding-in-ux", + "type": "article" + }, + { + "title": "Vision-Driven Design Systems", + "url": "https://bradfrost.com/blog/post/the-design-system-ecosystem/", + "type": "article" + }, + { + "title": "Brand Strategy for Design", + "url": "https://alistapart.com/article/creating-a-brand-identity/", + "type": "article" + }, + { + "title": "Purpose-Driven Design", + "url": "https://designsystem.digital.gov/design-tokens/brand/", + "type": "article" + }, + { + "title": "Explore top posts about Brand Strategy", + "url": "https://app.daily.dev/tags/branding?ref=roadmapsh", + "type": "article" + } + ] + }, + "Wn8CylBz-hyl9-iXcUVTO": { + "title": "Monochrome Version", + "description": "A monochrome version of your logo that looks good on top of photography or when it’s printed with a poor quality printer.", + "links": [] + }, + "FA3JsZgNhKrgNHVtVreol": { + "title": "Small Use Guidance", + "description": "Your logo must perform well and be recognisable at all sizes. Tips for using your logo in these cases will minimise the risk of it being misused.", + "links": [ + { + "title": "Everything You Need to Know About Logo Usage Guidelines", + "url": "https://www.tailorbrands.com/blog/logo-usage-guidelines", + "type": "article" + } + ] + }, + "7n61402xwhIgJ7dPHg8q7": { + "title": "Placement Guidance", + "description": "Logo placement guidance ensures consistent brand representation through clear positioning, sizing, and clearance rules. Effective guidelines should define minimum clearance areas, establish preferred positions for different contexts, provide size specifications, define background treatments, and account for platform-specific requirements.", + "links": [] + }, + "RmSFwKqL9yXXxGKZusKWX": { + "title": "Usage Guidance", + "description": "Logo usage guidance provides rules for proper implementation to maintain brand consistency. Effective guidance should establish clear examples of proper usage and mistakes to avoid, define logo variations, specify color requirements, prohibit unauthorized alterations, and include approval processes for new contexts.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Logo Usage Best Practices", + "url": "https://99designs.com/blog/tips/logo-usage-guidelines/", + "type": "article" + }, + { + "title": "Brand Guidelines Development", + "url": "https://designsystem.digital.gov/design-tokens/logo/", + "type": "article" + }, + { + "title": "Trademark and Logo Legal Guidelines", + "url": "https://www.uspto.gov/trademarks-getting-started/trademark-basics", + "type": "article" + }, + { + "title": "Brand Identity Protection", + "url": "https://www.brandfolder.com/blog/brand-guidelines", + "type": "article" + }, + { + "title": "Explore top posts about Brand Management", + "url": "https://app.daily.dev/tags/branding?ref=roadmapsh", + "type": "article" + } + ] + }, + "-6LPUMRm-SqvRVEWPDFl8": { + "title": "File Formats", + "description": "Providing a variety of formats for the vector version of your logo will make it easier for others to work and prevent anyone from redrawing it.", + "links": [ + { + "title": "What is a Vector Logo and Why You Need It", + "url": "https://www.renderforest.com/blog/vector-logo", + "type": "article" + } + ] + }, + "aLtOGjNFxaRzg0PI-ed99": { + "title": "Accessibility", + "description": "Guidelines for how you approach accessibility and how you leverage colour, hierarchy and assistive technologies to help your users.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Introduction to Web Accessibility", + "url": "https://www.w3.org/WAI/fundamentals/accessibility-intro/", + "type": "article" + }, + { + "title": "What is Accessibility? by Mozilla", + "url": "https://developer.mozilla.org/en-US/docs/Learn/Accessibility/What_is_accessibility", + "type": "article" + }, + { + "title": "Accessibility Principles", + "url": "https://www.w3.org/WAI/fundamentals/accessibility-principles/", + "type": "article" + }, + { + "title": "WebAIMs Website (Web Accessibility In Mind)", + "url": "https://webaim.org/", + "type": "article" + }, + { + "title": "WAVE Web Accessibility Evaluation Tool", + "url": "https://wave.webaim.org/", + "type": "article" + }, + { + "title": "Explore top posts about Accessibility", + "url": "https://app.daily.dev/tags/accessibility?ref=roadmapsh", + "type": "article" + } + ] + }, + "PlW8mHnOTyYnbtl0zUSG9": { + "title": "User Onboarding", + "description": "How you onboard your users to your product or a new feature and give them a great experience from the start.", + "links": [ + { + "title": "What is user onboarding? ", + "url": "https://www.youtube.com/watch?v=PatIqbGEQe4", + "type": "video" + } + ] + }, + "bD-DjUbAA6l2eK1R9ITcK": { + "title": "Microcopy Guidelines", + "description": "The standard way to write for the components in your design system. These take platform conventions and best practices for writing all into consideration.", + "links": [] + }, + "a53cl6ZKvYXxG25Ii2_zu": { + "title": "Defining Design Tokens", + "description": "Variables that store values for the base layer of your design system, like colour and typography. They’re used in components, so changes on this level will resonate throughout the whole system.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "What Are Design Tokens?", + "url": "https://xd.adobe.com/ideas/principles/design-systems/what-are-design-tokens/", + "type": "article" + } + ] + }, + "fW0cEy2SB0HDbiF7QA7Ev": { + "title": "Accessibility", + "description": "Make sure to have accessible pairings between the main colours in your palette. More importantly, make sure that your background and text colours have at least an AA standard contrast ratio between them.", + "links": [] + }, + "__Pv19gRr2SFknVnfm0Mr": { + "title": "Functional Colors", + "description": "Besides your brand colours, make sure to have colours defined and made into variables for functions like disabled states, backgrounds, actions and high contrast text.", + "links": [] + }, + "kxUnqpydDwB73IwrCPZM0": { + "title": "Dark Mode", + "description": "Preparing a dark mode version of your colour palette will allow your design system to adapt to dark mode and respect what your user wants to see.", + "links": [] + }, + "XDfxs5cgjSuTEprZi2Z5b": { + "title": "Guidelines", + "description": "Provide guidelines on how and when to use the colours in your palette, what to keep in mind when working with them and how not to use them.", + "links": [] + }, + "wQbMhC7q3qdKYf_pX5qL4": { + "title": "Units", + "description": "Units are the most granular building blocks for layout. Defining a set of values with consistent increments (such as 4, 8, 12 and 16 for a 4-point system) will provide you with the foundation when you’re designing your grid and spacing values.", + "links": [] + }, + "8f2V-rM7soorTTvNo5Vcx": { + "title": "Grid", + "description": "Every layout should sit on a grid that brings order and hierarchy to the interface. Define a grid separately for mobile, tablet and desktop devices with columns, gutters, and margins so your interface can adapt to any platform easily.", + "links": [] + }, + "djwnJq9Y_Hx1Ynw01wr_u": { + "title": "Breakpoints", + "description": "Predefine the screen sizes and orientations your grid will adapt to.", + "links": [] + }, + "dXaYOwTAnYSlipNEBSV9l": { + "title": "Spacking", + "description": "Horizontal and vertical rhythm plays a big role in a layout. You should provide easy methods for adding space between interface elements independent of your grid.", + "links": [] + }, + "8YVCtgYRHR3VcpUJXMVwP": { + "title": "Responsiveness", + "description": "Desktop devices can usually afford to have bigger font sizes compared to mobile devices. Creating a typography scale that adapts to the viewport size will help with a more meaningful hierarchy and layout.", + "links": [] + }, + "Zl7MVllzJgObruYtlibKf": { + "title": "Grid Relation", + "description": "Font sizes and leading should match your grid to allow better pairing between text and other UI elements. A good example of this is text paired with icons with bounding boxes.", + "links": [] + }, + "L2NHddsv5RGR_BW0I3f4T": { + "title": "Readability", + "description": "Optimising the letter spacing (tracking), line height (leading) and line length for your typography scale will help with the readability of text.", + "links": [] + }, + "wFL9axjaPcVvI8XWduxgz": { + "title": "Performance", + "description": "Custom fonts need to be downloaded before they can be displayed, especially on the web. Make sure that you have sensible fallbacks and fast loading time for your typography assets. Using system fonts solves this performance problem.", + "links": [] + }, + "Jab5LO0mGhTy1cU61Catu": { + "title": "Guidelines", + "description": "Provide guidelines on how and when to use the pairings in your typography scale, what to keep in mind when working with them and how not to use them.", + "links": [] + }, + "DhrnZwQODG0P7D-27_3ec": { + "title": "Accessibility", + "description": "For icons that convey a meaning or serve a function, add the necessary support for screen readers. You can skip this for decorative icons.", + "links": [] + }, + "SPK1i0XuHpNEWyi1iIxrV": { + "title": "Style", + "description": "Make sure that your icon family makes visual sense as a whole. Picking an outlined or filled style and sticking with it will lead to better visual consistency and predictability.", + "links": [] + }, + "wiclAEEYioRgLmXFcKQ4E": { + "title": "Naming", + "description": "Name your icons based on what they are, not what they represent. For instance, a trash icon should be named trash, not delete. You can still add related keywords to improve discoverability.", + "links": [] + }, + "6Hmj_TeQ563jshqAAl__I": { + "title": "Grid Relation", + "description": "Draw your icons in a bounding box that plays well with your grid. This makes for a better pairing with other UI elements. A good example of this would be icons with bounding boxes paired with text.", + "links": [] + }, + "w3LS85eFerscaxb2Xp-dP": { + "title": "Sizes", + "description": "Provide different sizes for icons that correlate to your grid. Provide a minimum size and remove unnecessary detail for your icons for smaller sizes.", + "links": [] + }, + "HDf2L4F1f8uUGpVaf7Y7z": { + "title": "Keywords", + "description": "Adding keywords will improve the discoverability of each icon and provide a better user experience for anyone using your system.", + "links": [] + }, + "Y0KxHVrcNGHDao-38Oz3w": { + "title": "Reserved Icons", + "description": "Reserving icons that represent common actions will prevent their use in any other context. System icons for navigation or adding and deleting are a good example. This leads to a more intuitive user experience.", + "links": [] + }, + "eTxhpC3AQIMcUax6WFU9U": { + "title": "Guidelines", + "description": "Provide guidelines on how and when to use icons, what to keep in mind when working with them and how not to use them.", + "links": [] + }, + "Hw_LQInG6OtSwDXch3Lvg": { + "title": "Creating Core Components", + "description": "Components are the main building blocks for user interfaces. Building a reusable component library enhances your product development workflow by reducing design and tech debt and speeding up the process. Core components can’t be broken down into granular pieces without losing their meaning.", + "links": [] + }, + "h3TZY1yBkzLYUK6W7K7xs": { + "title": "Avatar", + "description": "Avatars are used to show a thumbnail of a user photo or a visual representation of any other type of content.\n\n* **Image:** Avatars should mask an image into their shape and work with any image size since they may get this image from unknown data sources.\n* **Image Fallback:** There should be fallbacks when there’s no image available. This can be done with placeholder images or initials.\n* **Accessibility:** Always provide a description for screen readers describing what’s displayed on the avatar image instead of just naming its role.\n* **Sizes:** There are many contexts to use avatars and they all require different sizes for the component. For average projects use at least 2-3 different sizes and make sure there’s at least a small size available.\n* **Icon:** Avatars can be used with an icon instead of an image to emphasize areas that don’t necessarily have (or need) an image associated with it.\n* **Background Colors:** When used with icons or text, there has to be a background colour from the design system colour tokens applied to the avatar shape. Make sure that icons and text have enough contrast ratio with the background according to the WCAG AA standard.", + "links": [] + }, + "hjiJJg4KNr8lyktFQd868": { + "title": "Input Text", + "description": "Input text lets users enter and edit text.\n\n* **Disabled State:** Prevents input interactions and removes its value from the form submission.\n* **Placeholder:** When there’s no value entered, show a placeholder with a potential value example. Don’t use placeholders as labels for the inputs.\n* **Label:** There should be a text label linked with the text field. Clicking the label should move the focus to the field.\n* **Error State:** The error state is used for form validation errors when the error is related to the text field only. Always use a text error along with changing the colour of the field.\n* **Focused State:** The focused state should highlight the text field when users start to interact with it. There is always only one focused field in the form.\n* **Autocomplete:** When applicable, adding support for the HTML autocomplete attribute will allow users to easily enter different data types.\n* **Icon Support:** Icons are used to describe input methods, express a text field state or provide additional functionality.", + "links": [] + }, + "kkqRIgdXWaJbX9CjLpwha": { + "title": "Banner", + "description": "Banners display an actionable message used as a prominent way of communicating with your users.\n\n* **Appearance:** Banners are used to display different types of messages and it’s important to differentiate their visual appearance based on the role they’re playing. If you’re using background colours for role differentiation, make sure there’s enough contrast ratio with the content according to the WCAG AA standard.\n* **Area for icons or images:** Banners can supplement their message using a supporting icon or image. They shouldn’t be used instead of text content.\n* **Actions:** Actions in banners should relate to its text and provide a way to react to the message sent to the user.\n* **Dismissible Action:** Don’t overwhelm the user with banners on the page and include a dismissable action. That may be either a separate close button or one of the actions provided.\n* **Accessibility:** If a banner dynamically appears on the page, it should be announced to the user by their assistive technology.\n* **Responsiveness:** Banners should adapt to the viewport size. This usually means that they become full-width for mobile to save some space.", + "links": [] + }, + "LNsXQI8sE_5kzSD_iMLJA": { + "title": "Badge", + "description": "Badges are elements that represent the status of an object or user input value.\n\n* **Appearance:** Badges may play various roles in your product and having a predefined colour for each role should help users understand their meaning. When changing colours, make sure the text has enough contrast ratio with the background according to the WCAG AA standard.\n* **Dismissible Action:** Badges can be used as a dynamic way to display selected values and there should be a way to dismiss them.", + "links": [] + }, + "LWihkf4q5UawjLd84KQxN": { + "title": "Button", + "description": "Buttons are interactive elements used for single-step actions.\n\n* **Hover State:** Clearly show that the button is interactive when it gets hovered with a mouse cursor.\n* **Active State:** Used when a button gets pressed. The same state can be used to represent the button responsible for toggling another element on the page while that element is visibly opened.\n* **Focused State:** Used when a button gets selected through keyboard navigation.\n* **Icon Support:** Icons easily communicate the purpose of the button when used next to its label or can be used without text when there’s not enough space. Make sure that the accessibility label is provided when used with an icon only.\n* **Disabled:** Visually shows that a button is not interactive and restricts it from being pressed.\n* **Loading:** Used when users have to wait for the result of their action after they press a button. If a spinner is used to display this state make sure that it’s not changing the original button width or height.\n* **Full Width:** By default buttons take the width of their content, but they should also come with a full width variant that works well in mobile devices.\n* **Variants:** When using multiple buttons, there should be a way to differentiate between primary and secondary actions. Buttons may play different roles for the user or be used on different types of surfaces and they have to change the way they look.\n* **Sizes:** Buttons can be used in different areas of the website and may have multiple predefined sizes. On mobile, tappable areas have to be a minimum of 48px to be accessible according to iOS and Android accessibility guidelines.", + "links": [] + }, + "rZ7d1C9swiqlRTbdJLZ0R": { + "title": "Card", + "description": "Cards are used to group information about subjects and their related actions.\n\n* **Supports any type of content:** Cards are one of the most used components in the product, so they have to be flexible enough to support any other components placed in them.\n* **Information structure:** No matter how flexible cards are, it’s important for cards to have a specific structure for its elements for product consistency.\n* **Supports media sections:** One of the most popular scenarios for using cards is mixing them with media content. The most popular options are having a full-width area on top of the content or full-height area at one of the card’s sides.\n* **Supplementary actions:** Cards can be used with actions usually placed at the bottom of the card, or the card itself can be tappable and represent an action.\n* **Responsiveness:** On mobile viewports cards are usually full-width in order to save space for the content.", + "links": [] + }, + "yWEXfjzuzk99dxjZlG4Cq": { + "title": "Carousel", + "description": "Carousels stack the same type of items and allows scrolling through them horizontally.\n\n* **Navigation Controls:** Carousels should have easy-to-find navigation controls for scrolling through content.\n* **Supports any content:** Carousels can be used in different contexts and shouldn’t be limited to a specific child component. In some scenarios you might want items within the same carousel to differ from each other.\n* **Items width customisation:** For simple products, it might be fine to use multiple predefined sizes for carousel items. For more flexibility, it’s good to provide a way to define a custom width.\n* **Touch events support:** Carousels should be scrollable on touch devices. Some of the best practices are to use native scrolling and to make sure you’re supporting the same behaviour for all touch devices, not just mobile phones.\n* **Keyboard navigation:** It should be possible to scroll through content with keyboard arrows when focused on navigation controls.\n* **Responsiveness:** It’s good practice to hide or reduce the size of navigation controls for mobile viewports to improve the visibility of the content.", + "links": [] + }, + "MtBSvKoyjdLd6DIdolLRi": { + "title": "Dropdown", + "description": "Dropdowns are used to display a contextual subview with a list of actions or content related to the area where the dropdown is.\n\n* **Supports any type of content:** Dropdowns may be used in a lot of contexts like date pickers, language selection or other product features.\n* **Action Menu:** One of the most used scenarios for dropdowns is providing an action menu for the user, so it’s useful to have this layout defined.\n* **Focus Trapping:** Once the dropdown’s opened, the focus should work only for elements inside the dropdown. When it’s closed, the focus should move to the dropdown trigger.\n* **Close Action:** Either some actions inside the dropdown should close it or there should be a separate close button. Also, it’s good practice to close the dropdown when a user clicks outside.\n* **Keyboard Navigation:** It should be possible to navigate through dropdown children elements with the keyboard and close it with an Esc key.\n* **Dynamic Position:** Dropdown content should be displayed based on the current position of the trigger element on the screen and always visible to the user.\n* **Responsiveness:** Dropdown content should be adapted for mobile viewpoints as it may take a lot of space on desktops.", + "links": [] + }, + "bzY_iXRnotct_WnNRTlbd": { + "title": "Icon", + "description": "The icon component is a way to align the way iconography static assets are displayed in the product.\n\n* **Sizes:** Icons should have a number of predefined sizes to provide a holistic experience across the product. Typography pairings may be used for these size values to ensure that they are aligned with the text sizes.\n* **Colors:** Icons should be using values from the design system colour palette. Using parent element text colour for icon fill colour can make this automatic.", + "links": [] + }, + "F5_sxUnnGEdgF6BkA5T5x": { + "title": "Input Checkbox", + "description": "An input checkbox is a form element used for selecting one or multiple options.\n\n* **Checked State:** Used when the checkbox is selected and will use its value for the form submission.\n* **Disabled State:** Prevents checkbox interactions and removes its value from the form submission.\n* **Intermediate State:** Used when the checkbox has children selectable elements and only some of them are selected.\n* **Label:** There should be a text label linked with the checkbox field. Clicking the label should also trigger the checkbox selection.\n* **Error State:** The error state is used for form validation errors when the error is related to the checkbox field only. Always use a text error along with changing the colour of the field.\n* **Keyboard State:** Checkbox selections should be triggered with the Space key. Using native elements for this should provide this kind of interaction out of the box.\n* **Checkbox Group:** Checkboxes can be grouped to work with multiple values at the same time.", + "links": [] + }, + "rN-_plAA5FkcQl03wsL18": { + "title": "Input Radio", + "description": "An input radio is a form element used for selecting one option from a list.\n\n* **Checked State:** Used when the radio is selected and will use its value for the form submission. A radio input can’t be unselected by pressing it again.\n* **Disabled State:** Prevents radio interactions and removes its value from the form submission.\n* **Label:** There should be a text label linked with the radio field. Clicking the label should also trigger the radio selection.\n* **Error State:** The error state is used for form validation errors when the error is related to the radio field only. Always use a text error along with changing the colour of the field.\n* **Keyboard State:** A radio selection should be triggered when the Space key is pressed. Using native elements for this should provide this kind of interaction out of the box.\n* **Radio Group:** Radio inputs should always be used in a group. If one of them is selected, it can be deselected only by choosing another radio.", + "links": [] + }, + "NISeaJUlDtQ0kSuyxmrOT": { + "title": "Input Switch", + "description": "Input switches toggle the state of a single item. Compared to the input checkbox, their changes usually apply without any additional submission.\n\n* **Checked State:** Used when an input switch is turned on. It’s better to provide an additional way to indicate the checked state besides changing its colour when applicable.\n* **Disabled State:** Prevents interacting with an input switch.\n* **Label:** There should be a text label linked with the switch field. Clicking the label should also trigger the input selection.\n* **Keyboard State:** A switch selection should be triggered when the Space key is pressed.", + "links": [] + }, + "n1nUkMqGtPobZPJHCvPsk": { + "title": "Select", + "description": "Select lets user select a value from a list of values in a form context:\n\n* **Disabled State:** Prevents input interactions and removes its value from the form submission.\n* **Placeholder:** When there’s no value entered, show a placeholder with a potential value example. Don’t use placeholders as labels for the inputs.\n* **Label:** There should be a text label linked with the text field. Clicking the label should move the focus to the field.\n* **Error State:** The error state is used for form validation errors when the error is related to the text field only. Always use a text error along with changing the colour of the field.\n* **Focused State:** The focused state should highlight the text field when users start to interact with it. There is always only one focused field in the form.\n* **Autocomplete:** When applicable, adding support for the HTML autocomplete attribute will allow users to easily enter different data types.\n* **Icon Support:** Icons are used to describe input methods, express a text field state or provide additional functionality.", + "links": [] + }, + "iusI39fxcu2rbMXiosaM6": { + "title": "Textarea", + "description": "Text area lets users enter and edit text.\n\n* **Disabled State:** Prevents input interactions and removes its value from the form submission.\n* **Placeholder:** When there’s no value entered, show a placeholder with a potential value example. Don’t use placeholders as labels for the inputs.\n* **Label:** There should be a text label linked with the text field. Clicking the label should move the focus to the field.\n* **Error State:** The error state is used for form validation errors when the error is related to the text field only. Always use a text error along with changing the colour of the field.\n* **Focused State:** The focused state should highlight the text field when users start to interact with it. There is always only one focused field in the form.", + "links": [] + }, + "2T7tiM3Ew3H1U5iJR2TDb": { + "title": "List", + "description": "Lists define the layout of the page content or groups of elements stacking them vertically or horizontally.\n\n* **Support any type of content:** Lists can be used in any context from page-level layout to managing offsets between granular components. hey should work with any component used inside.\n* **Horizontal Stacking:** Lists can be used for inline elements and they have to manage how they’re stacked horizontally, including handling offsets between multiple rows of elements.\n* **Divided Variant:** Lists with dividers are the best practice advised by many platform guidelines (especially on mobile).\n* **Supports Actionable Content:** Sometimes lists are used for grouping tappable components, where the whole area of the list item should be clickable.", + "links": [] + }, + "JhnHOMIlU6mQcwvIpErUY": { + "title": "Loading Indicator", + "description": "The loading indicator shows that an operation’s being performed and how long the process will take.\n\n* **Linear and non-linear Variants:** Depending on the context and the component it’s used for, the loading indicator can be represented either with linear or with a non-linear (e.g. circular) variant.\n* **Determinate or indeterminate wait time:** In some cases, the wait time can’t be determined. The loading indicator should be shown until the loading finishes or an error happens. In other cases, it’s better to indicate how much time’s left until the loading is done.\n* **Light Variant:** The loading indicator should respect its parent element background and provide a variant to be used on darker background colours.\n* **Reduced Motion:** The loading indicator should be synced with the system motion settings and reduce its animation speed when reduced motion settings are turned on.", + "links": [] + }, + "IjNitkG25vNo30rB4ckNV": { + "title": "Modal", + "description": "Modals are containers appearing in front of the main content to provide critical information or an actionable piece of content.\n\n* **Supports any type of Content:** Like any other container, modals can be used in different scenarios and you should be able to use it with any other component inside.\n* **Supplementary Actions:** Since content in the modal may be actionable, it’s important to have an area for action elements. This area is usually located at the bottom of the modal container.\n* **Close Action:** Modals should provide a clear way to be closed as they’re blocking content when open. This may be either a separate close button or one of the supplementary actions.\n* **Information Structure:** Even though modals can be used as an empty container for the content, they need a defined information structure to provide a holistic experience. It may include defining how titles and subtitles look by default or where an action element’s area is.\n* **Keyboard Navigation Support:** It should be possible to close a modal by pressing the Esc key and all the focusable elements inside the modal container should be accessible with keyboard navigation.\n* **Focus Trapping:** Once a modal is opened, the focus should be moved to the first element inside the modal and should be looped within the modal container. Closing the modal should return the focus to the last focused element on the page.", + "links": [] + }, + "1vYR1EMyZhJA-znxnFBBb": { + "title": "Tabs", + "description": "Tabs organise navigation between multiple pages or content sections.\n\n* **Active Button State:** There should be a clear differentiation between selected and unselected tab buttons.\n* **Button Icon Support:** Icons help show the purpose of the tab buttons when used next to its label.\n* **Equally-sized tab buttons:** Tabs can be used in a relatively small-sized container where you need to switch between a definite number of sections. For such scenarios, it’s better to support a variant where the button’s area is divided equally.\n* **Keyboard Navigation:** All tab buttons should be focusable and navigation between the tab’s component should be accessible from the keyboard.\n* **Responsiveness:** If all tabs on mobile don’t fit into the viewport, users should still have access to all tab buttons. Ways to solve this can be making the button area scrollable for mobile or showing a More button containing a dropdown with the rest of the buttons.", + "links": [] + }, + "-T7uL6a3lJ5-IIcDaG6IN": { + "title": "Toast", + "description": "Toasts provide short meaningful feedback messages about the action results.\n\n* **Dismissed Automatically:** Toast messages shouldn’t interrupt the user flow, block the screen for a long time or require additional action from the user.\n* **Action Support:** Besides displaying the message, toasts may also provide an action related to the message like undoing an action.\n* **Handles Multiple Instances:** Even though it doesn’t happen often, toasts can be called from multiple sources at the same time and all resulting toasts should be queued. It’s good practice not to show all the messages at the same time.\n* **Accessibility:** Toast messages should be announced by the voice assistive technology and their action should be easily accessible from the keyboard.\n* **Responsivenss:** Toasts should be aligned with the mobile viewport and their action should be easily reachable for tapping.", + "links": [] + }, + "2oCAzsk_y2Y2oHUi467dp": { + "title": "Tooltip", + "description": "Tooltips are desktop-only components that display additional information when hovering over or focusing on an element.\n\n* **Keyboard Hover Support:** Tooltips should be accessible when an element is focused using the keyboard.\n* **Dynamic Positioning:** Tooltip content should be displayed based on the current position of the trigger element on the screen and always visible to the user.\n* **Hover Timeout:** Having a small timeout before triggering a tooltip will help to prevent occasionally showing tooltips while users move their mouse cursor.\n* **Light Variant:** The tooltip should respect its parent element background and provide a variant to be used on darker background colours.\n* **Instant Transition for Element Groups:** If there’s a group of elements using tooltips, hovering over another element while a tooltip’s already active shouldn’t trigger the animation.", + "links": [] + }, + "jggrr5nZOe6FY3ZrZJTOw": { + "title": "Tooling", + "description": "Design system tooling encompasses technical infrastructure and workflows. Effective tooling should integrate with design tools, provide component libraries for frameworks, implement token management, utilize documentation platforms, establish automated versioning, create testing infrastructure, and enable collaboration workflows.", + "links": [] + }, + "ccpT9MPFbc3Ewjm1tFMsZ": { + "title": "Design Editor", + "description": "There are many design editors available in the market today with the most popular names being Sketch, Figma and Adobe XD. If you're unsure which route to go down it's often best to speak with your team.", + "links": [] + }, + "uO-2O0Jwh_DxrMAB9wxp1": { + "title": "Plugins", + "description": "Most popular Design Editors (Sketch and Figma, especially) come with third-party plugin support. Whilst it's best to use the editors in-built tools for laying out your components, plugins can bring in a range of useful data to populate them.", + "links": [] + }, + "CYY6nbQiC2pu5ATWmO6wA": { + "title": "Version Control", + "description": "Having your design versioned with semantic versioning will allow you to easily align design with development, roll back faulty changes and release changes in code and design at the same time.", + "links": [] + }, + "TiCNCRpMPgZUhn7JdaIZA": { + "title": "Contribution Guidelines", + "description": "Define the process of contributing to the UI and UX of the design system and document it in a discoverable place to make it easier for everyone to contribute.", + "links": [] + }, + "VeLiPzbGr22_Mh_8T2Gnf": { + "title": "Component Catalog", + "description": "Isolate your UI components’ environment outside of your product codebase to make sure they’re not dependent on any global dependencies and can be easily reused.", + "links": [] + }, + "k1Lwk_b6cLIeyQwc4RUh1": { + "title": "Documentation", + "description": "Having your code documented is key to driving adoption and reducing the load on the contributors.", + "links": [] + }, + "zEqFAuH9zmKTLwwgx54pW": { + "title": "Code Style", + "description": "Having a defined code style helps align the way code’s written in the system and increases development velocity. It should be automated with the tools provided for each platform.", + "links": [] + }, + "y8No8I0MltA91j4Q2toT0": { + "title": "Unit Testing", + "description": "Every part of the design system should be covered with unit tests. Once your system’s adopted, any change in the isolated environment may affect how the product works.", + "links": [] + }, + "yhP8EhyCWWRBLkYPyOFeg": { + "title": "Accessibility Testing", + "description": "Design systems should cover accessibility as much as possible. Making this automatic reduces the risk of inaccessible components or user flows in the product.", + "links": [] + }, + "ZLt1yJqinC8OSpqucC2dV": { + "title": "Semantic Versioning", + "description": "Version your code with semantic versioning that dictates how version numbers are assigned and incremented.", + "links": [] + }, + "CfWCQNaCJGL-egRhFhc4B": { + "title": "Release Strategy", + "description": "Design system releases should be automated and ideally use scripts ran locally or in remote CI pipelines to prevent broken releases.", + "links": [] + }, + "IVYe8oh1IWbUbxMZRxVQA": { + "title": "Commit Guidelines", + "description": "Automate the generation of your changelog by adopting a commit message guidelines that categorise and define the changes being made.", + "links": [] + }, + "wd9ZHZmqV7wbLN-9V4EQy": { + "title": "PR Templates", + "description": "Create pull request templates that outline the change being proposed to facilitate productive discussions.", + "links": [] + }, + "xJ1LAAhiZvbZOLRVc1HZa": { + "title": "Contribution Guidelines", + "description": "Define the process of contributing to the code of the design system. Document everything in a discoverable place to make it easier for everyone to contribute.", + "links": [] + }, + "JfXwzkN29UGz17FYHHE3A": { + "title": "Project Management", + "description": "Design systems are no different than any other project your team might take on. In order to successfully build and maintain one, you need a clear strategy that’s well executed daily, and you‘ll need to create opportunities for your colleagues to give feedback to help share your design system together.", + "links": [] + }, + "gMrX5600JqFDplriq-eU3": { + "title": "Roadmap", + "description": "Setting your short and long term vision and mapping things out helps you decide the steps to take, understand your place in the bigger picture and prioritise day-to-day tasks.", + "links": [] + }, + "ruPXxVwmD9vSlS7rBZmA-": { + "title": "Milestones", + "description": "Define milestones that act as bigger epics in your project management with the help of your roadmap. These will help you understand your progress.", + "links": [] + }, + "i39J0fk4DaPeNFIMbH0ap": { + "title": "Ticketing", + "description": "Make it easier to track your day-to-day progress by using ticketing software like Jira, Trello or GitHub. This’ll make it easier for others to submit feature proposals or bug reports.", + "links": [] + }, + "G8dOkM_4hP7wPF3QJ8y4g": { + "title": "Component Analytics", + "description": "Track the usage of your components. For development you can use built-in tools like Figma’s Design System Analytics. For the end product you can have a separate way of tracking per platform depending on the technology.", + "links": [] + }, + "xYqDmDpjwkShtL86nt-vY": { + "title": "Logging", + "description": "Implement a way to track and pinpoint component-related outages in your product.", + "links": [] + }, + "qiJGYYWL4naJX-MgZA9Ms": { + "title": "Tooling Analytics", + "description": "Track what tools are being used for your design system. Find out which ones are used the most and which features are the most popular.", + "links": [] + }, + "5znnOkpf9G9tdiMWB6Rut": { + "title": "Service and Health Metrics", + "description": "Define service and health metrics for your design system to set a benchmark on how well you’re doing. Common examples can be the number of tickets closed, improvements made or bugs fixed.", + "links": [] + }, + "eG8ranXuINtcqWfeMH5GW": { + "title": "Community Meetings", + "description": "Arrange community meetings with everyone who uses the design system. Share your knowledge and make proposals to improve the sense of community.", + "links": [] + }, + "LWrrKrhwXfMDKgbFW5DuO": { + "title": "Communication Channel", + "description": "Most product development work happens digitally, so create a digital channel where people can reach out and ask questions.", + "links": [] + }, + "YWoPoO9IW3vLZyxLL2fnT": { + "title": "Open Hours", + "description": "Create open hours in which you can engage your audience in a more private setting where you can discuss things in more detail. You can also use these as peer coding or peer design opportunities.", + "links": [] + }, + "cpAeotBxN8BCsU9RqTEue": { + "title": "FAQs", + "description": "To save everyone time, define which questions are asked frequently by your audience and document them in a discoverable place.", + "links": [] + } +} \ No newline at end of file diff --git a/public/roadmap-content/devops.json b/public/roadmap-content/devops.json index a47e36a89dec..c75a0a0231e4 100644 --- a/public/roadmap-content/devops.json +++ b/public/roadmap-content/devops.json @@ -2178,32 +2178,6 @@ } ] }, - "-pGF3soruWWxwE4LxE5Vk": { - "title": "Travis CI", - "description": "Travis CI is a cloud-based continuous integration (CI) service that automatically builds and tests code changes in GitHub repositories. It helps streamline the software development process by automatically running tests and building applications whenever code is pushed or a pull request is made. Travis CI supports a variety of programming languages and provides integration with other tools and services, offering features like build matrix configurations, deployment pipelines, and notifications. Its ease of setup and integration with GitHub makes it a popular choice for open-source and private projects looking to implement CI/CD practices.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Travis CI Documentation", - "url": "https://docs.travis-ci.com/", - "type": "article" - }, - { - "title": "Travis CI Tutorial", - "url": "https://docs.travis-ci.com/user/tutorial/", - "type": "article" - }, - { - "title": "Explore top posts about CI/CD", - "url": "https://app.daily.dev/tags/cicd?ref=roadmapsh", - "type": "article" - }, - { - "title": "Travis CI Complete Tutorial for DevOps Engineers", - "url": "https://www.youtube.com/watch?v=xLWDOLhTH38", - "type": "video" - } - ] - }, "1-JneOQeGhox-CKrdiquq": { "title": "Circle CI", "description": "CircleCI is a popular continuous integration and continuous delivery (CI/CD) platform that automates the build, test, and deployment processes of software projects. It supports a wide range of programming languages and integrates with various version control systems, primarily GitHub and Bitbucket. CircleCI uses a YAML configuration file to define pipelines, allowing developers to specify complex workflows, parallel job execution, and custom environments. It offers features like caching, artifact storage, and Docker layer caching to speed up builds. With its cloud-based and self-hosted options, CircleCI provides scalable solutions for projects of all sizes, helping teams improve code quality, accelerate release cycles, and streamline their development workflows.\n\nVisit the following resources to learn more:", @@ -2225,26 +2199,10 @@ } ] }, - "TsXFx1wWikVBVoFUUDAMx": { - "title": "Drone", - "description": "Drone is an open-source continuous integration (CI) platform built on container technology. It automates building, testing, and deploying code using a simple, YAML-based pipeline configuration stored alongside the source code. Drone executes each step of the CI/CD process in isolated Docker containers, ensuring consistency and reproducibility. It supports multiple version control systems, offers parallel execution of pipeline steps, and provides plugins for integrating with various tools and services. Drone's lightweight, scalable architecture makes it suitable for projects of all sizes, from small teams to large enterprises. Its focus on simplicity and containerization aligns well with modern DevOps practices and microservices architectures.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Drone", - "url": "https://www.drone.io/", - "type": "article" - }, - { - "title": "Drone Documentation", - "url": "https://docs.drone.io/", - "type": "article" - }, - { - "title": "Drone CI Quickstart", - "url": "https://www.youtube.com/watch?v=Qf8EHRzAgHQ", - "type": "video" - } - ] + "octopus-deploy@TsXFx1wWikVBVoFUUDAMx.md": { + "title": "Octopus Deploy", + "description": "", + "links": [] }, "L000AbzF3oLcn4B1eUIYX": { "title": "TeamCity", @@ -3206,31 +3164,10 @@ } ] }, - "wNguM6-YEznduz3MgBCYo": { - "title": "Application Monitoring", - "description": "Application monitoring involves the continuous observation and analysis of software applications to ensure they perform optimally, identify issues, and provide insights into their operation. This process includes tracking metrics such as response times, error rates, resource utilization (CPU, memory, and disk), and transaction performance. Application monitoring tools collect and analyze data to detect anomalies, provide alerts for potential problems, and offer detailed insights into application behavior and performance. By monitoring applications, organizations can proactively address issues, optimize performance, and improve user experience, ultimately ensuring reliability and efficiency in their software systems.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Applying Basic vs. Advanced Monitoring Techniques", - "url": "https://thenewstack.io/applying-basic-vs-advanced-monitoring-techniques/", - "type": "article" - }, - { - "title": "Why Legacy Apps Need Your Monitoring Love, Too", - "url": "https://thenewstack.io/why-legacy-apps-need-your-monitoring-love-too/", - "type": "article" - }, - { - "title": "Explore top posts about Monitoring", - "url": "https://app.daily.dev/tags/monitoring?ref=roadmapsh", - "type": "article" - }, - { - "title": "Application Monitoring - 4 Golden Signals", - "url": "https://www.youtube.com/watch?v=PHcnmTdVPT0", - "type": "video" - } - ] + "observability@wNguM6-YEznduz3MgBCYo.md": { + "title": "Observability", + "description": "", + "links": [] }, "8rd7T5ahK2I_zh5co-IF-": { "title": "Jaeger", @@ -3346,5 +3283,25 @@ "type": "video" } ] + }, + "eso@lUUJAEBrGJvL8dRs2n1GD.md": { + "title": "ESO", + "description": "", + "links": [] + }, + "dynatrace@4aJVaimsuvGIPXMZ_WjaA.md": { + "title": "Dynatrace", + "description": "", + "links": [] + }, + "salt@Kumwd6XOlEMeDohDH0q9P.md": { + "title": "Salt", + "description": "", + "links": [] + }, + "openshift@3GryoQuI67JTHg9r3xUHO.md": { + "title": "OpenShift", + "description": "", + "links": [] } } \ No newline at end of file diff --git a/public/roadmap-content/docker.json b/public/roadmap-content/docker.json index b570db9cd4e3..1c5d887390aa 100644 --- a/public/roadmap-content/docker.json +++ b/public/roadmap-content/docker.json @@ -378,22 +378,6 @@ } ] }, - "HlTxLqKNFMhghtKF6AcWu": { - "title": "Interactive Test Environments", - "description": "Docker allows you to create isolated, disposable environments that can be deleted once you're done with testing. This makes it much easier to work with third party software, test different dependencies or versions, and quickly experiment without the risk of damaging your local setup.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "Launch a Dev Environment", - "url": "https://docs.docker.com/desktop/dev-environments/create-dev-env/", - "type": "article" - }, - { - "title": "Test Environments - Medium", - "url": "https://manishsaini74.medium.com/containerized-testing-orchestrating-test-environments-with-docker-5201bfadfdf2", - "type": "article" - } - ] - }, "YzpB7rgSR4ueQRLa0bRWa": { "title": "Command Line Utilities", "description": "Docker images can include command line utilities or standalone applications that we can run inside containers.\n\nVisit the following resources to learn more:", @@ -969,5 +953,10 @@ "type": "article" } ] + }, + "networking@9NuHwfytnUTpeVmnMpZZC.md": { + "title": "Networking", + "description": "", + "links": [] } } \ No newline at end of file diff --git a/public/roadmap-content/engineering-manager.json b/public/roadmap-content/engineering-manager.json index 26fcea2140c2..981b9000d0ec 100644 --- a/public/roadmap-content/engineering-manager.json +++ b/public/roadmap-content/engineering-manager.json @@ -468,29 +468,29 @@ "description": "An Engineering Manager's role in production issues management is crucial. They are responsible for quick decision making during system down-times or service disruptions. They deploy resources efficiently to resolve issues, sometimes guiding the team in real-time to troubleshoot and fix the problem.\n\nKey challenges include downtime minimization, maintaining system availability, and making trade-offs between quick fixes and long-term solutions. They address these challenges by implementing strong incident management policies and training the team for effective system recovery processes.\n\nSuccess in this aspect requires a mix of technical skills, effective communication, and problem-solving abilities. They also need a solid understanding of the deployed systems and infrastructure to ensure seamless functionality and service availability. It's crucial to learn from each outage to prevent or handle similar occurrences in the future.", "links": [] }, - "mIUx8zAHWyPWPGvxuTK4y": { - "title": "Contingency planning", - "description": "An Engineering Manager needs to ensure that their team is prepared for any unexpected situations or challenges - that's where contingency planning comes into play. It's the manager's responsibility to guide their team in developing robust plans that address potential risks and uncertainties. This includes identifying possible obstacles, evaluating their impact, and devising strategies to mitigate them.\n\nThe challenges this role faces are manifold, from predicting the unknown to dealing with a resistant team. To navigate these, cultivating an open and flexible team culture is crucial. By fostering a problem-solving mentality, the manager can encourage their team to see contingency planning as a tool, not a burden.\n\nTo successfully play this role, an Engineering Manager needs to have strong risk management and strategic thinking skills. They must be able to balance a long-term view with immediate, tactical decisions. They should also be comfortable leading difficult conversations about potential failures and mishaps.", + "burnout-prevention@mIUx8zAHWyPWPGvxuTK4y.md": { + "title": "Burnout prevention", + "description": "", "links": [] }, - "nnoVA8W70hrNDxN3XQCVL": { - "title": "Disaster recovery", - "description": "An Engineering Manager plays a critical part in disaster recovery. It is their job to ensure that, if any failure occurs, the team can quickly get systems up and running again. They devise and oversee the implementation of a sturdy disaster recovery plan. This often involves risk assessment, data backups, and establishing rapid recovery processes.\n\nChallenges they may face include dealing with data loss and service disruptions. To face these, an Engineering Manager often relies on a good strategy, clear communication, and effective coordination. They align the team and ensure everyone knows their role in the recovery process.\n\nIt requires strong leadership, risk management, technical knowledge, and problem-solving skills. Regular testing of the recovery plan is also essential to identify loopholes and ensure the effectiveness of the strategies in place.", + "critical-situation-leadership@nnoVA8W70hrNDxN3XQCVL.md": { + "title": "Critical situation leadership", + "description": "", "links": [] }, - "FwK-B7jRbBXVnuY9JxI1w": { - "title": "Business continuity", - "description": "An Engineering Manager plays a pivotal role in the domain of business continuity. This involves ensuring that the various aspects of technological and process frameworks are resilient to disruptions. The aim is to sustain core business operations during times of crisis.\n\nKey responsibilities include setting up robust risk management systems, executing incident-response plans, and ensuring data integrity during downtime. It's a challenge to maintain operational resilience without stinting ongoing projects, and managing it involves a delicate balance of resources.\n\nTo achieve this, Engineering Managers must possess excellent problem-solving skills and a clear understanding of business operation needs. Regular risk assessment and sharpening the team's skill set to adapt and respond to uncertainty quickly are essential strategies. Robust infrastructure, policy planning, and good leadership are underlying requirements to render effective business continuity.", + "emergency-staffing@FwK-B7jRbBXVnuY9JxI1w.md": { + "title": "Emergency staffing", + "description": "", "links": [] }, - "QFhhOgwz_bgZgOfKFg5XA": { - "title": "Security incident handling", - "description": "For an Engineering Manager, handling security incidents within a team involves keen attention to detail and quick actions. Their key responsibilities include coordinating with the security team to manage the issue and ensure minimal disruption to the project. They also facilitate communications, keeping all stakeholders informed about the situation and the steps being taken.\n\nChallenges faced by the Engineering Manager include managing team stress levels during security incidents and ensuring swift return to normal operations post-incident. By skillfully juggling these tasks, the manager can help secure the team's trust and keep the project on track.\n\nTo successfully handle security incidents, an Engineering Manager needs active decision-making skills, a solid understanding of security protocols, and strong team leadership capabilities. The ability to react calmly and decisively under pressure is also essential.", + "stress-management@QFhhOgwz_bgZgOfKFg5XA.md": { + "title": "Stress management", + "description": "", "links": [] }, - "tmY4Ktu6luFg5wKylJW76": { - "title": "Production issues management", - "description": "As an Engineering Manager, handling production issues is one of the vital responsibilities. This includes timeliness in identifying, troubleshooting, and resolving problems. They may be involved in the actual debugging, but most of their tasks involve coordinating the team and defining procedures for a swift response to any issues.\n\nAddressing these issues can be challenging, particularly if they disrupt essential services or products. The manager needs to communicate effectively with the team and stakeholders, manage expectations, and ensure minimal interruption of services.\n\nTo excel in production issues management, an Engineering Manager needs valuable skills. These include technical knowledge, critical thinking, decision-making, and strong communication skills. Also, experience with certain tools, like monitoring software, could be beneficial to quickly detect and resolve issues.", + "work-life-balance-during-crises@tmY4Ktu6luFg5wKylJW76.md": { + "title": "Work-life balance during crises", + "description": "", "links": [] }, "5MM1ccB1pmQcd3Uyjmbr7": { @@ -568,11 +568,6 @@ "description": "The role of an Engineering Manager extends to external collaboration as well. Here, they often serve the role of liaising with external teams, vendors, or partners, aligning goals and ensuring smooth communication flow. The key responsibilities include managing relationships, understanding the partner ecosystem, and negotiating win-win situations.\n\nEngineering Managers face challenges like cultural differences, communication hurdles, or time zone disparities. They address these by building reliability through regular updates, clear agendas, and understanding each other's work culture.\n\nTo succeed, Engineering Managers need good interpersonal skills, a keen eye for future opportunities, and the ability to adapt quickly. An understanding of business and sales, alongside engineering knowledge, can be advantageous too. This role needs balance - drive details when necessary and step back and delegate when appropriate.", "links": [] }, - "TQY4hjo56rDdlbzjs_-nl": { - "title": "Competitive Analysis", - "description": "An Engineering Manager uses competitive analysis to understand market trends and competitor strategies. This aids in decision-making and strategic planning. Their key responsibilities include identifying key competitors, analyzing their products, sales, and marketing strategies.\n\nChallenges may arise from having incomplete or inaccurate data. In these cases, Engineering Managers have to rely on their judgement and experience. Their analysis should be unbiased and as accurate as possible to influence the right design and development strategies.\n\nSuccessful competitive analysis requires strong analytical skills, keen attention to detail, and the ability to understand complex market dynamics. Managers must stay updated on market trend, technological advancements and be able to distinguish their company's unique selling proposition. This will allow them to plan steps to maintain competitiveness in the market.", - "links": [] - }, "QUxpEK8smXRBs2gMdDInB": { "title": "Legacy System Retirement", "description": "Every Engineering Manager knows the value and hurdles of legacy system retirement. They must plan and manage this complex task with a keen understanding of the system's purpose, its interdependencies, and potential risks of its retirement. Key responsibilities include assessing the impact on users, mitigating downtime, and ensuring business continuity.\n\nChallenges often arise from lack of documentation or knowledge about the legacy system. To overcome this, they could organize knowledge-sharing sessions with long-standing team members, assessing external help, or gradual transition methods.\n\nThe successful retirement of a legacy system requires a comprehensive approach, good interpersonal skills for team collaboration, and strong decision-making skills. An Engineering Manager has to balance the system’s business value against the cost and risk of maintaining it.", diff --git a/public/roadmap-content/flutter.json b/public/roadmap-content/flutter.json index eab99137e36e..2e1c457fe89e 100644 --- a/public/roadmap-content/flutter.json +++ b/public/roadmap-content/flutter.json @@ -926,21 +926,10 @@ } ] }, - "4ZbGj54WR5iuk0V8X_cpL": { - "title": "Remote Cnofig", - "description": "Firebase Remote Config, accessed in Flutter via the `firebase_remote_config` plugin, enables dynamic app behavior and appearance changes without app updates. This involves adding the plugin, initializing the service, defining default parameter values in the console or code, fetching and retrieving remote parameters, and updating those parameters either through the console or by activating fetched values, allowing for A/B testing and feature control.\n\nLearn more from the following:", - "links": [ - { - "title": "Remote Config", - "url": "https://firebase.google.com/docs/remote-config", - "type": "article" - }, - { - "title": "Firebase Remote Config", - "url": "https://www.youtube.com/watch?v=34ExOdNEMXI", - "type": "video" - } - ] + "remote-config@4ZbGj54WR5iuk0V8X_cpL.md": { + "title": "Remote Config", + "description": "", + "links": [] }, "bVeHBEoR_4kfPsEHmVYbp": { "title": "Cloud Functions", diff --git a/public/roadmap-content/frontend.json b/public/roadmap-content/frontend.json index fced5ed47d75..5f79bc50cd3f 100644 --- a/public/roadmap-content/frontend.json +++ b/public/roadmap-content/frontend.json @@ -192,106 +192,6 @@ } ] }, - "PCirR2QiFYO89Fm-Ev3o1": { - "title": "Learn the basics", - "description": "HTML (HyperText Markup Language) is the backbone of webpages. It structures the content you see online. You use CSS to style this HTML structure and JavaScript to make it interactive. Think of HTML as the skeleton of a website.\n\nVisit the following resources to learn more:", - "links": [ - { - "title": "web.dev: Learn HTML", - "url": "https://web.dev/learn/html", - "type": "article" - }, - { - "title": "HTML Full Course - Build a Website Tutorial", - "url": "https://www.youtube.com/watch?v=kUMe1FH4CHE", - "type": "video" - } - ] - }, - "z8-556o-PaHXjlytrawaF": { - "title": "Writing Semantic HTML", - "description": "Semantic HTML uses markup to convey the meaning of web content, not just its appearance, by employing elements like `
`, `