
drupaljs
github.com/ruvnet/drupaljs- 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 definitions → Structured content nodes
Model content types with field definitions
Content type specifications and field configurations → Content type models
Render content using Drupal theming patterns
Content nodes and theme templates → Rendered HTML output
Process content through Node.js applications
Drupal-style content structures → Processed content data
Port Drupal content workflows to JavaScript
Drupal content management patterns → JavaScript-based content workflows
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.