# Nhan AEM Notes
> A personal collection of notes, code snippets, and guides for Adobe Experience Manager (AEM), Java, and web development.
## AEM
- [AEM (Adobe Experience Manager)](https://nhanbe.id.vn/aem/index.md): AEM (Adobe Experience Manager) Index - Architecture - Foundation - Backend - Content & Data - UI - Infrastructure - AEM Articles
- [AEM Core Architecture](https://nhanbe.id.vn/aem/architecture.md): The core philosophy is everything is content. Pages, components, templates, configurations, code-resolved scripts - they all live as nodes in the JCR.
- [Building Homepage & Article Page](https://nhanbe.id.vn/aem/foundation/building-pages.md): Practice: Building component for home page.
- [Client Libraries](https://nhanbe.id.vn/aem/foundation/client-libraries.md): Client libraries AEM basic
- [Component Dialogs](https://nhanbe.id.vn/aem/foundation/component-dialogs.md): Basic Dialog Structure On Touch UI, all dialogs follow a strict nested XML structure built using Granite UI libraries.
- [Content Fragments & GraphQL](https://nhanbe.id.vn/aem/foundation/content-fragments-and-graphql.md): Content Fragments are **structured, channel-neutral content*— text, images, data — stored independently of any page layout. Combined with GraphQL,
- [HTL Templates](https://nhanbe.id.vn/aem/foundation/htl-templates.md): HTL (formerly Sightly) is AEM's server-side template language. It completely replaces JSP and serves as the standard for rendering components. HTL'
- [Introduction to AEM](https://nhanbe.id.vn/aem/foundation/introduction-to-aem.md): Adobe Experience Manager (AEM) is a content management system (CMS) built on Java. It manages websites, digital assets, and content across channel
- [JCR & Sling](https://nhanbe.id.vn/aem/foundation/jcr-and-sling.md): JCR is a hierarchy, tree-structured content repository. JCR has nodes and properties. Nodes are like folders. They have a name, type, and contain
- [JCR Page Properties & jcr:content Node](https://nhanbe.id.vn/aem/foundation/jcr-page-properties.md): All properties on the jcr:content node of an AEM page
- [OSGi Fundamentals](https://nhanbe.id.vn/aem/foundation/osgi-fundamentals.md): OSGi is the module system managing all Java code in AEM. Every Java piece — your code, AEM's code, third-party libraries — runs inside an **OSGi
- [Publishing And Replication](https://nhanbe.id.vn/aem/foundation/Publishing-and-Replication.md): Build pages and assets on the **author*instance. Visitors never see author tier they see publisher, fronted by the Dispatcher and a CDN. Replication
- [Sling Model](https://nhanbe.id.vn/aem/foundation/sling-model.md): --**Flow Summary (HTL):*1. `data-sly-use` points to a class annotated with `@Model`. 2. Sling creates an instance and injects fields. 3. HTL use
- [Templates & Policies](https://nhanbe.id.vn/aem/foundation/templates-and-policies.md): **Template**: determines **page structure*and **authoring regions**. **Policy**: determines **allowed components*+ **default/design options*+
- [Testing and Debugging](https://nhanbe.id.vn/aem/foundation/testing-and-debugging.md): What it cover: Sling Models, services, utility logic in isolation Tooling: JUnit 5, Mockito, wcm.io AEM Mocks (`AEMContext`) `AEMContext` from
- [Your First Component](https://nhanbe.id.vn/aem/foundation/your-first-component.md): Components are the primary building blocks of AEM pages. A button, a text block, a carousel, or a hero banner — each of these elements is a
- [Context-Aware Configuration](https://nhanbe.id.vn/aem/backend/context-aware-configuration.md): Sling Context-Aware Configuration (CA Config) lets you store configuration values
- [Event Listeners and Handlers](https://nhanbe.id.vn/aem/backend/event-listener-and-handler.md): AEM provides two event systems for reacting to changes in the repository and the platform. Understanding
- [AEM Filters](https://nhanbe.id.vn/aem/backend/filters.md): Sling servlet filters sit between the Sling engine and the servlet (or script) that ultimately handles a request. They intercept every request tha
- [Java Best Practices in AEM](https://nhanbe.id.vn/aem/backend/java-best-practice-aem.md): This page collects practical Java guidelines for AEM projects. The goal is consistent, safe code that is easy to test and maintain.
- [OSGi Configuration](https://nhanbe.id.vn/aem/backend/osgi-configuration.md): OSGi configuration must be deployed via code (content package), not manually edited in Felix Console. Easy PR review Git history tracking
- [AEM Servlets](https://nhanbe.id.vn/aem/backend/servlets.md): Sling Servlets are Java classes that handle HTTP requests in AEM. They are the standard way to build
- [Sling Jobs and Scheduler](https://nhanbe.id.vn/aem/backend/sling-jobs-and-scheduler.md): AEM's background processing is built on two complementary mechanisms:
- [Sling Models and Services](https://nhanbe.id.vn/aem/backend/sling-model-and-services.md): Sling Models are annotation-driven Java classes that automatically map AEM content (JCR properties,
- [AEM Workflows](https://nhanbe.id.vn/aem/backend/workflows.md): AEM Workflows are automated, multi-step processes that model real-world business operations inside Adobe
- [Content Fragments](https://nhanbe.id.vn/aem/content-and-data/content-fragment.md): Guide to authoring and managing structured Content Fragments in AEM.
- [Content Fragments & GraphQL](https://nhanbe.id.vn/aem/content-and-data/content-fragments-and-graphql.md): Delivering structured Content Fragments via AEM GraphQL APIs for headless applications.
- [Experience Fragment - XF](https://nhanbe.id.vn/aem/content-and-data/experience-fragment.md): Authoring, managing, and reusing Experience Fragments across channels in AEM.
- [Headless GraphQL](https://nhanbe.id.vn/aem/content-and-data/graphql.md): Setting up and executing GraphQL queries for headless content delivery in AEM 6.5.
- [i18n và Translation](https://nhanbe.id.vn/aem/content-and-data/i18n-translation.md): Managing UI string translations dictionary and multi-language content in AEM.
- [Hướng dẫn Truy vấn & Sửa đổi JCR](https://nhanbe.id.vn/aem/content-and-data/modify-and-query-the-jcr.md): Comprehensive guide for querying and modifying JCR repository nodes and properties.
- [Multi-Site Manager (MSM)](https://nhanbe.id.vn/aem/content-and-data/multi-site-manager-msm.md): Managing multi-site blueprints, live copies, and rollout configurations with AEM MSM.
- [JCR Node Operations](https://nhanbe.id.vn/aem/content-and-data/node-operation.md): Comparing Sling Resource API and JCR Node API for repository CRUD operations.
- [Query Builder](https://nhanbe.id.vn/aem/content-and-data/query-builder.md): In-depth guide to AEM QueryBuilder predicates, pagination, indexing, and optimization.
- [Replication và Activation](https://nhanbe.id.vn/aem/content-and-data/replication-activation.md): Understanding AEM replication agents, content activation workflow, and Dispatcher flush mechanism.
- [Tags và Taxonomies](https://nhanbe.id.vn/aem/content-and-data/tags-taxonomies.md): Managing JCR tags, taxonomies, and tagging APIs in Adobe Experience Manager.
- [Coral Ui](https://nhanbe.id.vn/aem/ui/coral-ui.md): Coral Ui - developer documentation and reference notes for Coral Ui.
- [Custom Dialog Widgets](https://nhanbe.id.vn/aem/ui/custom-dialog-widgets.md): Custom Dialog Widgets - developer documentation and reference notes for Custom Dialog Widgets.
- [Extending Responsive Grid](https://nhanbe.id.vn/aem/ui/extending-responsive-grid.md): Extending Responsive Grid - developer documentation and reference notes for Extending Responsive Grid.
- [Webpack](https://nhanbe.id.vn/aem/ui/multi-tenancy-ui-frontend.md): Webpack - developer documentation and reference notes for Webpack.
- [Overlays trong AEM 6.5](https://nhanbe.id.vn/aem/ui/overlays.md): Overlays trong AEM 6.5 - developer documentation and reference notes for Overlays trong AEM 6.5.
- [Render Conditions](https://nhanbe.id.vn/aem/ui/render-conditions.md): Render Conditions - developer documentation and reference notes for Render Conditions.
- [AEM SPA Editor](https://nhanbe.id.vn/aem/ui/spa-editor.md): AEM SPA Editor - developer documentation and reference notes for AEM SPA Editor.
- [Touch UI / Author UI](https://nhanbe.id.vn/aem/ui/touch-ui-2.md): Touch UI / Author UI - developer documentation and reference notes for Touch UI / Author UI.
- [Touch Ui](https://nhanbe.id.vn/aem/ui/touch-ui.md): Touch Ui - developer documentation and reference notes for Touch Ui.
- [ACL & Permissions](https://nhanbe.id.vn/aem/infrastructure/acl-permissions.md): ACL & Permissions - developer documentation and reference notes for ACL & Permissions.
- [AEM Dispatcher, Cache và Flush Cache trong AEM 6.5 On-Premise](https://nhanbe.id.vn/aem/infrastructure/dispatcher-cache-flush.md): Understanding AEM Dispatcher caching mechanics, stat files, and cache invalidation flush agents in AEM 6.5.
- [Dispatcher: Cấu hình Cache và Rủi ro](https://nhanbe.id.vn/aem/infrastructure/dispatcher-config-risks.md): Analyzing AEM Dispatcher caching configurations, security rules, and common deployment risks.
- [MSM (Multi Site Manager) trong AEM 6.5](https://nhanbe.id.vn/aem/articles/msm/basic-msm-in-aem.md): MSM cho phép nội dung nguồn được tái sử dụng ở nhiều site đích với cơ chế COPY-based. Hướng dẫn chi tiết về Blueprint, Live Copy, Rollout Config, Live Action và API.
- [Sling Framework - Basic](https://nhanbe.id.vn/aem/articles/sling/sling-framework.md): Introduction to Apache Sling RESTful framework, resource mapping, and JCR content architecture.
- [Sling Model Annotations](https://nhanbe.id.vn/aem/articles/sling/sling-model-annotations.md): Complete reference for Apache Sling Model annotations and field injectors.
- [AEM - Code Execute flow](https://nhanbe.id.vn/aem/articles/10-authoring-publishing-dispatcher-code-env.md): Understand the boundaries and execution flow differences between AEM Author, Publish, Dispatcher, and CDN.
- [AEM Externalizer — Hướng dẫn sử dụng trong dự án mysite](https://nhanbe.id.vn/aem/articles/aem-externalizer-guide.md): Guide to configuring and using AEM Externalizer service to build absolute URLs across environments.
- [Khai thác Classic UI để debug trên AEM hiện đại](https://nhanbe.id.vn/aem/articles/classic-ui-debugging.md): Debugging guide utilizing Classic UI consoles and tools in modern AEM 6.5.
- [Cloudflare](https://nhanbe.id.vn/aem/articles/cloudflare-api-cache.md): Best practices for setting up Cloudflare CDN caching in front of AEM API endpoints.
- [Touch UI Principal-Based Permission Management](https://nhanbe.id.vn/aem/articles/experience-manager-65-touch-ui-principal-view.md): AEM 6.5 introduces Permissions Management for Users and Groups. The main functionality remains the same as the classic UI, but is more user-friendly
- [Hướng dẫn tạo Custom Page Template trong AEM 6.5](https://nhanbe.id.vn/aem/articles/impl_custom_page_template_guide.md): Guide to creating and configuring custom page templates in AEM 6.5.
- [Implement SEO JSON-LD Schema cho Page Component](https://nhanbe.id.vn/aem/articles/impl-seo-schema.md): Implementation guide for structured data JSON-LD generation in AEM using Sling Models and HTL.
- [User Administration and Security](https://nhanbe.id.vn/aem/articles/security-aem65.md): Overview of user administration, groups, privileges, and security configurations in AEM 6.5.
- [SEO LD+JSON: xây dựng object lồng nhau cho AEM Page](https://nhanbe.id.vn/aem/articles/seo-ld-json-nested.md): Advanced guide for building nested JSON-LD structured data objects in AEM.
- [Seo Ld Json](https://nhanbe.id.vn/aem/articles/seo-ld-json.md): Fundamental approach for implementing JSON-LD structured data pipeline in AEM.
- [Child Resource](https://nhanbe.id.vn/aem/annotations/child-resource.md): The @ChildResource annotation is a Sling Models injector that maps child JCR nodes to Java objects. It is the
- [Externalized ValueMap](https://nhanbe.id.vn/aem/annotations/externalized-value-map-value.md): @ExternalizedValueMapValue is a custom Sling Models injector annotation that reads a JCR property (like
- [Sling Model Annotations](https://nhanbe.id.vn/aem/annotations/sling-model-annotations-reference.md): This page is a comprehensive reference for all commonly used Sling Model annotations. Each annotation is explained
- [Client Libraries](https://nhanbe.id.vn/aem/client-libraries.md): Client libraries (clientlibs) are AEM's mechanism for managing CSS and JavaScript delivery. They provide dependency management, aggregation,
- [AEM Components Overview](https://nhanbe.id.vn/aem/component/component-overview.md): An AEM component is a self-contained building block that authors drag onto a page, configure via a dialog,
- [AEM Core Components](https://nhanbe.id.vn/aem/component/core-component.md): This post explains, how you can extend the functionality of AEM Core Components. Part 1 focuses on the extension and reusability of the core
- [Decoration Tag (cq:htmlTag)](https://nhanbe.id.vn/aem/component/decoration-tag.md): How AEM wraps components in a decoration element, and how to control its tag name and CSS classes with cq:htmlTag.
- [Dialog Validation](https://nhanbe.id.vn/aem/component/dialog-validation.md): AEM's Touch UI dialog framework includes a client-side validation system that lets you enforce business
- [Templates and Policies](https://nhanbe.id.vn/aem/component/template-and-policies.md): Editable Templates are AEM's modern template system. They let template authors define
- [Touch UI Component Dialogs](https://nhanbe.id.vn/aem/component-dialogs.md): The following chapters each present a Coral XML snippet which can be copied into any /components/mycomponent/cqdialog/.content.xml file.
- [Custom AEM Components](https://nhanbe.id.vn/aem/custom-component.md): This guide walks through creating a custom AEM component from start to finish. Every artifact is covered:
- [HTL Templates (Sightly)](https://nhanbe.id.vn/aem/htl-templates.md): HTL (HTML Template Language), formerly known as Sightly, is AEM's server-side template language. It is the
- [Standalone ACS Common Overview](https://nhanbe.id.vn/aem/standanlone-acs-common/acs-common-overview.md): [GitHub Repository](https://github.com/LucaNerlich/standalone-acs-commons) [ACS AEM Commons](https://adobe-consulting-services.github.io/acs-aem-comm
- [AEM Advance topic](https://nhanbe.id.vn/aem/advanced/index.md)
- [AEM as a Cloud Service](https://nhanbe.id.vn/aem/advanced/aem-as-a-cloud-service.md)
- [AEM Client Libraries (Clientlibs)](https://nhanbe.id.vn/aem/advanced/client-libraries.md): #base=css variables.less mixins.less base/typography.less base/layout.less components/product-hero.less components/spec-table.less components/downloads.lessCopy Copy clientlib-product/js.txt #base=js utils/dom.js utils/analytics.js components/spec-table.js components/downloads.js main.jsCopy Copy What to point at in an interview: The #base= line sets the folder, so variables.less means css/variables.less. The ordering is deliberate and load-bearing: variables, then base, then components. Alphabetical order would put base before variables and break every variable reference. main.js is last, because it initialises things the other modules define. 8.3 A component-level clientlib ui.apps/.../apps/energy/components/accordion/clientlibs/.content.xml