Drupal is a registered trademark of Dries Buytaert
cms 2.1.3 Update released for Drupal core (2.1.3)! drupal 10.5.11 Update released for Drupal core (10.5.11)! drupal 11.3.11 Update released for Drupal core (11.3.11)! drupal 11.2.13 Update released for Drupal core (11.2.13)! drupal 10.6.10 Update released for Drupal core (10.6.10)! cms 2.1.2 Update released for Drupal core (2.1.2)! drupal 11.1.10 Update released for Drupal core (11.1.10)! drupal 10.5.10 Update released for Drupal core (10.5.10)! drupal 10.4.10 Update released for Drupal core (10.4.10)! drupal 11.2.12 Update released for Drupal core (11.2.12)! drupal 11.3.10 Update released for Drupal core (11.3.10)! drupal 10.6.9 Update released for Drupal core (10.6.9)! drupal 10.6.8 Update released for Drupal core (10.6.8)! drupal 11.3.9 Update released for Drupal core (11.3.9)! drupal 11.3.8 Update released for Drupal core (11.3.8)! drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)!

garage

No security coverage
View on drupal.org

Garage provides foundational garage management entities and workflows for Drupal 11+ sites. It is intended for building garage, workshop, vehicle service, and repair-management systems where operational records need to stay inside Drupal.

This module is under active development. The current 1.0.x branch is suitable for development and evaluation, but it is not a stable release and should not be treated as production-ready without your own review and testing.

Overview

Garage is built around the day-to-day records a workshop needs to manage: garages, customers, customer vehicles, appointments, quotes, work orders, invoices, payments, staff profiles, and basic operational reports.

The module currently focuses on a practical Phase 1 foundation. It does not try to be a marketplace, a SaaS billing system, a Commerce replacement, or a full inventory platform from day one. The goal is to provide a clean operational base that can be tested in real garage workflows before larger features are added.

Current development scope

The current development branch includes the first complete foundation pass for a garage management workflow:

  • Garage records: Create and manage one or more garage records under a dedicated Garage admin section.
  • Customers: Store operational customer records scoped to a garage.
  • Customer vehicles: Store garage-owned operational vehicle records with plate, VIN, odometer, color, and snapshot labels.
  • Appointments and intake: Create appointments, walk-in intake records, and basic check-in data.
  • Quotes: Create revisionable quotes with quote lines, manual approval status, vehicle snapshots, and calculated totals.
  • Work orders: Create revisionable internal job cards with work order lines, technician assignment, simple state transitions, and DVI-lite notes/photos.
  • Invoices: Create revisionable invoices with invoice line snapshots, manual invoice numbering, stored totals, paid totals, and balances.
  • Payments: Record manual payments such as cash, card, bank transfer, check, or other offline payment methods.
  • Reports: Basic operational reports for daily revenue, open work orders, and unpaid invoices.
  • Permissions and access: Granular permissions and entity access handlers for the main operational records.

Admin structure

Garage uses its own top-level administration section instead of placing the workflow under Structure:

/admin/garage

Current admin pages include garages, customers, vehicles, appointments, quotes, work orders, invoices, payments, reports, and staff profiles.

Architecture

  • Drupal 11+ content entities: Garage records are custom content entities, not node bundles.
  • Commercial-model neutral: The module does not require subscriptions, entitlements, marketplace logic, or Drupal Commerce.
  • No forced Commerce dependency: Garage invoices and payments are operational workshop records, not Commerce Orders or Commerce Payments.
  • Vehicle snapshot strategy: Operational records store vehicle snapshot data so historical quotes, work orders, and invoices do not depend on live catalog joins.
  • Single module for Phase 1: The current development branch keeps the Phase 1 foundation in one module. Optional submodules may be introduced later only after real-world workflow boundaries are validated.
  • Update-path aware: New entity schemas are installed through update hooks for development sites that already have the module enabled.
  • Test-backed development: Kernel and functional tests are included for entity behavior, validation, access, reports, and admin workflows.

Vehicle catalog strategy

