MCPcopy Index your code
hub / github.com/Grashjs/cmms

github.com/Grashjs/cmms @v1.7.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.7.0 ↗ · + Follow
6,129 symbols 17,902 edges 1,737 files 39 documented · 1% updated 1d agov1.7.0 · 2026-06-23★ 67337 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Atlas CMMS

Atlas CMMS is a powerful, self-hosted maintenance management system designed for both web and mobile platforms using Docker. It simplifies and automates the management of maintenance activities, making it ideal for IT managers or developers looking to implement solutions that keep their organization's assets running smoothly. Think of it like Jira for technicians.

Example industries

  • Facilities Managers (buildings, property, real estate)
  • Manufacturing/Production Teams (machinery and equipment)
  • Healthcare Facilities (medical equipment maintenance)
  • Hospitality Managers (hotels and resorts)
  • Public Sector (infrastructure and public buildings)
  • Educational Institutions (campus maintenance)
  • Utility Companies (power, water, and energy systems)

Demo website

  • https://atlas-cmms.com

Screenshots:

work_orders_screenshot.png

Features

Work Orders & Maintenance

  • 📝 Create, assign, and track work orders.
  • ⏱️ Log time, set priorities, and track history.
  • 🤖 Automate work orders with triggers.
  • 📊 Export reports and view analytics.

Analytics & Reporting

  • 💼 Work order compliance and cost analysis.
  • 🛠️ Equipment downtime and reliability insights.
  • 💵 Cost trends and labor tracking.

Equipment & Inventory

  • ⚙️ Track equipment, downtime, and maintenance costs.
  • 📦 Manage inventory with stock alerts.
  • 🛒 Automate purchase orders and approvals.

User & Workflow Management

  • 👥 Assign tasks to teams or service providers.
  • 🧑‍💼 Customizable user roles and permissions.
  • 🔄 Define workflows with automation logic.

Locations & Requests

  • 📍 Manage locations with Google Maps integration.
  • 📑 Create and track service requests.

You can check out the complete list of features.

We'd love to have new contributors, so feel free to join us!
Star this repo to support us!

Self-Host / Run locally

⚡ Quick Start (2 minutes)

  1. Download:

  2. docker-compose.yml

  3. .env.example → rename to .env

  4. Run: bash docker-compose up -d

Go to http://localhost:3000 to access Atlas CMMS.

Need customization or production setup? Continue reading below ↓

Set environment variables

Name Required Description Default Value
POSTGRES_USER Yes Postgres user rootUser
POSTGRES_PWD Yes Postgres password mypassword
MINIO_USER Yes MiniO user minio
MINIO_PWD Yes MiniO password minio123
JWT_SECRET_KEY Yes JWT secret key. Generate with openssl rand -base64 32 your_jwt_secret
ENABLE_EMAIL_NOTIFICATIONS No Enables or disables email notifications (true or false). Requires SMTP if enabled. false
INVITATION_VIA_EMAIL No Enables or disables user invitations via email (true or false). Requires SMTP and ENABLE_EMAIL_NOTIFICATIONS if enabled. false
MAIL_TYPE No Mail type: SMTP or SENDGRID smtp
SMTP_HOST No The SMTP host smtp.gmail.com
SMTP_PORT No The SMTP port 587
SMTP_USER No The SMTP username. If using Gmail, Learn how to create an app password (empty)
SMTP_PWD No The SMTP password. If using Gmail, Learn how to create an app password (empty)
SMTP_FROM No The SMTP from address, if different from the username. (empty)
SENDGRID_API_KEY No The Sendgrid API key (empty)
SENDGRID_FROM_EMAIL No The Sendgrid sender email (empty)
ENABLE_CORS No Enables or disables CORS security feature. Recommended to enable it false
ALLOWED_ORGANIZATION_ADMINS No Comma separated email addresses allowed to sign up without being invited, hence allowed to create organizations. Empty means everyone can create an organization (empty)
GOOGLE_KEY No Google Maps API key (empty)
GOOGLE_TRACKING_ID No Google Analytics tracking ID (empty)
PUBLIC_FRONT_URL No Frontend URL in this format http://your.public.ip:3000 . Multiple addresses may open the website but only this one will work with the backend because of CORS. http://localhost:3000
PUBLIC_API_URL No Public API URL in this format http://your.public.ip:8080 http://localhost:8080
STORAGE_TYPE No Type of storage either local MinIO or Google Cloud Storage gcp or minio minio
PUBLIC_MINIO_ENDPOINT No Public Mini endpoint in format http://public.ip:9000 http://localhost:9000
GCP_JSON No The Google Cloud JSON key after following these instructions. (empty)
GCP_PROJECT_ID No The Google Cloud project ID, also found in the GCP_JSON file. (empty)
GCP_BUCKET_NAME No GCP Bucket Name (empty)
MAIL_RECIPIENTS No Comma-separated email addresses of the super admins where to send information emails like new signups. You can provide your email address. (empty)
LICENSE_KEY No Atlas CMMS license key to get access to advanced features. (empty)
ENABLE_SSO No Enables or disables SSO. (true or false ) Requires OAUTH2_PROVIDER, OAUTH2_CLIENT_ID and OAUTH2_CLIENT_SECRET. Make sure to add PUBLIC_FRONT_URL as authorized origin and ${PUBLIC_API_URL}/oauth2/callback/${OAUTH2_PROVIDER} as authorized redirection URI in your Oaut

