Implement the first real-world site template

Created on 27 May 2025, 27 days ago

Problem/Motivation

After quite a bit of discussion and planning, we have chosen three real-world site templates to build as the initial "wave" of site templates that can be useful for Drupal CMS. This issue is to implement the first one: a template for a "SaaS / Product" type of site.

Before I provide more information, I need to note that, although we like and value feedback, the scope of this template and its contents/features are pretty much settled and decided upon, so we are going to focus on implementing the things outlined here. Any thoughts on technical direction, or choice of modules (for certain aspects of this template), would be entirely welcome. We intend to do the implementation ourselves, at least for this template (since this is uncharted territory), but code reviews and manual testing are more than welcome!

To be clear on that point: please do not open any merge requests against this issue.

Now, then...here are the details of this template. We are describing the template as if a business was creating a website for a specific (possibly SaaS) product that they are selling to end users. In other words -- let's imagine what sort of product would this site template be used to build a website for.

Naming in competitorโ€™s categories / options: SaaS, Startup, Tech, Technology company, Business

Example business model

A B2B fintech platform that helps companies manage team spending with virtual/physical cards, real-time expense tracking, approval flows, and automated accounting integrations. Think of companies like Spendesk, Pleo, or Payhawk.

  • Target Customer: Mid-sized businesses and scaleups with distributed teams or departments needing centralized control over employee expenses.
  • Core Problem: Businesses face fragmented expense processesโ€”manual reimbursements, lack of visibility, delayed reporting, and risk of overspending or fraud.
  • Solution (Value Proposition): Offer an all-in-one expense management platform where businesses can issue company cards, define spending limits, automate approval workflows, and integrate directly with their accounting tools (e.g. Xero, QuickBooks, NetSuite).

Key Features:

  • Virtual & physical employee cards with spend controls
  • Mobile receipt capture & real-time expense categorization
  • Custom approval flows based on roles/amounts
  • Integration with accounting software (2-way sync)
  • Multi-currency support and automated exchange rate handling
  • Budget tracking and spend analytics dashboards
  • Reimbursement management for out-of-pocket expenses

Business Model:

  • SaaS subscription based on team size or card usage
  • Optional transaction-based revenue (e.g. interchange fees)
  • Upsell via integrations, premium features, or white-label solutions

Why This Model Works:

  • Saves finance teams hours of manual work
  • Reduces fraud and improves compliance
  • Increases operational efficiency and real-time visibility

Site template definition

Here's what the template will actually consist of. The template will be implemented as a recipe, similar in scope to drupal_cms_starter.

Content types

  • Blog Post: Title, body, categories/tags, author, published date -- we can pretty much reuse drupal_cms_blog for this
  • Feature (microcontent or landing?): Detail product features with icon, title, description -- probably a custom block type, does not need its own recipe
  • Changelog? (For the product) -- a single page that can be updated manually by the site owner, only needs a dependency on drupal_cms_page

These are probably custom block types, but might not be.

  • Testimonial: Author (Name + role?), company (logo?), quote, image?, rating
  • FAQ: Topic, question, answer

Top components

These may be SDCs, but that is not yet clear since no design system exists yet. They won't be blocks, since these are visual/layout elements, not structured data.

  • Hero
  • Features
  • Pricing
  • Logo grid
  • FAQ
  • Testimonial list
  • CTA banner

Lists

These will be views, but how we will expose them in the template (on landing pages? as blocks?) is not yet decided.

  • Feature list (cards)
  • Blog list (page) -- already exists in drupal_cms_blog
  • Latest blog posts (cards) -- already exists in drupal_cms_blog, but may not be using cards
  • FAQ list (component)

Menus

  • Main navigation (exists in System module)
  • Footer menu (exists in System module)
  • Utility nav (login/signup) -- probably a new menu, might be added to an existing Drupal CMS recipe

Roles

Admin, Editor, Marketing (admin and editor can come from core recipes that already exist)

Demo / starter content

  • 1 homepage
  • 404 page
  • 1 landing page using all layout components
  • 2 pricing tiers
  • 1 blog post
  • 2 testimonials

MVP

Pricing Comparison Table

