Domain Reseller Setup Guide: Resell Domains & Boost Your Web Dev/Agency Profits

WPMU DEV’s Reseller lets you offer domain registrations on your website and white label client portal. Learn how to easily add Domain Reseller to attract and retain more clients, offer additional web services, and boost your business revenue!

A screen showing an example of offering domains on your website
Add a new source of revenue to your business with Domain Reseller.

Reselling domains is a great way to get new business through the door, offer a low-cost web service, and retain clients for the long-term.

WPMU DEV’s Reseller is an all-in-one platform that lets you offer clients digital services such as reseller hosting, template reselling, domain reseller, and more, and boost your revenue with hands-free automated management.

Note: Reseller is only available to Agency plan members.

In this step-by-step guide, we’ll show how to set up and integrate full domain reseller automation with your business, covering the following sections:

Alternatively, you can check out the video below, which takes you through the entire Reseller setup process:

Getting Started: Pre-Requisite Step

Before you can resell domains, you need to set up your Clients & Billing account in The Hub.

This step is covered fully in our documentation and in this tutorial: How To Set Up Clients & Billing.

Have you completed this step?

Great! Then let’s show you how easy and straightforward setting up Domain Reseller is …

Add Domains and Set Pricing

Go to The Hub > Reseller > Domain Reseller and click on the +Add TLDs button …

Domain Reseller screen
Click on the button to set up Domain Reseller.

This will bring up the Add TLDs screen, where you can select which top-level domains (TLDs) you want to resell and set retail pricing for your domains.

Add TLDs screen.
Add your TLDs and set up your domain pricing.

There are currently 250+ TLDs you can resell under your own brand (and more coming soon).

After selecting TLDs, the next step is to add a markup (i.e. your profit) to your wholesale domain pricing across all domains.

There are two ways to set the markup price:

  1. Specify a percentage: For example, setting a value of “10” will increase the price of all domains by 10%, so a domain that costs you US$20 to buy will retail to your clients at US$22.
  2. Set a fixed price markup (in USD): With this option selected, setting a value of “10” will increase the price of all domains by USD$10, so a domain that costs you US$20 to buy will retail to your clients at US$30.

Note: After setting a global markup price, you can edit the markup for individual TLDs, as we’ll show you later.

After selecting your TLDs and setting your global markup price, click on the Add TLDs button to save your settings.

Domain Reseller - Add TLDs
Resell 250+ TLDs with Domain Reseller (more coming soon!)

Your selected TLDs will be automatically configured and display in The Hub’s Domain Reseller tab.

Domain Reseller
View your domain cost and retail prices in The Hub’s Domain Reseller tab.

Edit Domain Details

Reseller applies a global markup to domains during the initial set up. However, you can also set individual and bulk markups to domains.

To edit an individual domain’s markup value, click on the ellipsis icon next to the domain and select Update TLD.

Update TLD markup - single
You can edit the markup value of a single domain.

Specify the % or USD value of the markup for the selected domain and click on the Update TLD button. This adjustment will not affect other domains in your account.

Update single TLD markup.
In this example, we are increasing the price of our selected domain by USD$5.

To bulk edit the markup for multiple domains, tick the checkboxes of the domains you wish to edit and click on Update TLDs. (Note: Click on the checkbox next to Update TLDs to toggle and select/deselect all domains).

Update TLD markup - bulk
Save time and easily bulk update TLDs.

Select multiple domains to edit by clicking on their checkboxes. Specify the % or USD value of the markup for all selected domains and click on the Update TLDs button to adjust their pricing.

Update bulk TLD markup.
In this example, we’ll increase the price of the three selected domains by 25%.

You can also remove TLDs from your account individually or in bulk, by either clicking on the ellipsis icon of a single domain, or selecting multiple domains and clicking on Delete TLDs.

Delete selected TLDs
Click on Delete TLDs to remove the above selected domains from your Reseller account.

A notification message will appear asking you to confirm your deletion.