Extension points exported contracts — how you extend this code

MailService (Interface)
(no doc) [4 implementers]
api/src/main/java/com/grash/service/MailService.java
Job (Interface)
(no doc) [2 implementers]
home/src/models/job.ts
CancellableRequest (Interface)
* Creates a cancellable API request wrapper using AbortController. * Returns a function that manages the abort controll
mobile/utils/cancellableRequest.ts
BrandRawConfig (Interface)
(no doc)
frontend/src/config.ts
RootParamList (Interface)
(no doc)
mobile/types.tsx
OwnProps (Interface)
(no doc)
mobile/components/FileUpload.tsx
AssetHierarchyNode (Interface)
(no doc)
mobile/screens/modals/SelectAssetsModal.tsx
AssetDowntimeState (Interface)
(no doc)
mobile/slices/assetDowntime.ts

Core symbols most depended-on inside this repo

whoami
called by 267
api/src/main/java/com/grash/controller/AuthController.java
findById
called by 204
api/src/main/java/com/grash/service/TeamService.java
showSnackBar
called by 193
frontend/src/contexts/CustomSnackBarContext.tsx
build
called by 177
api/src/main/java/com/grash/advancedsearch/SpecificationBuilder.java
save
called by 146
api/src/main/java/com/grash/service/PartService.java
create
called by 136
api/src/main/java/com/grash/service/TeamService.java
useDispatch
called by 124
frontend/src/store/index.ts
getMessage
called by 121
api/src/main/java/com/grash/exception/CustomException.java

Shape

Function 2,599
Method 1,963
Interface 867
Class 633
Enum 67

Languages

TypeScript55%
Java45%
Kotlin1%

Modules by API surface

api/src/main/java/com/grash/service/WorkOrderService.java58 symbols
mobile/contexts/AuthContext.tsx46 symbols
api/src/main/java/com/grash/service/AssetService.java44 symbols
frontend/src/contexts/JWTAuthContext.tsx40 symbols
frontend/src/content/own/Settings/Features/Workflows/index.tsx36 symbols
api/src/main/java/com/grash/service/UserService.java33 symbols
api/src/main/java/com/grash/repository/WorkOrderRepository.java33 symbols
frontend/src/content/own/Locations/index.tsx31 symbols
mobile/screens/workOrders/WODetailsScreen.tsx28 symbols
frontend/src/content/own/WorkOrders/index.tsx27 symbols
frontend/src/content/own/Inventory/Parts.tsx27 symbols
api/src/main/java/com/grash/utils/Helper.java27 symbols

For agents

$ claude mcp add cmms \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact