Ak new android page for SEO (#46040)

Not linked to nav or added to footer
added to sitemap

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added an Android Device Management landing page with hero, marketing
sections, feature comparisons, self‑hosted vs hosted details, and a
testimonials carousel filtered to device‑management content.
* Page is reachable at /lp/android-mdm and its client script is
auto‑included.

* **Style**
  * Added comprehensive responsive styling across multiple breakpoints.

* **Chores**
  * Included the new landing page URL in the generated sitemap.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/fleetdm/fleet/pull/46040?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Eric <eashaw@sailsjs.com>
This commit is contained in:
Ashish Kuthiala
2026-05-26 16:11:11 -05:00
committed by GitHub
co-authored by Copilot Autofix powered by AI copilot-swe-agent[bot] Eric
parent 60b755a599
commit 2e437aa6d1
8 changed files with 1171 additions and 0 deletions
+1
View File
@@ -95,6 +95,7 @@ module.exports = {
'/lp/on-premise',
'/lp/open-source',
'/lp/windows-mdm',
'/lp/android-mdm',
// FUTURE: Do something smarter to get hand-coded HTML pages from routes.js, like how rebuild-cloud-sdk works, to avoid this manual duplication.
// See also https://github.com/sailshq/sailsjs.com/blob/b53c6e6a90c9afdf89e5cae00b9c9dd3f391b0e7/api/helpers/get-pages-for-sitemap.js#L27
];
@@ -0,0 +1,39 @@
module.exports = {
friendlyName: 'View android mdm',
description: 'Display "Android MDM" page.',
exits: {
success: {
viewTemplatePath: 'pages/landing-pages/android-mdm'
},
badConfig: { responseType: 'badConfig' },
},
fn: async function () {
if (!_.isObject(sails.config.builtStaticContent) || !_.isArray(sails.config.builtStaticContent.testimonials) || !sails.config.builtStaticContent.compiledPagePartialsAppPath) {
throw {badConfig: 'builtStaticContent.testimonials'};
}
// Get testimonials for the <scrollable-tweets> component.
let testimonialsForScrollableTweets = _.clone(sails.config.builtStaticContent.testimonials);
// Filter the testimonials to ones tagged with "Device management".
testimonialsForScrollableTweets = _.filter(testimonialsForScrollableTweets, (testimonial)=>{
return _.contains(testimonial.productCategories, 'Device management');
});
// Respond with view.
return {
testimonialsForScrollableTweets
};
}
};