+ Enhance your login experience with Auth0 ready to use solutions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Browse by resource type
+
+
+
+
+
Templates
+
Pre-built solutions to boost your implementation workflow.
+
+
+
+
+
+
Sample Apps
+
Fully functional end-to-end user flows.
+
+
+
+
+
+
Integrations
+
Connect Auth0 with your existing tools and services.
+
+
+
+
+
+
+
Most used resources
+
+
+
+
+
+
+
+
CUSTOM POLICIES ACCEPTANCE
+
+ Require your users to accept custom policies the next time they sign in or when they create an account
+
+
+
+ TEMPLATE
+ FORMS
+
+
+
+
+
+
+
+
+ 20'
+
+
+
+
+
+
+
+
+
+
+
+
BASIC LOGIN FOR WEBAPP
+
+ Implement a simple Universal Login to secure your website with minimal setup.
+
+
+
+ SAMPLE APP
+ UNIVERSAL LOGIN
+
+
+
+
+
+
+
+
+ 20'
+
+
+
+
+
+
+
+
+
+
+
+
TWILIO VERIFY
+
+ SMS-based multifactor authentication to strengthen login security.
+
+
+
+ INTEGRATION
+ SMS PROVIDER
+
+
+
+
+
+
+
+
+ 20'
+
+
+
+
+
+
+
+
+
+
Features
+
+
+
+
+
+
+ Ready-to-use solutions
+
+
+ Quickly implement authentication with pre-built components and templates.
+
+
+
+
+
+
+
+
+ Customizable
+
+
+ Adapt artifacts to match your brand identity and specific requirements.
+
+
+
+
+
+
+
+
+ Secure by default
+
+
+ All artifacts follow security best practices and are regularly updated.
+
+
+
+
+
+
+
+
+ Community-driven
+
+
+ Benefit from contributions by the Auth0 community and share your own.
+
+
+
+
+
+
diff --git a/main/docs/get-started/identity-fundamentals.mdx b/main/docs/get-started/identity-fundamentals.mdx
new file mode 100644
index 0000000..33f3b02
--- /dev/null
+++ b/main/docs/get-started/identity-fundamentals.mdx
@@ -0,0 +1,19 @@
+---
+title: Identity Fundamentals
+description: "Explore topics related to the fundamentals of identity and access management."
+sidebarTitle: Overview
+---
+
+Explore topics related to the fundamentals of identity and access management.
+
+
+
+ Basic concepts of IAM.
+
+
+ About the differences between authentication and authorization.
+
+
+ Definitions of various terms related to identity.
+
+
diff --git a/main/docs/get-started/identity-fundamentals/authentication-and-authorization.mdx b/main/docs/get-started/identity-fundamentals/authentication-and-authorization.mdx
new file mode 100644
index 0000000..5f03193
--- /dev/null
+++ b/main/docs/get-started/identity-fundamentals/authentication-and-authorization.mdx
@@ -0,0 +1,27 @@
+---
+title: Authentication vs. Authorization
+description: "While often used interchangeably, [authentication](https://auth0.com/docs/authenticate) and authorization represent fundamentally different functions. In this article, we compare and contrast the two to show how they protect applications in complementary ways."
+---
+
+## What are authentication and authorization?
+
+In simple terms, authentication is the process of verifying who a user is, while authorization is the process of verifying what they have access to.
+
+Comparing these processes to a real-world example, when you go through security in an airport, you show your ID to authenticate your identity. Then, when you arrive at the gate, you present your boarding pass to the flight attendant, so they can authorize you to board your flight and allow access to the plane.
+
+## Authentication vs. authorization
+
+Here's a quick overview of the differences between authentication and authorization:
+
+| **Authentication** | **Authorization** |
+| --- | --- |
+| Determines whether users are who they claim to be | Determines what users can and cannot access |
+| Challenges the user to validate credentials (for example, through passwords, answers to security questions, or facial recognition) | Verifies whether access is allowed through policies and rules |
+| Usually done before authorization | Usually done after successful authentication |
+| Generally, transmits info through an ID Token | Generally, transmits info through an Access Token |
+| Generally governed by the OpenID Connect (OIDC) protocol | Generally governed by the OAuth 2.0 framework |
+| Example: Employees in a company are required to authenticate through the network before accessing their company email | Example: After an employee successfully authenticates, the system determines what information the employees are allowed to access |
+
+In short, access to a resource is protected by both authentication and authorization. If you can't prove your identity, you won't be allowed into a resource. And even if you can prove your identity, if you are not authorized for that resource, you will still be denied access.
+
+Auth0 has products and services for authentication, like [passwordless](https://auth0.com/docs/authenticate/passwordless/passwordless-with-universal-login), [multi-factor authentication](https://auth0.com/docs/secure/multi-factor-authentication) (MFA), and [Single-Sign On (SSO)](https://auth0.com/docs/authenticate/single-sign-on) you can configure using Auth0 Dashboard or Management API. For authorization, Auth0 offers [role-based access control](https://auth0.com/docs/manage-users/access-control/rbac) (RBAC) or [fine grained authorization](https://docs.fga.dev/fga) FGA).
diff --git a/main/docs/get-started/identity-fundamentals/identity-and-access-management.mdx b/main/docs/get-started/identity-fundamentals/identity-and-access-management.mdx
new file mode 100644
index 0000000..2411b06
--- /dev/null
+++ b/main/docs/get-started/identity-fundamentals/identity-and-access-management.mdx
@@ -0,0 +1,138 @@
+---
+title: Introduction to Identity & Access Management (IAM)
+---
+
+## What is identity and access management (IAM)?
+
+Identity and access management provides control over user validation and resource access. Commonly known as IAM, this technology ensures that the right people access the right digital resources at the right time and for the right reasons.
+
+## IAM basic concepts
+
+To understand IAM, you must be familiar with some fundamental concepts:
+
+- A **digital resource** is any combination of applications and data in a computer system. Examples of digital resources include web applications, APIs, platforms, devices, or databases.
+- The core of IAM is **identity**. Someone wants access to your resource. It could be a customer, employee, member, participant, and so on. In IAM, a **user** account is a digital identity. User accounts can also represent non-humans, such as software, Internet of Things devices, or robotics.
+
+
+
+
+
+
+
+- **Authentication** is the verification of a digital identity. Someone (or something) authenticates to prove that they’re the user they claim to be.
+- **Authorization** is the process of determining what resources a user can access.
+
+## The difference between authentication and authorization
+
+It’s common to confuse authentication and authorization because they seem like a single experience to users. They are two separate processes: authentication proves a user’s identity, while authorization grants or denies the user’s access to certain resources.
+
+You can think of authentication and authorization as the security system for an office building. Users are the people who want to enter the building. Resources that people want to access are areas in the building: floors, rooms, and so on.
+
+**Authentication:** When you enter the building, you must show your photo ID badge to the security guard. The guard compares the photo on the badge to your face. If they match, the guard lets you through the door to try to access different areas of the building. The guard doesn’t tell you what rooms you can access; they only get proof that you are who you claim to be. This is authentication: confirming user identity.
+
+
+
+
+
+**Authorization:** In this scenario, imagine the elevators and doorways in the building have key sensors for access. The chip in your badge gives you access only to the first floor, which your company occupies. If you swipe your badge to enter any other floor, your access is denied. You can access your private office but not those belonging to your colleagues. You can enter the supply room but not the server room. This is authorization: granting and denying access to different resources based on identity.
+
+
+
+
+
+To learn more about authentication and authorization, read [Authentication vs. Authorization](https://auth0.com/docs/get-started/identity-fundamentals/authentication-and-authorization).
+
+## What does IAM do?
+
+Identity and access management gives you control over user validation and resource access:
+
+- How users become a part of your system
+- What user information to store
+- How users can prove their identity
+- When and how often users must prove their identity
+- The experience of proving identity
+- Who can and cannot access different resources
+
+You integrate IAM with your application, API, device, data store, or other technology. This integration can be very simple. For example, your web application might rely entirely on Facebook for authentication, and have an all-or-nothing authorization policy. Your app performs a simple check: if a user isn’t currently logged in to Facebook in the current browser, you direct them to do so. Once authenticated, all users can access everything in your app.
+
+It’s unlikely that such a simple IAM solution would meet the needs of your users, organization, industry, or compliance standards. In real life, IAM is complex. Most systems require some combination of these capabilities:
+
+- **Seamless signup and login experiences:** Smooth and professional login and signup experiences occur within your app, with your brand’s look and language.
+- **Multiple sources of user identities:** Users expect to be able to log in using a variety of social (such as Google or Linkedin), enterprise (such as Microsoft Active Directory), and other [identity providers](https://auth0.com/docs/authenticate/identity-providers).
+- **Multi-factor authentication (MFA):** In an age when passwords are often stolen, requiring additional proof of identity is the new standard. Fingerprint authentication and one-time passwords are examples of common authentication methods. To learn more, read [Multi-Factor Authentication (MFA)](https://auth0.com/docs/secure/multi-factor-authentication).
+- **Step-up authentication:** Access to advanced capabilities and sensitive information require stronger proof of identity than everyday tasks and data. Step-up authentication requires additional identity verification for selected areas and features. To learn more, read [Add Step-up Authentication](https://auth0.com/docs/secure/multi-factor-authentication/step-up-authentication).
+- **Attack protection:** Preventing bots and bad actors from breaking into your system is fundamental to cybersecurity. To learn more, read [Attack Protection](https://auth0.com/docs/secure/attack-protection).
+- **Role-based access control (RBAC):** As the number of users grows, managing the access of each individual quickly becomes impractical. With RBAC, people who have the same role have the same access to resources. To learn more, read [Role-Based Access Control](https://auth0.com/docs/manage-users/access-control/rbac).
+- **Fine-grained authorization (FGA):** When you need more options to manage user access to your resources or technologies, you can use relationship-based access control to go beyond role-based. You can give individual users access to certain resources and determine the best solution for your specific use case. To learn more, read [What Is Fine-Grained Authorization?](https://docs.fga.dev/intro/authorization-and-okta-fga#what-is-fine-grained-authorization)
+
+Facing this level of complexity, many developers rely on an IAM platform like Auth0 instead of building their own solutions.
+
+## How does IAM work?
+
+“Identity and access management” is not one clearly defined system. IAM is a discipline and a type of framework for solving the challenge of secure access to digital resources. There’s no limit to the different approaches for implementing an IAM system. This section explores elements and practices in common implementations.
+
+### Identity providers
+
+In the past, the standard for identity and access management was for a system to create and manage its own identity information for its users. Each time a user wanted to use a new web application, they filled in a form to create an account. The application stored all of their information, including login credentials, and performed its own authentication whenever a user signed in.
+
+As the internet grew and more and more applications became available, most people amassed countless user accounts, each with its own account name and password to remember. There are many applications that continue to work this way. But many others now rely on identity providers to reduce their development and maintenance burden and their users’ effort.
+
+An identity provider creates, maintains, and manages identity information, and can provide authentication services to other applications. For example, Google Accounts is an identity provider. They store account information such as your user name, full name, job title, and email address. Slate online magazine lets you log in with Google (or another identity provider) rather than go through the steps of entering and storing your information anew.
+
+
+
+
+
+Identity providers don’t share your authentication credentials with the apps that rely on them. Slate, for example, doesn’t ever see your Google password. Google only lets Slate know that you’ve proven your identity.
+
+Other identity providers include social media (such as Facebook or LinkedIn), enterprise (such as Microsoft Active Directory), and legal identity providers (such as Swedish BankID).
+
+### Authentication factors
+
+Authentication factors are methods for proving a user’s identity. They commonly fall into these basic types:
+
+| Factor type | Examples |
+| --- | --- |
+| Knowledge (something you know) | Pin, password |
+| Possession (something you have) | Mobile phone, encryption key device |
+| Inherence (something you are) | Fingerprint, facial recognition, iris scan |
+
+IAM systems require one or many authentication factors to verify identity.
+
+### Authentication and authorization standards
+
+Authentication and authorization standards are open specifications and protocols that provide guidance on how to:
+
+- Design IAM systems to manage identity
+- Move personal data securely
+- Decide who can access resources
+
+These IAM industry standards are considered the most secure, reliable, and practical to implement:
+
+#### OAuth 2.0
+
+OAuth 2.0 is a delegation protocol for accessing APIs and is the industry-standard protocol for IAM. An open authorization protocol, OAuth 2.0 lets an app access resources hosted by other web apps on behalf of a user without ever sharing the user’s credentials. It’s the standard that allows third-party developers to rely on large social platforms like Facebook, Google, and Twitter for login. To learn more, read [OAuth 2.0 Authorization Framework](https://auth0.com/docs/authenticate/protocols/oauth).
+
+#### Open ID Connect
+
+A simple identity layer that sits on top of OAuth 2.0, OpenID Connect (OIDC) makes it easy to verify a user’s identity and obtain basic profile information from the identity provider. OIDC is another open standard protocol. To learn more, read [OpenID Connect Protocol](https://auth0.com/docs/authenticate/protocols/openid-connect-protocol).
+
+#### JSON web tokens
+
+JSON web tokens (JWTs) are an open standard that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. JWTs can be verified and trusted because they’re digitally signed. They can be used to pass the identity of authenticated users between the identity provider and the service requesting the authentication. They also can be authenticated and encrypted. To learn more, read [JSON Web Tokens](https://auth0.com/docs/secure/tokens/json-web-tokens).
+
+#### Security Assertion Markup Language (SAML)
+
+Security Assertion Markup Language (SAML) is an open-standard, XML-based data format that lets businesses communicate user authentication and authorization information to partner companies and enterprise applications that their employees use. To learn more, read [SAML](https://auth0.com/docs/authenticate/protocols/saml).
+
+#### Web Services Federation (WS-Fed)
+
+Developed by Microsoft and used extensively in their applications, this standard defines the way security tokens can be transported between different entities to exchange identity and authorization information. To learn more, read [Web Services Federation Protocol](https://auth0.com/docs/authenticate/protocols/ws-fed-protocol).
+
+## Why use an IAM platform?
+
+Why do so many developers choose to build on an identity and access management platform instead of building their own solution from the ground up?
+
+User expectations, customer requirements, and compliance standards introduce significant technical challenges. With multiple user sources, authentication factors, and open industry standards, the amount of knowledge and work required to build a typical IAM system can be enormous. A strong IAM platform has built-in support for all identity providers and authentication factors, offers APIs for easy integration with your software, and relies on the most secure industry standards for authentication and authorization.
+
+For those who haven’t yet decided whether to build or buy an IAM solution, [Build vs. Buy: Guide to Evaluating Identity Management](https://auth0.com/resources/whitepapers/build-vs-buy-evaluating-identity-management) is a useful resource.
diff --git a/main/docs/get-started/identity-fundamentals/introduction-to-auth0.mdx b/main/docs/get-started/identity-fundamentals/introduction-to-auth0.mdx
new file mode 100644
index 0000000..5c82591
--- /dev/null
+++ b/main/docs/get-started/identity-fundamentals/introduction-to-auth0.mdx
@@ -0,0 +1,95 @@
+---
+title: Introduction to Auth0
+description: "Auth0 is an identity access management (IAM) provider. But what does this mean? If you've read [Introduction to Identity and Access Management (IAM)](https://auth0.com/docs/get-started/identity-fundamentals/identity-and-access-management), you know an IAM solution is a gatekeeper to the resources you provide to customers as web applications, APIs, etc."
+---
+
+The gatekeeper initiates authorization as outlined in OAuth 2.0. The addition of the OpenID Connect layer adds authentication to secure your users’ digital identities and your product.
+
+The Auth0 identity platform supports different application types and frameworks. Whether your application is a regular web app, a mobile app, or a machine-to-machine app, Auth0 provides configurations for the most secure authorization grant, or workflow, for each. You can read more about authorization grants and choose the one for your application in our article [Which OAuth 2.0 Flow Should I Use?](https://auth0.com/docs/get-started/authentication-and-authorization-flow/which-oauth-2-0-flow-should-i-use)
+
+Aside from supporting secure protocols, the Auth0 identity platform allows you to customize login services to fit your business, your technology, and your customer base. Using the Auth0 Dashboard and Management API, you can create your own Auth0 instance to authenticate and authorize your customers. You can configure login behaviors, connect your user data store, manage those users, choose an authorization grant, and establish authentication factors for a seamless, scalable product with an impactful user experience.
+
+## Get Started
+
+### Identity fundamentals
+
+You don’t have to be an expert on IAM to integrate Auth0 into your application or API, but you can choose the right configuration for your use case if you know some key concepts. To learn more, read our [Introduction to Identity and Access Management (IAM)](https://auth0.com/docs/get-started/identity-fundamentals/identity-and-access-management) article. If you still have questions about planning your implementation, review our [Architecture Scenarios](https://auth0.com/docs/get-started/architecture-scenarios) section for walk-throughs of real world scenarios.
+
+### Integrate with Auth0
+
+To start integrating with Auth0, you can either start with our interactive [Quickstart guides](https://auth0.com/docs/quickstarts) for initial set-up and quick configurations, or you can register your application manually in the Auth0 Dashboard. In Dashboard, you can create a tenant, or your Auth0 instance, from the ground up. If you prefer to use SDKs, Auth0 offers multiple options for each application type. To see the full offering, navigate to [Auth0 Libraries](https://auth0.com/docs/libraries).
+
+You can begin your configuration with general details in the Dashboard tenant settings, such as the name displayed to your users, your company logo, your callback URLs, or where Auth0 redirects your users after authentication. You can review our recommendations by reading [Tenant Settings](https://auth0.com/docs/get-started/tenant-settings).
+
+Once you’ve set up the tenant, then you can create and configure your application or API. You can use the instructions in our articles [Create Applications](https://auth0.com/docs/get-started/auth0-overview/create-applications) or [Register APIs](https://auth0.com/docs/get-started/auth0-overview/set-up-apis) as a starting point.
+
+### Authenticate
+
+The vehicle of authentication is the login form, or the intermediary to allow your users access to your application. Users provide pre-determined credentials, such as username or password, in the login form to verify their digital identities.
+
+Auth0’s Universal Login is a login form you can customize to accommodate your brand and configure to provide secure access. Some benefits of using Universal Login are:
+
+- Passwordless login with biometrics
+- Choice of multi-factor authentication methods from email, voice, or Duo
+- Single Sign-on (SSO) capabilities
+- Localization support
+
+To learn more, read [Universal Login](https://auth0.com/docs/authenticate/login/auth0-universal-login). To find out more about available features, read [Universal Login vs. Classic Login](https://auth0.com/docs/authenticate/login/auth0-universal-login/universal-login-vs-classic-login).
+
+Once you have a login form, you can connect your user store to Auth0. You can connect an existing database, or use a social, legal, or enterprise identity provider such as X or Azure Active Directory. New users can sign up with the connection you have configured.
+
+Once you have a login form and user store connection, you can set protocols that work behind the scenes when users log in to your application. The most common protocols are associated with the OAuth 2.0 and OpenID Connect (OIDC) specs you may have reviewed in our [Identity Fundamentals](https://auth0.com/docs/get-started/identity-fundamentals) article.
+
+Another protocol to securely transmit information during log in comes in the form of tokens. Tokens from the Authorization Server, Auth0’s Authentication API, transmit information between entities. When a user logs in and access is approved, the Authentication API sends an access token, an ID token, or both depending on the authentication grant you are using to create a session. Access tokens contain information about what scopes, or permissions, the requestor has in your application while ID tokens have requestor information, such as user metadata to better the user experience.
+
+Tokens from the Authentication API are JSON Web Tokens (JWTs) structured with:
+
+- a header that includes the signature
+- the payload that contains statements and attributes about the requestor
+- the signature that verifies the token is valid
+
+To learn more about tokens, read [Access Tokens](https://auth0.com/docs/secure/tokens/access-tokens), [ID Tokens](https://auth0.com/docs/secure/tokens/id-tokens), or [JSON Web Tokens](https://auth0.com/docs/secure/tokens/json-web-tokens).
+
+Other protocols, like SAML (Security Assertion Markup Language) and WS-Fed (Web Service Federation) are used with more specific systems. SAML works with some identity providers while WS-Fed is used with Microsoft products. You can learn more by exploring the [Protocols](https://auth0.com/docs/authenticate/protocols) section of our documentation.
+
+### Manage users
+
+Managing user profiles and access can be time-consuming. If you choose to manage users with your Auth0 instance, you can remove some of the pain points.
+
+You can easily automate CRUD operations and query user profiles using Auth0 Dashboard or the Management API. You can categorize your users into categories with Auth0 Organizations to arrange your customer-base to fit your management style. To learn more, navigate to the [Manage Users](https://auth0.com/docs/manage-users) section of our documentation.
+
+Your business model may include levels of access for your users. You may want a subsection of users to have read-only permissions and another subsection with the ability to edit. Auth0’s Authorization Core allows you to implement role-based access control. You can create roles, assign roles to users, and define permissions.
+
+If you want to manage access based on browser behaviors, you can limit the lifetime of a session. A session, or the interaction between the requesting entity and your application or resource, has a lifetime limit. A session can end when the user closes the browser or navigates away from your webpage. You can extend sessions with refresh tokens that renew access tokens. Configure refresh tokens in the Dashboard. To learn more, read [Session Lifetime Limits](https://auth0.com/docs/manage-users/sessions/session-lifetime-limits) and [Get Refresh Tokens](https://auth0.com/docs/secure/tokens/refresh-tokens/get-refresh-tokens).
+
+Cookies, or strings of data, tie into the session and represent an authenticated user. Cookies allow your authenticated users to maintain a session and move between web pages without being forced to re-authenticate. Once the browser closes, the cookie is cleared by the browser.
+
+### Customize
+
+Your brand is important, and Auth0 offers customization to make the login experience more personalized to your business. You can add your logo and color scheme to your login form as well as use a custom domain to give you ownership of the login URL. To learn more about configuration, read [Custom Domains](https://auth0.com/docs/customize/custom-domains).
+
+Universal Login offers numerous features to configure authentication to fit your needs, like Multi-factor authentication, passwordless authentication with device biometrics, and localization. On a more granular level, you can adjust the text of prompts your user receives when an action needs to be completed. You can configure prompts for your users to signup, to enroll a device for authentication, or to send a code to an email/SMS for users to enter for verification. You can also customize email communications to welcome new users, verify enrollment, or reset passwords with email templates. To learn more, read [Customize Universal Login Text Elements](https://auth0.com/docs/customize/login-pages/universal-login/customize-text-elements) and [Customize Email Templates](https://auth0.com/docs/customize/email/email-templates).
+
+You can also configure certain events with Auth0 Actions. Actions are secure functions that execute during runtime. Actions trigger at different points in the pipeline and have a variety of uses. You could add metadata before the user signs up or redirect users to an external site. To learn more about what Actions can do for you, read [Understand How Auth0 Actions Work](https://auth0.com/docs/customize/actions/actions-overview).
+
+### Secure
+
+Malicious attacks can happen anytime. Auth0 offers several attack protection options, such as Bot Detection in combination with Google reCAPTCHA Enterprise to prevent cyber attacks. To learn more about Bot Detection configuration, read [Bot Detection](https://auth0.com/docs/secure/attack-protection/bot-detection).
+
+Even if you are using your own login page, Auth0 offers other security options you can enable in the Auth0 Dashboard:
+
+- Breached Password Detection
+- Brute-Force Protection
+- Suspicious IP Throttling
+
+Breached password detection is a security measure against malicious agents with stolen credentials. Brute-force protection safeguards a targeted user account by limiting the amount of login attempts that automatically block the malicious IP and send a notification to the flagged user account. Suspicious IP throttling works where brute force protection leaves off to block traffic from any IP address that attempts rapid signups or logins.
+
+Other security measures depend on how you want your users to authenticate. Enabling multi-factor authentication (MFA) in Universal Login requires users to provide two or more authentication factors. With Auth0, you can customize MFA to trigger under certain circumstances, such as a user logging in from an unknown device or from a questionable IP address. To learn more about configuring MFA, read [Adaptive MFA](https://auth0.com/docs/secure/multi-factor-authentication/adaptive-mfa).
+
+### Deploy and monitor
+
+When you’ve finished testing your Auth0 instance and are ready to deploy, you can use our public or private cloud offerings. To learn more about available offerings, read [Deployment Options](https://auth0.com/docs/deploy-monitor/deployment-options). If you need a multi-tenant capable environment, you can read more about [Private Cloud on AWS](https://auth0.com/docs/deploy-monitor/deploy-private-cloud/private-cloud-on-aws).
+
+To keep your deployment on track, we provide guidance in the form of pre-deployment recommendations, a deployment checklist, best practices, common fixes, and other tips to help make deployment as seamless as possible.
+
+Once you’ve established your production environment ready for users, you can be on the lookout with error tracking and alerts. The System Center Operations Manager allows you to monitor, while event logs can be exported to an analytical tool and allow you insight on trends, user behavior, or issues.
diff --git a/main/docs/quickstart/native/android/interactive.mdx b/main/docs/quickstart/native/android/interactive.mdx
new file mode 100644
index 0000000..d9b0381
--- /dev/null
+++ b/main/docs/quickstart/native/android/interactive.mdx
@@ -0,0 +1,295 @@
+---
+title: Add Login to Your Android Application
+---
+
+
+
+
+To use Auth0 services, you need to have an application set up in the Auth0 Dashboard. The Auth0 application is where you will configure authentication in your project.
+
+### Configure an application
+
+Use the interactive selector to create a new Auth0 application or select an existing application that represents the project you want to integrate with. Every application in Auth0 is assigned an alphanumeric, unique client ID that your application code will use to call Auth0 APIs through the SDK.
+
+Any settings you configure using this quickstart will automatically update for your Application in the [Dashboard](https://manage.auth0.com/#/), which is where you can manage your Applications in the future.
+
+If you would rather explore a complete configuration, you can view a sample application instead.
+
+### Configure Callback URLs
+
+A callback URL is the application URL that Auth0 will direct your users to once they have authenticated. If you do not set this value, Auth0 will not return users to your application after they log in.
+
+
+ If you are following along with our sample project, set this to demo://
+ {yourDomain}/android/YOUR_APP_PACKAGE_NAME/callback.
+
+
+### Configure logout URLs
+
+A logout URL is the application URL Auth0 will redirect your users to once they log out. If you do not set this value, users will not be able to log out from your application and will receive an error.
+
+
+ If you are following along with our sample project, set this to demo://
+ {yourDomain}/android/YOUR_APP_PACKAGE_NAME/callback
+
+
+
+
+
+Add the Auth0 [Android SDK](https://github.com/auth0/Auth0.Android) into your project. The library will make requests to the Auth0's Authentication and Management APIs.
+
+In your app's build.gradle dependencies section, add the following:
+``` java
+implementation 'com.auth0.android:auth0:2.+'
+```
+
+Ensure you target Java 8+ byte code for Android and Kotlin plugins respectively.
+
+
+
+
+
+The SDK requires manifest placeholders. Auth0 uses placeholders internally to define an `intent-filter`, which captures the authentication callback URL. You must set Auth0 tenant domain and the callback URL scheme.
+
+You do not need to declare a specific `intent-filter` for your activity, because you have defined the manifest placeholders with your Auth0 Domain and Scheme values and the library will handle the redirection for you.
+
+
+ We've used a value of `**bold**demo**bold**` for `**bold**auth0Scheme**bold**`
+ here, so that a custom URL scheme can be used for the URL that Auth0 redirects
+ to after login. Whenever possible, Auth0 recommends using [Android App
+ Links](https://auth0.com/docs/applications/enable-android-app-links) with
+ `**bold**https**bold**` as a secure way to link directly to content within
+ your app. Custom URL schemes can be subject to [client impersonation
+ attacks](https://datatracker.ietf.org/doc/html/rfc8252#section-8.6). You can
+ read more about setting this value in the [Auth0.Android SDK
+ readme](https://github.com/auth0/Auth0.Android#a-note-about-app-deep-linking).
+
+
+
+
+
+
+For the SDK to function properly, you must set the following properties in `strings.xml`:
+
+- `com_auth0_domain`: The domain of your Auth0 tenant. Generally, you can find this in the Auth0 Dashboard under your Application's Settings in the Domain field. If you are using a [custom domain](https://auth0.com/docs/custom-domains), you should set this to the value of your custom domain instead.
+
+- `com_auth0_client_id`: The ID of the Auth0 Application you set up earlier in this quickstart. You can find this in the Auth0 Dashboard under your Application's Settings in the Client ID field.
+
+Ensure that the `AndroidManifest.xml` file specifies the `android.permissions.INTERNET` permission:
+
+```
+
+```
+
+Run **bold**Sync Project with Gradle Files**bold** inside Android Studio or execute `./gradlew clean assembleDebug` from the command line.
+
+
+ For more information about using Gradle, check the [Gradle official
+ documentation](https://gradle.org/getting-started-android-build/).
+
+
+
+
+
+
+[Universal Login](https://auth0.com/docs/hosted-pages/login) is the easiest way to set up authentication in your application. We recommend using it for the best experience, best security and the fullest array of features.
+
+In the `onCreate` method, create a new instance of the `Auth0` class to hold user credentials.
+
+Create a `loginWithBrowser` method and use the `WebAuthProvider` class to authenticate with any connection you enabled on your application in the [Auth0 dashboard](https://manage.auth0.com/?_gl=1*1yaym9q*_gcl_au*MTQ2MzA2MzY4Ny4xNzQ2NTExNjgy*_ga*MTg2NDk1NzgyMy4xNzQ2NTExNjk3*_ga_QKMSDV5369*czE3NDY1MjA0NjEkbzIkZzEkdDE3NDY1MjI0NzYkajYwJGwwJGgw#/). Here, you can pass the scheme value that was used in the `auth0Scheme` manifest placeholder as part of the initial configuration.
+
+After you call the `WebAuthProvider#start` function, the browser launches and shows the login page. Once the user authenticates, the callback URL is called. The callback URL contains the final result of the authentication process.
+
+
+##### Checkpoint
+Add a button to your application that calls `loginWithBrowser`. When you click it, verify that your Android application redirects you to the [Auth0 Universal Login](https://auth0.com/universal-login) page and that you can now log in or sign up using a username and password or a social provider.
+
+Once that's complete, verify that Auth0 redirects back to your app.
+
+
+
+- `com_auth0_domain`: The domain of your Auth0 tenant. Generally, you can find this in the Auth0 Dashboard under your Application's Settings in the Domain field. If you are using a [custom domain](https://auth0.com/docs/custom-domains), you should set this to the value of your custom domain instead.
+- `com_auth0_client_id`: The ID of the Auth0 Application you set up earlier in this quickstart. You can find this in the Auth0 Dashboard under your Application's Settings in the Client ID field.
+
+Ensure that the `AndroidManifest.xml` file specifies the `android.permissions.INTERNET` permission:
+
+```
+
+```
+
+Run **bold**Sync Project with Gradle Files**bold** inside Android Studio or execute `./gradlew clean assembleDebug` from the command line.
+
+
+For more information about using Gradle, check the [Gradle official documentation](https://gradle.org/getting-started-android-build/)
+
+
+
+
+
+Use `WebAuthProvider` to remove the cookie set by the browser at authentication time, so that the users are forced to re-enter their credentials the next time they try to authenticate.
+
+Add a `logout` method to your app to remove the user's session and log them out of the app. Here, you can pass the scheme value that was used in the `auth0Scheme` manifest placeholder as part of the initial configuration.
+
+Use the `WebAuthProvider` class to implement logout. This call opens the browser and navigates the user to the logout endpoint. If the user cancels the logout, consider redirected the user to their previous URL.
+
+
+##### Checkpoint
+
+Add a button to your app that calls `logout` and logs the user out of your application. When you click it, verify that your Android app redirects you logout page and back again, and that you are no longer logged in to your application.
+
+
+
+
+
+
+
+Use the `AuthenticationAPIClient` class to [retrieve the user's profile from Auth0](https://auth0.com/docs/users/user-profiles#user-profile-management-api-access). This requires:
+
+- The access token returned from the login phase
+- The `WebAuthProvider.login` must contain the `profile` scope
+
+You must specify the `email` scope if you need to retrieve the user's email address.
+
+
+ This quickstart sets the `openid profile email` scopes by default during the
+ login step above.
+
+
+The following demonstrates a function that can be used to retrieve the user's profile and show it on the screen:
+
+
+
+##### Checkpoint
+
+Call the `showUserProfile` function after login. Verify the `onSuccess` callback returns the user's profile information.
+
+
+
+
+
+
+## Next Steps"
+
+Excellent work! If you made it this far, you should now have login, logout, and user profile information running in your application.
+
+This concludes our quickstart tutorial, but there is so much more to explore. To learn more about what you can do with Auth0, check out:
+
+
+
+ Learn how to configure and manage your Auth0 tenant and applications
+
+
+ Explore the SDK used in this tutorial more fully
+
+
+ Discover integrations you can enable to extend Auth0’s functionality
+
+
+
+
+```java build.gradle
+apply plugin: 'com.android.application'
+
+android {
+ defaultConfig {
+ applicationId "com.auth0.samples"
+ minSdkVersion 21
+ targetSdkVersion 30
+ // ...
+
+ // ---> Add the next line
+ manifestPlaceholders = [auth0Domain: "@string/com_auth0_domain", auth0Scheme: "demo"]
+ // <---
+ }
+
+}
+
+dependencies {
+ // Add the Auth0 Android SDK
+ implementation 'com.auth0.android:auth0:2.+'
+}
+
+````
+```xml strings.xml
+
+ "{yourDomain}"
+ "{yourClientId}"
+
+````
+
+```java MainActivity.kt
+import com.auth0.android.Auth0
+import com.auth0.android.provider.WebAuthProvider
+
+class MainActivity: AppCompatActivity() {
+
+ private lateinit
+ var account: Auth0
+
+ override fun onCreate(savedInstanceState: Bundle ? ) {
+ super.onCreate(savedInstanceState)
+
+ // Set up the account object with the Auth0 application details
+ account = Auth0(
+ getString(R.string.com_auth0_client_id),
+ getString(R.string.com_auth0_domain),
+ )
+ }
+
+ private fun loginWithBrowser() {
+ // Setup the WebAuthProvider, using the custom scheme and scope.
+
+ WebAuthProvider.login(account)
+ .withScheme("demo")
+ .withScope("openid profile email")
+ // Launch the authentication passing the callback where the results will be received
+ .start(this, object: Callback < Credentials, AuthenticationException > {
+ // Called when there is an authentication failure
+ override fun onFailure(exception: AuthenticationException) {
+ // Something went wrong!
+ }
+
+ // Called when authentication completed successfully
+ override fun onSuccess(credentials: Credentials) {
+ // Get the access token from the credentials object.
+ // This can be used to call APIs
+ val accessToken = credentials.accessToken
+ }
+ })
+ }
+
+ private fun logout() {
+ WebAuthProvider.logout(account)
+ .withScheme("demo")
+ .start(this, object: Callback < Void ? , AuthenticationException > {
+ override fun onSuccess(payload: Void ? ) {
+ // The user has been logged out!
+ }
+
+ override fun onFailure(error: AuthenticationException) {
+ // Something went wrong!
+ }
+ })
+ }
+
+ private fun showUserProfile(accessToken: String) {
+ var client = AuthenticationAPIClient(account)
+
+ // With the access token, call `userInfo` and get the profile from Auth0.
+ client.userInfo(accessToken)
+ .start(object: Callback < UserProfile, AuthenticationException > {
+ override fun onFailure(exception: AuthenticationException) {
+ // Something went wrong!
+ }
+
+ override fun onSuccess(profile: UserProfile) {
+ // We have the user's profile!
+ val email = profile.email
+ val name = profile.name
+ }
+ })
+ }
+}
+```
+
+
diff --git a/main/docs/quickstart/spa/angular/interactive.mdx b/main/docs/quickstart/spa/angular/interactive.mdx
new file mode 100644
index 0000000..4a5c91c
--- /dev/null
+++ b/main/docs/quickstart/spa/angular/interactive.mdx
@@ -0,0 +1,251 @@
+---
+title: Add Login to Your Angular Application
+---
+
+
+ Visit the [Angular Authentication By Example](https://developer.auth0.com/resources/guides/spa/angular/basic-authentication) guide for a deep dive into implementing user authentication in Angular. This guide provides additional details on how to create a sign-up button, add route guards, and call a protected API from Angular.
+
+
+Auth0 allows you to add authentication to almost any application type quickly. This guide demonstrates how to integrate Auth0, add authentication, and display user profile information in any Angular application using the [Auth0 Angular SDK](https://github.com/auth0/auth0-angular).
+
+To use this quickstart, you’ll need to:
+
+- Sign up for a free Auth0 account or log in to Auth0.
+- Have a working Angular project that you want to integrate with. Alternatively, you can view or download a sample application after logging in.
+
+
+
+
+To use Auth0 services, you’ll need to have an application set up in the Auth0 Dashboard. The Auth0 application is where you will configure how you want authentication to work for the project you are developing.
+
+### Configure an application
+
+Use the interactive selector to create a new Auth0 application or select an existing application that represents the project you want to integrate with. Every application in Auth0 is assigned an alphanumeric, unique client ID that your application code will use to call Auth0 APIs through the SDK.
+
+Any settings you configure using this quickstart will automatically update for your Application in the [Dashboard](https://manage.auth0.com/#/), which is where you can manage your Applications in the future.
+
+If you would rather explore a complete configuration, you can view a sample application instead.
+
+### Configure Callback URLs
+
+A callback URL is a URL in your application that you would like Auth0 to redirect users to after they have authenticated. If not set, users will not be returned to your application after they log in.
+
+
+If you are following along with our sample project, set this to `http://localhost:4200`.
+
+
+### Configure Logout URLs
+
+A logout URL is a URL in your application that you would like Auth0 to redirect users to after they have logged out. If not set, users will not be able to log out from your application and will receive an error.
+
+
+If you are following along with our sample project, set this to `http://localhost:4200`.
+
+
+### Configure Allowed Web Origins
+
+An Allowed Web Origin is a URL that you want to be allowed to access to your authentication flow. This must contain the URL of your project. If not properly set, your project will be unable to silently refresh authentication tokens, so your users will be logged out the next time they visit your application or refresh a page.
+
+
+If you are following along with our sample project, set this to `http://localhost:4200`.
+
+
+
+
+
+Auth0 provides an [Angular SDK](https://github.com/auth0/auth0-angular) to simplify the process of implementing Auth0 authentication and authorization in Angular applications.
+
+Install the Auth0 Angular SDK by running the following command in your terminal:
+
+`npm install @auth0/auth0-angular`
+
+The SDK exposes several types that help integrate Auth0 in an Angular application idiomatically, including a module and an authentication service.
+
+
+
+
+The SDK exports `provideAuth0`, which is a provide function that contains all the services required for the SDK to function. To register this with your application:
+
+1. Open the `main.ts `file.
+2. Import the `provideAuth0 `function from the `@auth0/auth0-angular `package.
+3. Add `provideAuth0 `to the application by adding it to the `providers `inside `bootstrapApplication`.
+4. Inject `AuthService `into `AppComponent`.
+
+The `provideAuth0` function takes the properties `domain` and `clientId`; the values of these properties correspond to the **Domain** and **Client ID** values that you can find under **Settings** in the Single-Page Application (SPA) that you registered with Auth0. On top of that, we configure `authorizationParams.redirect_uri`, which allows Auth0 to redirect the user back to the specific URL after successfully authenticating.
+
+
+If you are using a [custom domain with Auth0](https://auth0.com/docs/custom-domains), the value of the domain property is the value of your custom domain instead of the value reflected in the "Settings" tab.
+
+
+
+
+
+Now that you have configured your Auth0 Application and the Auth0 Angular SDK, you need to set up login for your project. To do this, you will use the SDK’s `loginWithRedirect()` method from the `AuthService` class to redirect users to the Auth0 Universal Login page where Auth0 can authenticate them. After a user successfully authenticates, they will be redirected to your application and the callback URL you set up earlier in this quickstart.
+
+Create a login button in your application that calls `loginWithRedirect()` when selected.
+
+
+##### Checkpoint
+
+You should now be able to log in to your application.
+
+Run your application, and select the login button. Verify that:
+
+- you can log in or sign up using a username and password.
+- your application redirects you to the [Auth0 Universal Login](https://auth0.com/universal-login) page.
+- you are redirected to Auth0 for authentication.
+- Auth0 successfully redirects back to your application after authentication.
+- you do not receive any errors in the console related to Auth0.
+
+
+
+
+
+
+
+Users who log in to your project will also need [a way to log out](https://auth0.com/docs/logout/guides/logout-auth0). The SDK provides a `logout()` method on the `AuthService` class that you can use to log a user out of your app. When users log out, they will be redirected to your [Auth0 logout endpoint](https://auth0.com/docs/api/authentication?javascript#logout), which will then immediately redirect them to your application and the logout URL you set up earlier in this quickstart.
+
+Create a logout button in your application that calls `logout()` when selected.
+
+
+The SDK exposes an `isAuthenticated$` observable on the `AuthService` class that allows you to check whether a user is authenticated or not. You can render the login and logout buttons conditionally based on the value of the `isAuthenticated$` observable. Alternatively, you can use a single button to combine both login and logout buttons as well as their conditional rendering.
+
+
+
+##### Checkpoint
+
+You should now be able to log out of your application.
+
+Run your application, log in, and select the logout button. Verify that:
+
+- you are redirected to Auth0's logout endpoint.
+- Auth0 successfully redirects back to your application and the correct logout URL.
+- you are no longer logged in to your application.
+- you do not receive any errors in the console related to Auth0.
+
+
+
+
+
+
+Now that your users can log in and log out, you will likely want to be able to retrieve the [profile information](https://auth0.com/docs/users/concepts/overview-user-profile) associated with authenticated users. For example, you may want to be able to personalize the user interface by displaying a logged-in user’s name or profile picture.
+
+The Auth0 Angular SDK provides user information through the `user$` observable exposed by the `AuthService` class. Because the `user$` observable contains sensitive information and artifacts related to the user's identity, its availability depends on the user's authentication status. Fortunately, the `user$` observable is configured to only emit values once the `isAuthenticated$` observable is true, so there is no need to manually check the authentication state before accessing the user profile data.
+
+The SDK also exposes an `isAuthenticated$` observable on the `AuthService` class that allows you to check whether a user is authenticated or not, which you can use to determine whether to show or hide UI elements, for example.
+
+Review the `UserProfileComponent` code in the interactive panel to see examples of how to use these functions.
+
+
+##### Checkpoint
+
+You should now be able to view user profile information.
+
+Run your application, and verify that:
+
+- user information displays correctly after you have logged in.
+- user information does not display after you have logged out.
+
+
+
+
+## Next Steps"
+
+Excellent work! If you made it this far, you should now have login, logout, and user profile information running in your application.
+
+This concludes our quickstart tutorial, but there is so much more to explore. To learn more about what you can do with Auth0, check out:
+
+
+
+ Learn how to configure and manage your Auth0 tenant and applications
+
+
+ Explore the SDK used in this tutorial more fully
+
+
+ Discover integrations you can enable to extend Auth0’s functionality
+
+
+
+
+```ts main.ts
+import { bootstrapApplication } from '@angular/platform-browser';
+import { provideAuth0 } from '@auth0/auth0-angular';
+import { AppComponent } from './app.component';
+
+bootstrapApplication(AppComponent, {
+ providers: [
+ provideAuth0({
+ domain: '{yourDomain}',
+ clientId: '{yourClientId}',
+ authorizationParams: {
+ redirect_uri: window.location.origin
+ }
+ }),
+ ]
+});
+```
+```ts login-button.ts
+import { Component } from '@angular/core';
+import { AuthService } from '@auth0/auth0-angular';
+
+@Component({
+ selector: 'app-login-button',
+ template: '',
+ standalone: true
+})
+export class LoginButtonComponent {
+ constructor(private auth: AuthService) {}
+
+ login() {
+ this.auth.loginWithRedirect();
+ }
+}
+```
+```ts logout-button.ts
+import { Component, Inject } from '@angular/core';
+import { AuthService } from '@auth0/auth0-angular';
+import { DOCUMENT } from '@angular/common';
+
+@Component({
+ selector: 'app-logout-button',
+ template: `
+
+ `,
+ standalone: true
+})
+export class LogoutButtonComponent {
+ constructor(
+ @Inject(DOCUMENT) public document: Document,
+ private auth: AuthService
+ ) {}
+
+ logout() {
+ this.auth.logout({
+ logoutParams: {
+ returnTo: this.document.location.origin
+ }
+ });
+ }
+}
+```
+```ts user-profile.ts
+import { Component } from '@angular/core';
+import { AuthService } from '@auth0/auth0-angular';
+
+@Component({
+ selector: 'app-user-profile',
+ template: `
+
+
{{ user.name }}
+
{{ user.email }}
+
`,
+ standalone: true
+})
+export class UserProfileComponent {
+ constructor(public auth: AuthService) {}
+}
+```
+
diff --git a/main/docs/quickstarts.mdx b/main/docs/quickstarts.mdx
new file mode 100644
index 0000000..a9c9211
--- /dev/null
+++ b/main/docs/quickstarts.mdx
@@ -0,0 +1,66 @@
+---
+title: Quickstarts
+description: "Step-by-step guides to quickly integrate Auth0 into your application"
+---
+
+## Regular Web App
+
+Traditional web app that runs on the server
+
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+
+## Single Page App
+
+Single page app that runs in the browser
+
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+ } horizontal />
+
+
+## Native/Mobile App
+
+Mobile or Desktop app that runs natively on a device
+
+
+ } horizontal />
+
diff --git a/main/docs/troubleshoot/debugging-best-practices.mdx b/main/docs/troubleshoot/debugging-best-practices.mdx
new file mode 100644
index 0000000..1820db1
--- /dev/null
+++ b/main/docs/troubleshoot/debugging-best-practices.mdx
@@ -0,0 +1,70 @@
+---
+title: Debugging Best Practices
+---
+
+## Rule debugging
+
+
+The `consoleOut` property is a log output generated by customers within the Auth0 platform through Actions, Rules, Hooks, Extensions, and DB Scripts.
+
+Auth0 recommends using the `consoleOut` property for testing and debugging purposes only. You should not log personal data or other sensitive data into the web console or the log output will include such data.
+
+Out of the box, typically, you [debug a rule during runtime](https://auth0.com/docs/customize/rules/debug-rules) via console logging by using the `console.log` facility. To learn more, read [console.log() in MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/Console/log). There is no interactive debugging of a rule available within the Auth0 platform (though one could employ the testing automation technique described below in conjunction with some external interactive source-debugging facility; to learn more, read [Rules Testing Best Practices](https://auth0.com/docs/rules-best-practices/rules-testing-best-practices)).
+
+## Add line comments
+
+Adding sufficient line (i.e., `//`) or block (i.e., `/* */`) comments to a rule, particularly around non-obvious functionality, is invaluable to both code debugging and also code understanding, particularly as there are many occasions where the initial implementer of a rule may not be the same person responsible for maintaining it going forward.
+
+## Real-time Webtask logging
+
+By default, console log output is unavailable for display during normal execution. However, you can [use the Real-time Webtask Logs extension](https://auth0.com/docs/customize/extensions/real-time-webtask-logs) to display all console logs in real-time for all implemented extensibility in an Auth0 tenant, including rules. The real-time console log display provided by the extension includes all `console.log` output, `console.error` output, and `console.exception` output. To learn more, read [console.error() in MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/Console/error).
+
+## Enable and disable debug logging
+
+In a production environment, debug logging isn’t something that’s desirable all the time; given the performance considerations associated with rules, it would not be prudent to have it continuously enabled. To learn more, read [Performance Best Practices](https://auth0.com/docs/troubleshoot/performance-best-practices).
+
+However, in a development or testing environment, the option to enable it on a more continuous basis is much more desirable. Further, excessive debug logging could create substantial “noise”, which could make identifying problems that much harder.
+
+Modifying a rule to enable or disable debug logging dependent on the environment would be messy and prone to error. To learn more, read [Rules Environment Best Practices](https://auth0.com/docs/rules-best-practices/rules-environment-best-practices). Instead, the environment configuration object can be leveraged to implement conditional processing in a fashion similar to the following:
+
+```js
+function NPClaims(user, context, callback) {
+ /*
+ * This rule (https://auth0.com/docs/rules) is used to derive
+ * effective claims associated with the Normalized User Profile:
+ * https://auth0.com/docs/user-profile/normalized/auth0
+ */
+ var LOG_TAG = '[NORMALIZED_PROFILE_CLAIMS]: ';
+ var DEBUG = configuration.DEBUG ? console.log : function () {};
+ DEBUG(LOG_TAG, "identities=", user.identities);
+ user.user_metadata = user.user_metadata || {};
+
+ //
+ user.family_name =
+ user.family_name ||
+ user.identities.filter(function(identity) {
+ /* Filter out identities which do not have anything synonymous with
+ * Family Name
+ */
+ return(
+ identity.profileData &&
+ identity.profileData.family_name);
+ }).map(function(identity) {
+ return identity.profileData.family_name;
+ })[0];
+ DEBUG(LOG_TAG, "Computed user.family_name as '", user.family_name, "'");
+ .
+ .
+
+ //
+ return callback(null, user, context);
+ }
+```
+
+In the example above, a `DEBUG` environment configuration variable has been created, which can be set to `true` or `false` depending on the execution environment (e.g., production, testing, development). The setting of this variable is used to determine when debug logging is performed. Further, a `DEBUGLEVEL` environment `configuration` variable, say, could be created, which could be used to control the debugging log level (e.g., verbose, medium, sparse).
+
+The above example also demonstrates declaration of a named function. For convenience, providing a function name—using some compact and unique naming convention—can assist with diagnostic analysis. Anonymous functions make it hard in debugging situations to interpret the call-stack generated as a result of any exceptional error condition and providing a unique function name addresses this. To learn more, read [Error Handling Best Practices](https://auth0.com/docs/troubleshoot/error-handling-best-practices).
+
+### Static analysis
+
+The rule editor in the Auth0 Dashboard provides some rudimentary syntax checking and analysis of rule semantics. However, no provision is made for more complex static code analysis, such as overwrite detection, loop detection, or vulnerability detection. To address this, consider leveraging the use of third-party tooling—such as [JSHint](https://jshint.com/about/), [SonarJS](https://www.sonarsource.com/products/codeanalyzers/sonarjs.html), or [Coverity](https://www.synopsys.com/software-integrity/security-testing/static-analysis-sast.html)—in conjunction with rule testing as part of your deployment automation process. To learn more, read [Deployment Best Practices](https://auth0.com/docs/deploy-monitor/deployment-best-practices).
diff --git a/main/docs/troubleshoot/error-handling-best-practices.mdx b/main/docs/troubleshoot/error-handling-best-practices.mdx
new file mode 100644
index 0000000..a237078
--- /dev/null
+++ b/main/docs/troubleshoot/error-handling-best-practices.mdx
@@ -0,0 +1,57 @@
+---
+title: Error Handling Best Practices
+description: "Error conditions returned from API calls must be handled and processed in an appropriate manner. Failure to do so can lead to unhandled exception situations, resulting in premature termination of pipeline execution and ultimately in an authentication error being returned."
+---
+
+## Send error logs to an external service
+
+We recommend sending error event logs to an external service to provide better visibility and diagnosis of anomalous operation. To retain and analyze your log events past the log retention period offered for your subscription plan, [use Auth0 log streaming](https://auth0.com/docs/customize/log-streams). You can use services like DataDog and AWS EventBridge. We also offer the ability to send logs to an external service in our [Log Streaming](https://marketplace.auth0.com/features/log-streaming) section in Auth0 Marketplace.
+
+## Use error objects in rules
+
+There are time constraints regarding how much time a rule has to execute. To learn more, read [Custom Database Action Script Execution Best Practices](https://auth0.com/docs/authenticate/database-connections/custom-db/custom-database-connections-scripts/execution). If recovery from an error condition is not possible (or probable) within this time period, then an error condition should be explicitly returned; this is as simple as completing rule execution by returning an instance of a Node `Error` object, as in:
+
+`return callback(new Error('some description'));`
+
+To learn more, read [Class: Error on nodejs.org](https://nodejs.org/api/errors.html#errors_class_error).
+
+Alternatively, an instance of the Auth0-specific `UnauthorizedError` can be returned, which causes an `unauthorized` error condition with the supplied error description to be returned to the application that initiated authentication—that is, the application from which redirect to the `/authorize` endpoint was initiated. This allows an application to offer conditional retry capability and allows you to implement rules to deny access based on certain conditions:
+
+`return callback(new UnauthorizedError('some description'), user, context);`
+
+## Use meaningful error code descriptions
+
+The `UnauthorizedError` object only returns the description supplied. To use specific processing for unauthorized error conditions, we recommend that you format your descriptions to include some easily accessible error code information, for example:
+
+`'[00043] - my specific error description'`)
+
+## Exception handling
+
+Unexpected error conditions, such as uncaught JavaScript exceptions, can result in the premature termination of pipeline execution, which will ultimately result in an error in authentication being returned.
+
+For situations involving asynchronous operations, you must use a `catch` handler when using `Promise` object processing. `Promise` object processing can also be effective for error handling during non-asynchronous operations. As illustrated below, a `Promise` object can be used to wrap, say, a synchronous function call, making it easier to implement cascaded error handling via use of promise chaining and the like. To learn more about the Promise object, read [Promise in MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). To learn more about promise chaining, read [Error Handling with Promises on javascript.info](https://javascript.info/promise-error-handling).
+
+```js
+return new Promise(function(resolve, reject) {
+ jwt.verify(
+ token,
+ secret,{
+ clockTolerance: 5},
+ function(err, decoded) {
+ if (err) {
+ reject(err);
+ } else {
+ resolve(decoded);
+ }
+ });
+ });
+```
+Alternatively, you can use `try...catch` processing to handle JavaScript exceptions that occur during synchronous operation. To learn more, read [`try...catch` in MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch).Setting up this type of exception handling can often incur performance costs, so use it sparingly; rule performance should be as optimal as possible. A more pragmatic approach is to implement processing that prevents exceptions from occurring rather than handling them once they have occurred. To learn more about best practices, see [Performance Best Practices](https://auth0.com/docs/troubleshoot/performance-best-practices).
+
+## Avoid uninitialized objects in rules
+
+If you use uninitialized objects, that can cause exceptions. We recommend that you include initialization as part of any declaration where the existence of an object is in question. For example:
+
+`user.user_metadata = user.user_metadata || {}`)
+
+In a rule, taking steps to prevent an exception from occurring in the first place is a best practice and is typically less costly in terms of performance and resource usage than implementing exception handling.
diff --git a/main/favicon.svg b/main/favicon.svg
new file mode 100644
index 0000000..ce85873
--- /dev/null
+++ b/main/favicon.svg
@@ -0,0 +1,7 @@
+
diff --git a/main/images/basic_login_app_background.svg b/main/images/basic_login_app_background.svg
new file mode 100644
index 0000000..7ffc625
--- /dev/null
+++ b/main/images/basic_login_app_background.svg
@@ -0,0 +1,9 @@
+
diff --git a/main/images/custom_policy_background.png b/main/images/custom_policy_background.png
new file mode 100644
index 0000000..32476bb
Binary files /dev/null and b/main/images/custom_policy_background.png differ
diff --git a/main/images/logo.png b/main/images/logo.png
new file mode 100644
index 0000000..8836a64
Binary files /dev/null and b/main/images/logo.png differ
diff --git a/main/images/twilio_background.svg b/main/images/twilio_background.svg
new file mode 100644
index 0000000..4a6a327
--- /dev/null
+++ b/main/images/twilio_background.svg
@@ -0,0 +1,28 @@
+
diff --git a/main/index.mdx b/main/index.mdx
new file mode 100644
index 0000000..fe2a554
--- /dev/null
+++ b/main/index.mdx
@@ -0,0 +1,127 @@
+---
+mode: "custom"
+---
+
+export function openSearch() {
+ document.getElementById('search-bar-entry').click();
+}
+
+
+
+
+
+
+ Welcome to Auth0 docs!
+
+
How can we help you?
+
+
+
+
+
+
+
+
Start Building
+
Choose your application type to get started
+
+
+ } href="/docs/quickstart/native" >
+ Mobile or Desktop app that runs natively on a device
+ e.g., iOS, Android
+
+
+ } href="/docs/quickstart/spa" >
+ JavaScript web app that runs in the browser
+ e.g., AngularJS + Node.js, React
+
+
+ } href="/docs/quickstart/webapp" >
+ Traditional web app that runs on the server
+ e.g., Express.js, ASP.NET
+
+
+ } href="/docs/quickstart/backend" >
+ An API or service protected by Auth0
+ e.g., Express.js API, ASP.NET API
+
+
+
+
Learn about Auth0
+
+
+
+
+
+ Rely on the Auth0 identity platform to add sophisticated authentication and authorization to your applications. Centralize and manage users from multiple identity providers and give them branded, seamless signup and login experiences. Finely control access with a degree of customization that can accommodate even the most complex security requirements.
+
+
+
+
+ Learn the basics and begin building your authentication solution.
+
+
+ Define how your applications and APIs verify the identity of a user or device.
+
+
+ Store and manage custom details about your users.
+
+
+
+
+
+ Customize Auth0 using your own branding and extend our functionality to solve your unique identity needs.
+
+
+ Add multi-factor authentication and defend your application from bots, suspicious IPs, and password breaches.
+
+
+ Deploy Auth0 for your applications and monitor system health and events.
+
+
+ Troubleshoot challenges, learn about Auth0's different levels of support, and get help.
+
+
+