Visit the site
Visit the siteOrganizations Involved
Community contributions
Skvare maintains the CiviCRM Entity module on Drupal.org, which provides Views integration and native Drupal entity support for CiviCRM data. Work on this project contributed to ongoing improvements in how the module handles structured contact data within Drupal's search and REST infrastructure.
The National Association of Addiction Treatment Providers (NAATP) supports addiction treatment programs across the country through education, advocacy, and networking. Their public-facing member directory is a key resource β connecting people seeking treatment with providers in their area.
The previous Drupal site had reached end of life. Filtering and search were limited, the interface felt dated, and the aging architecture made improvements difficult. NAATP needed a platform that could grow with the organization without abandoning the systems already managing their membership data.
Using the latest version of Drupal as the content and data layer, and React as the interactive frontend, Skvare rebuilt the directory into a fast, filterable, accessible resource β one that works better for visitors and requires less maintenance effort from staff.
About the project
Outcomes
NAATP's member directory is now faster, easier to use, and more accessible. Visitors can search and filter treatment providers by location, services, and accepted insurance in real time. Staff manages member content through Drupal's editorial interface without touching frontend code. Performance improved through caching configuration and optimized asset delivery. Search engine visibility improved through structured URLs and dynamic metadata management.
Challenge
NAATP needed to replace an aging Drupal site that had reached end of life, creating both security risk and a ceiling on what improvements were possible.
The member directory β a core resource for people seeking addiction treatment β lacked the filtering, search, and navigation tools users expected. Building interactive features on the old architecture required significant effort for limited results. The organization wanted to stay within Drupal but needed a more capable and flexible frontend.
Solution
Skvare built the new site on the latest version of Drupal for content management and data architecture, with React powering the interactive directory on the frontend.
Drupal's Views system exposes structured member data through REST endpoints, which React consumes to render search results instantly. Each listing includes location, treatment types, insurance accepted, and optional details like parent organization and available facilities β all displayed responsively across desktop and mobile.
Key improvements the platform delivers:
- Real-time search and filtering across the full member directory, with result ranking tuned to surface the most relevant providers first
- An interactive map for browsing providers by state or region
- Structured, readable URLs for individual organization pages
- Dynamic metadata management for SEO, with Drupal handling the initial page load and React updating tags as users navigate
- Accessibility improvements through better contrast ratios, font sizing, and clearer navigation
- Performance gains from caching configuration and a bundled asset pipeline
By connecting a React frontend to Drupal's content and search infrastructure, NAATP can now offer a public directory that is faster, more accessible, and easier to maintain β making it simpler for people seeking treatment to find the right provider.
Community Contributions
Skvare maintains the CiviCRM Entity module on Drupal.org, which provides Views integration and native Drupal entity support for organizations using CiviCRM as their membership data source. Work on this project contributed to ongoing improvements in how the module handles structured contact data within Drupal's search and REST infrastructure.
Why Drupal was chosen
Drupal's content architecture and built-in API capabilities made it the right foundation for this project. The Views system provided a clean way to expose structured member data as REST endpoints that React could consume β without requiring a fully decoupled build from scratch. Search API gave us precise control over how results are indexed and ranked, which off-the-shelf search tools would not have offered.
Drupal also served as the integration layer between the public-facing directory and the underlying membership database. Rather than managing two separate content systems, Skvare used Drupal to bridge content management and structured contact data, keeping the editorial workflow straightforward for NAATP staff.
The flexibility of Drupal's module ecosystem made it possible to build this architecture incrementally β and to leave room for future improvements like switching to a more powerful search backend β without locking the project into a rigid structure.
Technical Specifications
Drupal version:
Key modules/theme/distribution used:
Search API
Provided control over how member data is indexed and ranked. We built a custom index with boost settings applied to key fields like organization name and city, improving the accuracy and relevance of search results. The module's architecture also allows the search backend to be upgraded to Apache Solr in the future without changes to the frontend.
Views (core)
Used to expose structured member data as REST endpoints consumed by the React frontend. Drupal Views made it possible to define exactly which fields to expose and how to filter them, without requiring custom endpoint development.
CiviCRM
CiviCRM serves as the membership database for NAATP, storing contact records, organization profiles, and the structured data fields β treatment types, insurance accepted, facilities, and more β that power the public directory. Drupal reads from CiviCRM as its data source, exposing that information through Views and Search API to the React frontend. Member data is managed entirely within CiviCRM, keeping staff workflows unchanged while the Drupal and React layers handle everything visitors see.
CiviCRM Entity
Exposes CiviCRM contact records as native Drupal entities, making member data available to Views, Search API, and REST output. Skvare maintains this module and contributed improvements back to the community as part of ongoing development.
Metatag
Manages structured metadata for organization listing pages. Works alongside React to ensure metadata is present on the initial server render for SEO purposes.
Pathauto
Generates clean, structured URLs for member organization pages, improving both usability and search engine visibility.