Garage is designed to work alongside a separate vehicle catalog/reference layer. The related Vehicle module is the intended future catalog layer for make, model, range, variant, and specification data.

Garage does not currently require the Vehicle module. This is intentional. Garage must support incomplete, real-world intake data, including vehicles whose catalog information is unknown, incomplete, or entered manually at the service desk.

What this module is not yet

  • It is not a finished production garage management system.
  • It is not a marketplace platform.
  • It is not a SaaS subscription or entitlement engine.
  • It is not an online payment gateway integration.
  • It is not a full inventory or stock ledger system yet.
  • It is not a structured Digital Vehicle Inspection system yet.
  • It does not currently provide a polished service-advisor or technician mobile UI.
  • It does not generate PDFs, send SMS/WhatsApp messages, or provide a customer portal yet.

Basic usage

After enabling the module, go to:

/admin/garage

A simple evaluation workflow can be tested in this order:

  1. Create a Garage.
  2. Create a Customer.
  3. Create a Customer Vehicle.
  4. Create an Appointment or walk-in intake record.
  5. Create a Quote and Quote lines.
  6. Create a Work order and Work order lines.
  7. Create an Invoice and Invoice lines.
  8. Record a manual Payment.
  9. Check the basic reports for daily revenue, open work orders, and unpaid invoices.

Basic reports

The current development branch includes basic operational reports intended for first-stage validation:

  • Daily revenue: Based on recorded manual payments, not invoice issue dates.
  • Open work orders: Shows draft, scheduled, and in-progress work orders.
  • Unpaid invoices: Shows issued, partially paid, and overdue invoices with a positive stored balance.

These reports are deliberately simple. They are not a dashboard, analytics engine, charting system, or accounting replacement.

Installation

This project currently targets development use from the 1.0.x branch. For now, install it from source and enable it like any other Drupal module.

drush en garage -y

For more details, see the project's README.md.

Requirements

  • Drupal 11 or later.
  • Core modules used by the current implementation include DateTime, Image, Options, Text, User, and Views.
  • No external JavaScript library is required for the current Phase 1 foundation.
  • Drupal Commerce is not required.
  • The Vehicle module is not required in the current branch.

Development status

The 1.0.x branch contains a complete Phase 1 foundation and is available for review, testing, and feedback. It is still a development branch. Expect APIs, fields, workflows, and UI decisions to change before a stable release.

The next practical step is real garage validation: testing the full customer → vehicle → appointment → quote → work order → invoice → payment → report flow with realistic data and real service-advisor feedback.

Roadmap direction

The long-term direction is a modular garage operations platform. Future work may include:

  • Workflow UX improvements for service advisors and technicians.
  • Customer approval links for quotes.
  • Communication logs.
  • CSV import/export.
  • Structured Digital Vehicle Inspection.
  • Inventory and immutable stock movements.
  • Suppliers, purchase orders, returns, and stock reports.
  • Multi-branch support.
  • Optional Commerce bridge for online payments or retail sales.
  • Optional customer portal and marketplace/SaaS layers.

These are future directions, not current stable features.

  • Vehicle: Intended as a future reference/catalog layer for vehicle make, model, range, variant, and specification data.
  • Commerce: A possible future optional bridge for online payments, retail sales, or SaaS subscriptions. Garage does not currently depend on it.
  • State Machine: A possible future fit for more formal quote, work order, invoice, and inspection workflows. The current development branch uses simple internal state fields and lightweight transition handling.

Support and feedback

Feedback is welcome, especially from people who work with real garage, workshop, or vehicle service workflows. Please use the Garage issue queue for bug reports, architecture feedback, and practical workflow suggestions.

Since the module is still in development, useful feedback includes missing fields, confusing forms, workflow gaps, report problems, permission issues, and real-world garage scenarios that the current foundation does not handle well.

Activity

Total releases
1
First release
Jun 2026
Latest release
3 hours ago
Release cadence
Stability
0% stable

Releases

Version Type Release date
1.0.x-dev Dev Jun 15, 2026