I'm starting to write end-to-end tests for Angular Universal apps that are a front-end for a headless CMS. My goals are to test the basic functionalities of server-side rendering (SSR), run accessibility tests, and check if any errors are logged to the browser's console. I've seen many questions about how to test Angular Universal apps, so I wanted to share my setup.
Improve Angular SSR performance using Redis cache
After deploying an Angular SSR app, you might come to notice it takes a few seconds to load the initial page. The time it takes for the Universal engine to render the view is one of many factors that contribute to this delay. Let's see how caching the rendered HTML can improve load times for subsequent requests.
Dynamic Sitemap for Angular Universal and Contentful
A sitemap is a file that provides search engines data about the pages of your site. If you're using a content management system (CMS), your sitemap needs to be kept up to date as you add new content/pages. In this post, we'll look at how we can create a dynamic sitemap using Angular Universal and Contentful. However, this approach could be applied to any Node.js project. The sitemap will be dynamic because it will be generated from content stored in Contentful.
Using Angular as a front-end for Contentful
Contentful is a headless content management system (CMS) that allows you to manage content and fetch it using their REST or GraphQL API. This makes up your back-end. How the front-end is built is completely up to you! After using WordPress for the past decade, this approach feels refreshing because I can use modern technology stacks that provide better user experiences. In this post, I'll explain how blog posts can be managed in Contentful, and then implement an Angular front-end to consume and display them.
Hello World
Welcome to the start of my blog! If you don't know already, my name's Kishan and I'm a web developer. It has been my goal to start this blog up for some time now. Why? To share my experiences as I use new frameworks, libraries, and tooling in my projects. My hope is that this will help us all (including myself) learn and encourage discussion to find the best approaches to complex problems.