diff --git a/README.md b/README.md index 0a75df39..fb7a0e66 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ Whether you're preparing for a System Design Interview or you simply want to und * [Is Telegram Secure?](https://bytebytego.com/guides/is-telegram-secure) * [Fixing Bugs Automatically at Meta Scale](https://bytebytego.com/guides/fixing-bugs-automatically-at-meta-scale) * [How Levelsfyi Scaled to Millions of Users with Google Sheets](https://bytebytego.com/guides/how-levelsfyi-scaled-to-millions-of-users-with-google-sheets) - * [McDonald’s Event-Driven Architecture](https://bytebytego.com/guides/mcdonald's-event-driven-architecture) + * [McDonald’s Event-Driven Architecture](https://bytebytego.com/guides/mcdonalds-event-driven-architecture) * [Uber Tech Stack - CI/CD](https://bytebytego.com/guides/uber-tech-stack-cicd) * [How to Design Stack Overflow](https://bytebytego.com/guides/how-will-you-design-the-stack-overflow-website) * [Twitter 1.0 Tech Stack](https://bytebytego.com/guides/twitter-10-tech-stack) @@ -97,8 +97,8 @@ Whether you're preparing for a System Design Interview or you simply want to und * [Netflix Tech Stack - CI/CD Pipeline](https://bytebytego.com/guides/netflix-tech-stack-cicd-pipeline) * [How TikTok Manages a 200K File Frontend MonoRepo](https://bytebytego.com/guides/how-tiktok-manages-a-200k-file-frontend-monorepo) * [How Netflix Really Uses Java](https://bytebytego.com/guides/how-netflix-really-uses-java) - * [Evolution of Airbnb’s Microservice Architecture](https://bytebytego.com/guides/evolution-of-airbnb's-microservice) - * [Reddit's Core Architecture](https://bytebytego.com/guides/reddit's-core-architecture) + * [Evolution of Airbnb’s Microservice Architecture](https://bytebytego.com/guides/evolution-of-airbnbs-microservice) + * [Reddit's Core Architecture](https://bytebytego.com/guides/reddits-core-architecture) * [10 Principles for Building Resilient Payment Systems](https://bytebytego.com/guides/10-principles-for-building-resilient-payment-systems-by-shopify) * [What is the Journey of a Slack Message?](https://bytebytego.com/guides/what-is-the-journey-of-a-slack-message) * [Top 9 Engineering Blogs](https://bytebytego.com/guides/top-9-engineering-blog-favorites) @@ -106,7 +106,7 @@ Whether you're preparing for a System Design Interview or you simply want to und * [Evolution of the Netflix API Architecture](https://bytebytego.com/guides/evolution-of-the-netflix-api-architecture) * [How Discord Stores Trillions of Messages](https://bytebytego.com/guides/how-discord-stores-trillions-of-messages) * [Twitter Architecture 2022 vs. 2012](https://bytebytego.com/guides/twitter-architecture-2022-vs-2012) - * [Evolution of Uber's API Layer](https://bytebytego.com/guides/evolution-of-uber's-api-layer) + * [Evolution of Uber's API Layer](https://bytebytego.com/guides/evolution-of-ubers-api-layer) * [Netflix's Tech Stack](https://bytebytego.com/guides/netflixs-tech-stack) * [AI and Machine Learning](https://bytebytego.com/guides/ai-machine-learning) * [5 Functions to Merge Data with Pandas](https://bytebytego.com/guides/5-functions-to-merge-data-with-pandas) @@ -175,7 +175,7 @@ Whether you're preparing for a System Design Interview or you simply want to und * [What is ELK Stack and Why is it Popular?](https://bytebytego.com/guides/what-is-elk-stack-and-why-is-it-so-popular-for-log-management) * [Why are Content Delivery Networks (CDN) so Popular?](https://bytebytego.com/guides/why-are-content-delivery-networks-cdn-so-popular) * [How Big Keys Impact Redis Persistence](https://bytebytego.com/guides/how-do-big-keys-impact-redis-persistence) - * [A Beginner's Guide to CDN](https://bytebytego.com/guides/a-beginner's-guide-to-cdn-content-delivery-network) + * [A Beginner's Guide to CDN](https://bytebytego.com/guides/a-beginners-guide-to-cdn-content-delivery-network) * [The Ultimate Redis 101](https://bytebytego.com/guides/the-ultimate-redis-101) * [Cache Systems Every Developer Should Know](https://bytebytego.com/guides/cache-systems-every-developer-should-know) * [Top 5 Strategies to Reduce Latency](https://bytebytego.com/guides/top-5-strategies-to-reduce-latency) @@ -219,7 +219,7 @@ Whether you're preparing for a System Design Interview or you simply want to und * [Foreign Exchange Payments](https://bytebytego.com/guides/foreign-exchange-payments) * [How to Avoid Double Payment](https://bytebytego.com/guides/how-to-avoid-double-payment) * [How do Apple Pay and Google Pay work?](https://bytebytego.com/guides/how-applegoogle-pay-works) - * [How VISA Works When Swiping a Credit Card](https://bytebytego.com/guides/how-does-visa-work-when-we-swipe-a-credit-card-at-a-merchant's-shop) + * [How VISA Works When Swiping a Credit Card](https://bytebytego.com/guides/how-does-visa-work-when-we-swipe-a-credit-card-at-a-merchants-shop) * [How ACH Payment Works](https://bytebytego.com/guides/how-does-ach-payment-work) * [How does Visa make money?](https://bytebytego.com/guides/how-does-visa-make-money) * [Software Architecture](https://bytebytego.com/guides/software-architecture) @@ -274,8 +274,8 @@ Whether you're preparing for a System Design Interview or you simply want to und * [A Roadmap for Full-Stack Development](https://bytebytego.com/guides/a-roadmap-for-full-stack-development) * [What Are the Greenest Programming Languages?](https://bytebytego.com/guides/what-are-the-greenest-programming-languages) * [Java Collection Hierarchy](https://bytebytego.com/guides/java-collection-hierarchy) - * [Running C, C++, or Rust in a Web Browser](https://bytebytego.com/guides/is-it-possible-to-run-c-c++-or-rust-on-a-web-browser) - * [Top 8 C++ Use Cases](https://bytebytego.com/guides/top-8-c++-use-cases) + * [Running C, C++, or Rust in a Web Browser](https://bytebytego.com/guides/is-it-possible-to-run-c-c-or-rust-on-a-web-browser) + * [Top 8 C++ Use Cases](https://bytebytego.com/guides/top-8-c-use-cases) * [Top 6 Multithreading Design Patterns You Must Know](https://bytebytego.com/guides/top-6-multithreading-design-patterns-you-must-know) * [Data Transmission Between Applications](https://bytebytego.com/guides/how-is-data-transmitted-between-applications) * [Blocking vs Non-Blocking Queue](https://bytebytego.com/guides/blocking-vs-non-blocking-queue) @@ -283,7 +283,7 @@ Whether you're preparing for a System Design Interview or you simply want to und * [How to Avoid Crawling Duplicate URLs at Google Scale?](https://bytebytego.com/guides/how-to-avoid-crawling-duplicate-urls-at-google-scale) * [10 Books for Software Developers](https://bytebytego.com/guides/10-books-for-software-developers) * [Top 8 Standards Every Developer Should Know](https://bytebytego.com/guides/top-8-standards-every-developer-should-know) - * [How Do C++, Java, Python Work?](https://bytebytego.com/guides/how-do-c++-java-python-work) + * [How Do C++, Java, Python Work?](https://bytebytego.com/guides/how-do-c-java-python-work) * [10 Key Data Structures We Use Every Day](https://bytebytego.com/guides/10-key-data-structures-we-use-every-day) * [A Brief History of Programming Languages](https://bytebytego.com/guides/a-brief-history-og-programming-languages) * [Top 6 Load Balancing Algorithms](https://bytebytego.com/guides/top-6-load-balancing-algorithms) @@ -413,7 +413,7 @@ Whether you're preparing for a System Design Interview or you simply want to und * [How do we manage sensitive data in a system?](https://bytebytego.com/guides/how-do-we-manage-sensitive-data-in-a-system) * [HTTPS, SSL Handshake, and Data Encryption Explained](https://bytebytego.com/guides/https-ssl-handshake-and-data-encryption-explained-to-kids) * [Symmetric vs Asymmetric Encryption](https://bytebytego.com/guides/symmetric-encryption-vs-asymmetric-encryption) - * [Session-based Authentication vs. JWT](https://bytebytego.com/guides/what's-the-difference-between-session-based-authentication-and-jwts) + * [Session-based Authentication vs. JWT](https://bytebytego.com/guides/whats-the-difference-between-session-based-authentication-and-jwts) * [JWT 101: Key to Stateless Authentication](https://bytebytego.com/guides/jwt-101-key-to-stateless-authentication) * [Is HTTPS Safe?](https://bytebytego.com/guides/is-https-safe) * [Cybersecurity 101](https://bytebytego.com/guides/cybersecurity-101-in-one-picture) diff --git a/scripts/readme.ts b/scripts/readme.ts index 0b8bfe9d..7aa2ce62 100644 --- a/scripts/readme.ts +++ b/scripts/readme.ts @@ -50,6 +50,15 @@ function getGuides(): Guide[] { .sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime()) } +function sanitizeForUrl(id: string): string { + return id + .replace(/'/g, '') + .replace(/\+/g, '') + .replace(/[^a-zA-Z0-9-]/g, '') + .replace(/--+/g, '-') + .replace(/^-|-$/g, '') +} + function generateMarkdownList() { const categories = getCategories() const guides = getGuides() @@ -62,7 +71,7 @@ function generateMarkdownList() { const categoryGuides = guides.filter(guide => guide.categories.includes(category.id)) if (categoryGuides.length > 0) { categoryGuides.forEach(guide => { - markdown += ` * [${guide.title}](https://bytebytego.com/guides/${guide.id})\n` + markdown += ` * [${guide.title}](https://bytebytego.com/guides/${sanitizeForUrl(guide.id)})\n` }) } })