Please note the following:

  • Clicking Delete will remove the selected domains from your account. This will prevent new clients from buying the deleted TLDs. Any existing domains that have already been purchased with the deleted TLDs will remain intact, but your clients won’t be able to renew them.
  • Click Cancel to abort the deletion request and retain all selected domains in your account.
Delete Selected TLDs message
Make sure you really want to remove domains from your account, as clients won’t be able to renew deleted TLDs.

Additional editing features of Domain Reseller include a search filter that you can use to quickly locate domain extensions.

Domain search feature
Use the search feature to quickly find domain extensions.

You can also add TLDs to your account by clicking the + Add TLDs button.

Add extra domains to Domain Reseller.
Click the + Add TLDs button to include additional TLDs.

This feature is useful if new TLDs are introduced later to Reseller, or if you have not selected all available domains during your initial Domain Reseller setup.

Note: If the + Add TLDs button is grayed out, it means that all available TLDs have already been added to your Domain Reseller account.

Greyed out Add TLDs button with tooltip.
A grayed out button indicates that all available TLDs have already been added to your account.

Now that you have a better understanding of how to add and edit domains, let’s look at how to configure Domain Reseller settings.

Configure Domain Reseller Settings

After adding domains and specifying their markup, head over to the Reseller > Settings tab to configure your Domain Reseller settings.

Domain Reseller Settings
Configure Domain Reseller features in the Settings tab.

Here’s a brief overview of each setting:

Default Client Role

This section lets you specify the default client role that will be assigned to new clients who purchase domains.

Domain Reseller settings - Default client role options.
Specify the default role for new domain clients.

Note: Go to The Hub > Clients & Billings > Roles to set up and configure roles for your clients. For more information see our documentation: Client Roles.

Round Off Prices

Select the number of decimal places to round off and display TLD pricing for domains.

Domain Reseller settings - Round off prices.
Round off TLD prices when domains are displayed.

Taxes

The tax rates you select here will be automatically added to the total price of the domain purchase during checkout.

Domain Reseller Tax
Add taxes to domain purchases.

To select taxes, create one or more tax rates in the Taxes section of The Hub > Clients & Billing area.

Clients-Billing Tax
Set up taxes to be added to domain purchases in The Hub’s Clients & Billing section.

After adding TLDs to Domain Reseller and configuring your domain pricing and settings, it’s time to make these available for purchase.

Make Domains Available For Purchase

With Reseller, clients can easily purchase domains directly from your website, all under your own brand.

Your clients will not be directed away to a third-party payment processor to complete their purchase. Everything is handled on your site from start to finish using our white label client portal plugin, The Hub Client.

If you need help setting up a client portal on your site using The Hub Client, see this tutorial: How To Create A Fully-Branded, Customized Client Portal With WPMU DEV

After installing and configuring The Hub Client on your main website, navigate to The Hub Client > Reseller section in your dashboard menu…

The Hub Client Dashboard menu
Resell domains from your white label client portal using The Hub Client.

Next, click on the Domain Reseller tab.

The Domain Reseller screen will display a list of all the domains and pricing markups that you have set up in The Hub, as well as links to support, documentation, and a configurable widget that allows you to embed domains for resale on your website.

The Hub Client Domain Reseller screen.
The Hub Client Domain Reseller screen.

To configure the domains widget, scroll down the Domain Reseller page and click on the Customize domain widget button.

The Hub Client - Domain Reseller - Customize domains widget section
Add an easy search & buy widget to your site.

The customizable widget allows you to change the background, label and button colors of the domains table on your site.

Domain Reseller - Customize widget screen.
Customize your domain reseller widget to match your brand.

The Hub Client generates a shortcode and a Domain Reseller Gutenberg block that lets you easily embed the widget anywhere on your site.

Embed domain widget modal
Embed the domain widget on your site using a shortcode or block … easy!

In the screenshot below, you can see how we have added the widget to a page using the Domain Reseller block and the block’s available settings.

Domain Reseller block
Add the widget anywhere on your site using the Domain Reseller block.

When done, simply publish and visit your page to view and test your live widget.

Domain Reseller widget - front end
Can you see the widget on your site? Great! Then you are ready to start selling domains.

Type in a domain name into the search field and click on the Search Domain button to view the results your clients will see when visiting your site.

A screen showing an example of offering domains on your website
Your domain results page, showing matching TLDs and additional suggestions.

Here is a nifty little feature of the Domain Reseller widget:

If a client types in a domain with the TLD extension included (e.g. exampledomain.com), the results page will display (Exact Match) next to the domain if it’s available.

Domain Reseller Results - Exact match
Go on, click the button … you know you want to buy it!

After searching for available domain names and clicking on the Buy Now button, your client will be asked to create an account on your client portal site or log into an existing account.

Create account screen
Clients can create an account or log into their existing one.

The client will then be stepped through the domain registration process … all inside your client portal!

First, they will be asked to enter their Registrant Information details.

Domain registrant details.
The domain registration screen where clients are asked to enter their details.

Next, they will be taken to the checkout screen and asked to complete their purchase.

Domain registrant checkout
Reseller provides you with effortless and automated client self-checkout.

Manage Client Domains

The automation doesn’t stop after clients successfully register and purchase domains from your site.

You’ll be automatically notified via email of every domain purchase.

Domain Reseller email - client notification.
You’ll be automatically notified via email when a client purchases a domain.

Purchased domains are accessed and managed inside your white label client portal, where clients can also pay for renewals and add new domains.

Note: If domains are not set to auto renew, your clients will automatically receive domain expiry reminders 90, 60, and 30 days before the expiry date.

You can access all of your clients’ purchase details from The Hub’s Clients & Billing section.

CB Client list
Manage clients and view sales activity from The Hub’s Clients & Billing section.

With domain reseller set up, your clients can now search for and buy domains directly from your site or client portal, under your own brand, at the price you set … all automated from start to finish!

Refer to our documentation section for detailed step-by-step instructions on setting up and using the Clients & Billing tool, The Hub Client plugin, and all of Domain Reseller’s features.

Also, check out our Reseller tutorials for practical tips and additional information.

Additional Features (Coming Soon)

In addition to reselling domains, hosting, and templates directly on your website through your white-label client portal, we are working on a host of other great features that Resellers will soon have access to.

For example, domain and hosting purchases currently require separate checkouts. Very soon, when your clients buy hosting they’ll be prompted to add a domain (or vice versa), and everything will be automatically connected and propagated for them, including DNS setup … making the entire process seamless and hands-free for you!

Additional features of the Reseller platform that we are working on include:

  • Country-specific TLDs
  • Domain Transfers
  • Webmail
  • A fully integrated ticketing system for the client portal that will streamline the way you communicate with your reseller clients and assist them.

Become a Domain Reseller Today

As mentioned earlier, you must be on the Agency plan to access our Reseller platform, which includes domain reselling automation (with wholesale domain pricing), reseller hosting (plus $144 free yearly hosting credit), template reselling, and more!

Agency comes with a full risk-free money-back guarantee. So, if within the first 30 days you’re not satisfied with the platform, just cancel and we’ll refund you in full, no questions asked.

In fact, we’re so excited about the future of our Reseller platform and its tremendous potential to transform and grow your business, that we are giving away $1 million in hosting credits to Agency members.

Read all about our $1 million giveaway!

Distributed Task Synchronization: Leveraging ShedLock in Spring

In today's distributed computing landscape, coordinating tasks across multiple nodes while ensuring they execute without conflicts or duplication presents significant challenges. Whether managing periodic jobs, batch processes, or critical system tasks, maintaining synchronization and consistency is crucial for seamless operations.

The Problem

Let's say we need to run some tasks on a schedule, whether it's a database cleanup task or some data generation task. If you approach the problem directly, you can solve this problem using the @Schedules annotation included in Spring Framework. This annotation allows you to run code at fixed intervals or on a cron schedule. But what if the number of instances of our service is more than one? In this case, the task will be executed on every instance of our service.

