Vibeleaderboard
Index / tool
Visit github.com
Category
Developer Tools
Rank
No. 2107Tools index
Pricing
Open Source
Type
TOOL
Builder
ruvnet
GitHub
38 stars
Date

About

rUv's JavaScript port of Drupal patterns — node-based content modeling and rendering in the Node.js ecosystem.

What it does

Drupal.js is a full-stack CMS starter built around a React interface, Strapi backend, and Supabase database. It models articles, pages, categories, menus, custom fields, relationships, taxonomy, and permissions. Content is exposed through REST and GraphQL, while Docker Compose is the documented route for running the application.

Why it's ranked here

The project has a concrete architecture and useful CMS scope, but its presentation raises readiness questions. The repository combines a substantial frontend dependency set with backend plugin loading and documented content APIs. However, the root package is private, identifies itself generically, and provides no test script. Treat it as a foundation to inspect and adapt, not a finished Drupal replacement.

What's good

The design covers the pieces needed for a practical content system: structured content types, relationships, taxonomy, authentication, permissions, administration, and two API styles. Supabase supplies PostgreSQL, authentication, authorization, generated APIs, and real-time capabilities. The backend also discovers custom JavaScript plugins and initializes them during startup, giving extensions a defined integration point.

Tradeoffs

The README explicitly says the project does not include every Drupal feature. Setup depends on Node.js, npm, Docker, Docker Compose, Git, and a Supabase account with several credentials. The root manifest has development, build, lint, and preview commands, but no test command. Documentation also describes Strapi and Docker infrastructure that is not represented by the root package manifest alone.

How to use it well

Choose it when a JavaScript team wants a starting point for a Drupal-like CMS and accepts Strapi plus Supabase as core infrastructure. Begin by validating the content schemas, permission model, API behavior, and plugin initialization against your requirements. It can support a React content application, but it does not replace Drupal feature parity or remove the need for deployment, testing, and production hardening work.

Technical notes+

The root package.json defines a private ESM Vite application with React 18, React Router, TanStack Query, Supabase, Tailwind CSS, Radix UI packages, rich-text editors, charts, forms, validation, and motion libraries. vite.config.js proxies /api to http://localhost:1337 and removes the prefix before forwarding. src/backend/config/server.js binds Strapi to 0.0.0.0, defaults to port 1337, reads APP_KEYS, and configures relation population for webhooks. src/backend/src/plugins/index.js scans a custom directory for JavaScript modules, while src/backend/src/index.js loads those modules during bootstrap and awaits each plugin's initialize method. README.md documents Docker Compose startup, Supabase credentials, a Strapi admin panel, REST content routes, and a GraphQL endpoint. Drupal.js/vite.config.js, Drupal.js/postcss.config.js, and Drupal.js/tailwind.config.js describe a second Vite and Tailwind configuration beneath the nested project directory.

Observed

Primary language
JavaScript, using both ECMAScript modules and CommonJS modules
Packaging
Private npm package configured as an ECMAScript module
Install surface
Repository clone followed by Docker Compose is the documented setup path
User interface
React web frontend built with Vite and Tailwind CSS
Backend interface
Strapi administration plus documented REST and GraphQL APIs
Database service
Supabase PostgreSQL with required project URL, key, and password configuration
Extension model
Backend loads custom JavaScript plugin modules during application bootstrap
Testing structure
The root package manifest defines no test script

Read from README.md, package.json, src/backend/src/index.js, src/backend/config/server.js, src/backend/src/plugins/index.js, vite.config.js, postcss.config.js, tailwind.config.js, .gpt_engineer/index.js, Drupal.js/vite.config.js, Drupal.js/postcss.config.js, Drupal.js/tailwind.config.js, .gpt_engineer/report-error.js, .gpt_engineer/get-user-snapshot.js, .gpt_engineer/report-url-change.js.

What it can do

  • Create content nodes using Drupal patterns

    Content data and node structure definitionsStructured content nodes

  • Model content types with field definitions

    Content type specifications and field configurationsContent type models

  • Render content using Drupal theming patterns

    Content nodes and theme templatesRendered HTML output

  • Process content through Node.js applications

    Drupal-style content structuresProcessed content data

  • Port Drupal content workflows to JavaScript

    Drupal content management patternsJavaScript-based content workflows

Tags

drupaljavascriptcmsruvnetnodejs

Tech Stack

Node.jsTailwind CSSVite

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.