Additional features

  • Top priority: Simple CRM integration (we don't know what, if any, modules to use for this -- community input would be valuable here).
    • Hubspot - MVP to match the Webflow integration that allows you to embed a form from Hubspot from within XB
  • Campaign management integration
    • Mailchimp
    • Hubspot
    • Zapier
  • A/B testing tools
  • Behavior tracking

Add on recipes / Recommended recipes?

Possibly look at using the optional or suggested recipes for these?

  • Team Member: Name, role, bio, social links, photo
    • With listing page?
    • Demo content: 3 fake team members
  • Career? (usually managed by external services)
    • With listing page?
  • News? -- we have a drupal_cms_news recipe we can use for this
  • Events? -- drupal_cms_events recipe exists for this

Examples

  • clickup.com
  • butter.us
  • nextnav.com
  • causal.app
  • supernova.io
  • e2b.uk
  • ampeco.com
  • parlem.com
โœจ Feature request
Status

Active

Component

General

Created by

๐Ÿ‡บ๐Ÿ‡ธUnited States phenaproxima Massachusetts

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

  • Issue created by @phenaproxima
  • ๐Ÿ‡บ๐Ÿ‡ธUnited States phenaproxima Massachusetts
  • ๐Ÿ‡ช๐Ÿ‡ธSpain ckrina Barcelona

    Removing examples because I didn't do any research on things like ethics or anything controversial on their business beyond reviewing site features to quickly evaluate our needs, so I don't want to endorse or recommend anyone.

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States phenaproxima Massachusetts

    Clarifying that we may or may not need integration with all (or any) of Mailchimp, Hubspot, or Zapier. I guess we'll find out as we go along.

  • Merge request !549Resolve #3526844 "B2b template" โ†’ (Closed) created by phenaproxima
  • ๐Ÿ‡ฌ๐Ÿ‡งUnited Kingdom catch

    Blog Post
    Title, body, categories/tags, author, published date -- we can pretty much reuse drupal_cms_blog for this

    Does this mean actually re-use drupal_cms_blog or copy it? My initial reaction is that it would be much better if it was added as a dependency rather than duplicated, so that that different site templates and recipes in general, have a consistent blog content type (unless there's a very specific reason to diverge). Any changes would only need to be made in one place, only one content type to theme etc. It's much easier to split things later if there's a good reason to than it is to consolidate them back into one thing if they've already proliferated.

    Behavior tracking

    This has GDPR and general privacy implications (and front end performance implications and etc.) and don't think it should be in scope. There is plenty to get right here without adding a load of compliance work on top of it. Eventually stuff like this can be pulled in from project browser or similar.

    There is no mention of XB here, is the idea to try to build this on top of XB from the beginning, or to add that in later?

  • ๐Ÿ‡ช๐Ÿ‡ธSpain ckrina Barcelona

    "Behavior tracking "

    This has GDPR and general privacy implications (and front end performance implications and etc.) and don't think it should be in scope.

    Yes, we're aware. This is under "Additional features", as something we won't handle as part of the MVP. We listed them here as features we'd like to have but we don't expect to invest time for now. I've updated the summary to clarify that, I hope it helps to not derail the important conversation here which is start building the first site template. Perks of showing work in progress as early as we can ;)

    There is no mention of XB here, is the idea to try to build this on top of XB from the beginning, or to add that in later?

    All XB from the beginning: we're planning on launching this in Vienna with Drupal CMS + XB together and this working (site templates + the new design system/theme). We're working on figure things out: getting the new design system working with XB, and publish all the code as soon as we can.

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States phenaproxima Massachusetts

    Does this mean actually re-use drupal_cms_blog or copy it?

    This means reusing it as a dependency. I think it's a good practice to depend upon existing recipes as much as possible, and build on them.

  • ๐Ÿ‡ฌ๐Ÿ‡งUnited Kingdom catch

    I've updated the summary to clarify that, I hope it helps

    Thanks, yes that does help :) it wasn't clear whether it was 'explicitly deferred' or 'stretch goal', but can stop worrying about it now.

    Team Member: Name, role, bio, social links, photo
    With listing page?
    Demo content: 3 fake team members

    This could theoretically be re-usable for other site templates like something NGO-ish or different kinds of brochure websites.

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States galactus86

    This is great info to start. When I think about the site template idea I start to consider the UX side beyond XB. Drupal has so many options to handle the list of features, yet it also becomes challenging to unify the editorial experience. Does the microcontent need to be authored somewhere before it can be added in XB? For some of these that seems to be a yes.

    A few other questions, thoughts:

    Microcontent
    Testimonials, FAQ

    • This is resusable content, create/edit in one place, placeable in XB, other?
    • What entity type are we thinking? blocks might be clunky, there is micro-content which I have not tried
    • Blocks come with other Drupal things that might be confusing for editors
    • Nodes are really pages, again not a perfect fit
    • an FAQ is just a Q and A single item? Is it some type of accordion?

    Logo Grid

    • is this a set number per row, is it animated, are there controls we need to consider?

    Missing features that every site should ship with?
    The features listed are specific to the SaaS template, but are we missing some features that site owners just expect to be present?

    • Contact form (webform?)
    • Carousel (what types of settings would be req.)

    It seems like a great idea to start with recipes, can we list the ones we think are relevant and see how far that gets us?

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States phenaproxima Massachusetts
    • This is resusable content, create/edit in one place, placeable in XB, other?
    • What entity type are we thinking? blocks might be clunky, there is micro-content which I have not tried
    • Blocks come with other Drupal things that might be confusing for editors
    • Nodes are really pages, again not a perfect fit
    • an FAQ is just a Q and A single item? Is it some type of accordion?

    After some discussion with @pameeela in Slack, I think nodes are actually a fine fit for these, in combination with www.drupal.org/project/entity_display_route, which is slated to be merged into core but hasn't quite made it over the finish line for 11.2.

    One of the major advantages of having nodes for all this is, I think, that editors can find all of their content, including the "micro-content", at /admin/content. Rather than having to search for it in different places of the admin UI.

    Beyond the need for a shim module to suppress the page display for these content types, I can't see much advantage offered by blocks (or something else) over nodes.

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States phenaproxima Massachusetts

    As for the missing features, those are are not in the defined (settled) scope, so they could maybe be added later, but won't be in the initial version of this template unless @pameeela or @ckrina asks for it. :)

  • ๐Ÿ‡ช๐Ÿ‡ธSpain ckrina Barcelona

    Carousel (what types of settings would be req.)

    This is a feature that will require proper discussions and will come with a lot of implementation opinions (who doesn't have an opinion on carousels here! :D ) so given the amount of more important things we need to solve I'd prefer to postpone the carousel/slider implementation until we start with the next site template.

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States galactus86

    100% agree on the carousel, but that also means we leave off of the design system for now.. again fine.

    I don't think we can ship any template without some type of contact form. Do we want to look at webform or something simpler? I am all for watching scope very closely.

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States phenaproxima Massachusetts

    We already have a contact form as part of the drupal_cms_forms recipe, so the site template will simply reuse that as a dependency.

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States galactus86

    ah yes! okay drupal_cms_form recipe will do! We were already styling webforms! thx!

  • ๐Ÿ‡ฆ๐Ÿ‡บAustralia pameeela

    I've removed the microcontent heading from the IS. Although I can see a use case for having testimonials and FAQs being reusable, it adds a lot of complexity to the content model, and for me does not add much value. In other words, I think it's possible but not that common that a site may want to reuse these but I don't think it meets the 80% threshold and therefore does not feel like MVP.

    The features listed are specific to the SaaS template, but are we missing some features that site owners just expect to be present?

    Not sure whether it has been made explicitly clear but we assume that Drupal CMS will provide this basic functionality for all of the templates that we develop. There are definitely things missing from Drupal CMS itself on this front but we should aim to add them there rather than in each template so they are consistent across sites that use it.

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States thejimbirch Cape Cod, Massachusetts

    After some discussion with @pameeela in Slack, I think nodes are actually a fine fit for these, in combination with www.drupal.org/project/entity_display_route, which is slated to be merged into core but hasn't quite made it over the finish line for 11.2.

    entity_display_route doesn't have a full release, nor is it covered by the security team. Do we need to break out an issue for that? Looks like the core issue, โœจ Support adding additional routes for view modes other than 'full' Active is blocked by a path and pathauto issue.

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States thejimbirch Cape Cod, Massachusetts
  • ๐Ÿ‡ฌ๐Ÿ‡งUnited Kingdom catch

    #17 is talking about not having those items as microcontent, would that in turn mean that entity_display_route isn't necessary?

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States phenaproxima Massachusetts
  • ๐Ÿ‡ฆ๐Ÿ‡บAustralia pameeela

    The module was just a sandbox, I shouldn't have linked to it initially. The intention is to get this into core in โœจ Allow disabling a route for a bundle and adding additional routes for view modes other than 'full' Postponed .

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States phenaproxima Massachusetts
Production build 0.71.5 2024