How to Automatically Copy Google Forms Responses to any other Spreadsheet

Google Forms is a perfect tool for collecting data, from event registrations to customer feedback. By default, your Google Form responses are added in a Google Sheet that is linked to the form.

However, there could be scenarios where you may want to store a copy of the form responses in a different location, such as a Microsoft Excel worksheet, a Zoho sheet, or even multiple Google sheets.

Copy Form Responses to Multiple Sheets

The Problem

For this example, we have a Google Form where respondents can fill in their name, email address, city and other basic details. When a respondents submits the form, we would like that form response to be stored in an Excel sheet as well in addition to the original Google Sheet.

Let’s see how we can easily automate this with the help of Document Studio.

The Solution

Launch Document Studio inside Google Forms and create a new workflow. Provide the workflow name and move to the Conditions page.

Google Form Conditions

Let’s add some conditions here to filter out the form responses that we don’t want to be saved in the Excel sheet. For instance, you may want to save only the responses where the respondent’s city is either New York or Boston. Any form response that doesn’t meet this condition will be ignored.

Next, move to the Tasks page and add a new task. Choose Copy Row from the list of available tasks. Here we’ll choose the spreadsheet service the Google Form responses should be stored. You can choose from Google Sheets, Microsoft Excel, or Zoho Sheets.

Copy Form Responses to Excel

Connect Microsoft Excel to Google Forms

Select Excel Sheets from the list of available spreadsheet applications, and click on the Link Microsoft Excel button. You’ll be asked to sign in with your Microsoft account and grant permissions to Document Studio to access your Excel files.

Once your Microsoft account has been linked, open the Excel workbook in your browser and copy-paste the spreadsheet URL as shown in the screenshot below. If you would like to copy the form response to a Zoho Sheet, you can choose Zoho Sheets from the list and link your Zoho account.

Microsoft Excel URL

You also need to specify the name of the worksheet where the form responses should be copied. If the sheet doesn’t exist, Document Studio will create a new sheet in Excel with the specified name.

The next section is Field Mapping where you can specify which form fields should be copied to the Excel sheet. You also need to specify the corresponding column names in the Excel sheet where the form responses should be stored.

For instance, if the field in your Google Form is called “Zip Code”, you can map it to the “Postal Code” column in your Excel sheet. Similarly, if the field in your Google Form is “Email”, you can map it to the “Email Address” column in your Excel sheet.

Google Form Field (Field Name)Excel Column Name (Field Value)
Zip Code{{ Postal Code }}
Email{{ Email Address }}

Save your task and click on Continue to proceed to the triggers screen. Check the Run on form submit option so that every time a new form response is submitted, the workflow will be triggered, and a new row will be added to the specified Microsoft Excel or Zoho Sheet.

Copy to Microsoft Excel

  1. Copy Google Form response to Zoho Sheet
  2. Duplicate Google Form response in another Google Sheet

Spring Boot 3.2: Replace Your RestTemplate With RestClient

In the world of Spring Boot, making HTTP requests to external services is a common task. Traditionally, developers have relied on RestTemplate for this purpose. However, with the evolution of the Spring Framework, a new and more powerful way to handle HTTP requests has emerged: the WebClient. In Spring Boot 3.2, a new addition called RestClient builds upon WebClient, providing a more intuitive and modern approach to consuming RESTful services.

Origins of RestTemplate

RestTemplate has been a staple in the Spring ecosystem for years. It's a synchronous client for making HTTP requests and processing responses. With RestTemplate, developers could easily interact with RESTful APIs using familiar Java syntax. However, as applications became more asynchronous and non-blocking, the limitations of RestTemplate started to become apparent.

Building and Integrating REST APIs With AWS RDS Databases: A Node.js Example

Building a REST API to communicate with an RDS database is a fundamental task for many developers, enabling applications to interact with a database over the internet. This article guides you through the process of creating a RESTful API that talks to an Amazon Relational Database Service (RDS) instance, complete with examples. We'll use a popular framework and programming language for this demonstration: Node.js and Express, given their widespread use and support for building web services.

Prerequisites

Before we begin, ensure you have the following:

Python Function Pipelines: Streamlining Data Processing

Function pipelines allow seamless execution of multiple functions in a sequential manner, where the output of one function serves as the input to the next. This approach helps in breaking down complex tasks into smaller, more manageable steps, making code more modular, readable, and maintainable. Function pipelines are commonly used in functional programming paradigms to transform data through a series of operations. They promote a clean and functional style of coding, emphasizing the composition of functions to achieve desired outcomes.

In this article, we will explore the fundamentals of function pipelines in Python, including how to create and use them effectively. We'll discuss techniques for defining pipelines, composing functions, and applying pipelines to real-world scenarios.

Recover Distributed Transactions in MySQL

Distributed transactions, also known as XA transactions, emerged to address the complexity of coordinating transactions across multiple databases or systems in a distributed environment. Imagine you’re conducting an orchestra where each musician represents a different database or service. Just like ensuring harmony in music requires precise coordination, maintaining transactional integrity across distributed systems demands careful orchestration.

This is where a two-phase commit (2PC), a vital aspect of XA transactions, steps in. 2PC acts as the conductor, ensuring that all musicians (or database participants) are ready to commit before the final note is played. Just as every instrument must be in tune before a symphony reaches its crescendo, 2PC ensures that all components of a distributed transaction are in sync before proceeding, thus guaranteeing the integrity of the transaction across the distributed landscape.

7 Tips To Land Your First Customer Service Call Center Job

Sales and technical support teams are like little armies protecting a company’s reputation. Call center representatives, meanwhile, are like field commanders who answer calls, troubleshoot issues, and track all of their progress to protect the company and its customers. But being a call center representative requires a lot of skills […]

The post 7 Tips To Land Your First Customer Service Call Center Job appeared first on .

Chris’ Corner: Scroll Driven Delight

I’m pretty hot on Scroll-Driven Animations! What a wonderful idea that we can tie @keyframe animations timelines to scroll positions. And I’m sure the creators of it thought long and hard, because the API makes a ton of things possible. It’s not just “how far the entire page has scrolled”, although that’s possible. The progress through the animation can be tethered either to the scroll position of any element or to the position of an element within a scrollable container. Those are referred to as the Scroll Progress timeline or the View Progress timeline respectively. Slow clap, people.

Bramus Van Damme makes that nicely clear in this overview article. Bramus has been following, working on, creating demos, and writing about this stuff for a long time, and it was a smart move to wrap all that stuff up in a dedicated website for it.

I’m also a big fan of his co-worker Adam’s approach to an intro article here. Adam makes demos that are a smidge more designery and those tend to land with me. And speaking of designery demos, Ryan Mulligan’s beginning explorations are wonderful. He’s got some Polaroid photo style images that “blur in” when they scroll into view and a pair of photos that shuffle themselves as you scroll. I share Ryan’s sentiment that the tools Bramus has built are nearly crucial in understanding this stuff, since all the different keywords and values have such big effects.

These scroll-driven animations tend to be things that are just fun and could easily be thought of as progressive enhancement. So the fact that this is Chrome-only for now isn’t terribly bothersome to me, although it is polyfillable. We also didn’t get scroll-driven animations on the Interop 2024 list, but that doesn’t mean we won’t get Safari or Firefox support this year. Still could happen, just not really a guarantee.

Why do I think this is so cool? It’s not like we absolutely couldn’t do this before. Greensock has a ScrollTrigger plugin that is widely loved and has a pretty sweet API. (Here’s a great Collection.) I don’t think it’s terribly egregious to use JavaScript for these kind of effects, particularly if it makes them more maintainable, performant, or do things impossible any other way. But that’s the thing — when these abilities come back to native web technology like CSS, chances are the performance is going to be great and arguably more maintainable thinking long term as the people familiar with the technology will grow.

Yuriko Hirota did a great job of proving how much more performant using CSS for these types of animations are. The single-threaded nature of DOM interactive JavaScript means that if JavaScript is busy doing anything else, a JavaScript-powered animation is going to suffer from jankiness, that is, jerky and non-smooth animation. Even when JavaScript is quite busy, a CSS powered animation is fine. Those “scroll progress animations” are the classic demo of this web tech. Michelle Barker went deep on those this past year, starting with the basics and getting lovably weird as the article goes on.

Let’s end with a little tip! Bramus mentioned that if you’re setting up a scroll-driven animation that involves a target element and different scrolling element, if it’s not working, there is a good chance…

The culprit: an overflow: hidden sitting somewhere in between the target and the scroller.

It’s always the overflow, isn’t it? I find overflow is usually the culprit in figuring out why a sticky positioned item isn’t working as well. The solution, if you do actually need to deal with hiding overflow, is to use overflow: clip; instead, a relatively new ability. Kevin Powell covered a couple other scenarios where overflow: clip; saves the day, so it’s definitely worth knowing about!

I’ve been playing with Scroll-Driven Animations myself a bit. I wrote one bit about highlighting a bit of text as you scroll down a blog post, something I was inspired by from Lene Saile’s blog. As a response to a reader question, I also figured out how to zoom in images when they come into the viewport as well. Both of those ultimately use the scroll position to control the point in the animation to be at, which I think is usually nice, but I also enjoyed the idea that you can un-tether those things (say, run a 3s animation once an element becomes fully visible) by flipping a --custom-property in a keyframe which triggers a different keyframe, like Ryan Mulligan digs into.

It’s still early days for Scroll-Driven Animations and there are sure to be extremely clever ideas people will find for years. My jaw was already dropped by using them to fit text exactly to a container and to write conditional logic detecting if an element can scroll or not.

How To Deploy Machine Learning Models Using Amazon SageMaker

Machine learning models have become an integral part of modern business applications. The increasing demand for machine learning solutions has led to a significant increase in the number of tools and platforms. These tools and platforms support developers in the training and deploying of machine learning models. Amazon SageMaker has gained popularity among data scientists and developers for its ease of use, scalability, and security.

So, what is Amazon SageMaker? The Amazon SageMaker is a managed machine learning platform. It provides data scientists and developers with the essential resources and tools to produce, train, and deploy machine learning models on a massive scale.

Top 5 Trends for Data Streaming With Kafka and Flink in 2024

Data Streaming is one of the most relevant buzzwords in tech to build scalable real-time applications and innovative business models. Do you wonder about my predicted TOP 5 data streaming trends in 2024 to set data in motion? Learn what role Apache Kafka and Apache Flink play. Discover new technology trends and best practices for event-driven architectures, including data sharing, data contracts, serverless stream processing, multi-cloud architectures, and GenAI.

Some followers might notice that this became a series with past posts about the top 5 data streaming trends for 2021, the top 5 for 2022, and the top 5 for 2023. Trends change over time, but the huge value of having a scalable real-time infrastructure as the central data hub stays. Data streaming with Apache Kafka is a journey and evolution to set data in motion.

Fundamentals of Functions and Relations for Software Quality Engineering

Understanding the fundamentals of functions and relations is paramount. Grasping these core concepts lays the groundwork for effective software development and testing. We will delve into the basics of functions and relations, exploring their significance in software engineering and their implications for ensuring software quality. We will highlight basic scenarios for testing to kickstart more intricate testing activities.

Effective testing is not just about covering every line of code. It's about understanding the underlying relationships. How do we effectively test the complex relationships in our software code? Understanding functions and relations proves an invaluable asset in this endeavor.

Prompt Engineering Tutorial for AI/ML Engineers

The generative AI revolution has made significant progress in the past year, mostly in the release of Large Language Models (LLMs). It is true that generative AI is here to stay and has a great future in the world of software engineering. While models work amazingly well and produce advanced outputs, we can also influence models to produce the outputs we want. It's an art to make language models work to produce results/outputs as expected — and this is where prompt engineering comes into play. Prompts play a vital role in talking with language models. In this article, we’ll take a deeper dive into everything you need to know about prompt engineering. 

What Is Prompt Engineering?

prompt engineering

NIST AI Risk Management Framework: Developer’s Handbook

The NIST AI RMF (National Institute of Standards and Technology Artificial Intelligence Risk Management Framework) provides a structured framework for identifying, assessing, and mitigating risks associated with artificial intelligence technologies, addressing complex challenges such as algorithmic bias, data privacy, and ethical considerations, thus helping organizations ensure the security, reliability, and ethical use of AI systems.  

How Do AI Risks Differ From Traditional Software Risks?

AI risks differ from traditional software risks in several key ways:

Art of Code: Elegant Solutions in Software Development

In the vast landscape of software development, where lines of code intertwine to create the digital foundations of our modern world, there exists a subtle yet profound artistry. Beyond the mere functionality lies a realm where elegance, efficiency, and creativity converge to sculpt solutions that not only solve problems but do so with grace and ingenuity. Welcome to the realm where coding transcends mere technicality and transforms into an art form.

The Canvas of Creativity

At its core, coding is a form of expression. Just as a painter wields brushes and colors to create masterpieces on canvas, a programmer utilizes algorithms and syntax to breathe life into lines of code. However, the artistry of coding extends beyond the act of typing characters into an editor. It manifests in the way problems are approached, solutions are devised, and complexities are elegantly untangled.

Top Visual Regression Testing Tools

Imagine your online store’s checkout button disappears just before a major sale. Or, your company’s logo suddenly turns neon pink across the entire site. Even minor UI bugs can have disastrous consequences, leading to frustrated users, lost sales, and damaged brand reputation. Visual regression testing ensures that code changes don’t accidentally break the way your website or app looks. It focuses on catching layout issues, color problems, and other visual glitches that can disrupt the user experience.

With a wide range of visual regression testing tools available, choosing the right one is crucial. This blog will help you navigate the options and find the perfect fit for your testing needs.

Top Secrets Management Tools for 2024

Managing your secrets well is imperative in software development. It's not just about avoiding hardcoding secrets into your code, your CI/CD configurations, and more. It's about implementing tools and practices that make good secrets management almost second nature. 

A Quick Overview of Secrets Management

What is a secret? It's any bit of code, text, or binary data that provides access to a resource or data that should have restricted access. Almost every software development process involves secrets: credentials for your developers to access your version control system (VCS) like GitHub, credentials for a microservice to access a database, and credentials for your CI/CD system to push new artifacts to production.

Rethinking Domain Driven Design: Beyond Tactical Patterns

In recent years, Domain Driven Design (DDD) has become a buzzword in the software development community, often surrounded by discussions focused on its tactical patterns: entities, value objects, repositories, services, aggregates, and more. This mainstream portrayal of DDD has, unfortunately, done a disservice to the software community. The emphasis on these complex patterns has led many to view DDD as overly complicated and inaccessible, particularly for projects that appear to have simpler domains. The question arises: why entangle your project in the web of DDD's tactical patterns if they seem unnecessary?

The Misguided Focus and Its Consequences

The vast majority of content and discussions available online revolve around DDD's tactical aspects, obscuring its true essence and benefits. This skewed focus has made it easy to lose sight of what DDD fundamentally aims to achieve: the strategic advantage of clearly defined boundaries within your domain, encapsulated by the concept of a bounded context. Unfortunately, for many newcomers to DDD, the bounded context—the cornerstone of DDD's strategic patterns — is not what they first encounter. Instead, they are introduced to DDD through tutorials or sample applications that dive straight into its tactical patterns without establishing a foundational understanding of the domain itself.