Grashjs/cmms

#1 Self hosted CMMS web & mobile application that allows you to manage enterprise maintenance for free - Computerized Maintenance Management System

TypeScript

789

2,398 commits

updated Sep 26, 2026

See the code

See what people are saying

SourceMessageScoreDate

Atlas CMMS v1.9.0 - Security, performance, PDF improvements & more (r/selfhosted)

Atlas CMMS is an **open-source self-hosted** web and mobile app for **managing maintenance operations**, assets, work orders, preventive maintenance, inventory, locations, and maintenance requests. **GitHub:** [https://github.com/Grashjs/cmms](https://github.com/Grashjs/cmms) We’ve just released…

4

Sep 26, 2026

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

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:
  1. Run:
    docker-compose up -d
    

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

Need customization or production setup? Continue reading below ↓

Set environment variables

NameRequiredDescriptionDefault Value
POSTGRES_USERYesPostgres userrootUser
POSTGRES_PWDYesPostgres passwordmypassword
MINIO_USERYesMiniO userminio
MINIO_PWDYesMiniO passwordminio123
JWT_SECRET_KEYYesJWT secret key. Generate with openssl rand -base64 32your_jwt_secret
PUBLIC_SERVER_URLNoWebsite URL in this format http://your.public.iphttp://localhost:3000
ENABLE_EMAIL_NOTIFICATIONSNoEnables or disables email notifications (true or false). Requires SMTP if enabled.false
INVITATION_VIA_EMAILNoEnables or disables user invitations via email (true or false). Requires SMTP and ENABLE_EMAIL_NOTIFICATIONS if enabled.false
MAIL_TYPENoMail type: SMTP or SENDGRIDsmtp
SMTP_HOSTNoThe SMTP hostsmtp.gmail.com
SMTP_PORTNoThe SMTP port587
SMTP_USERNoThe SMTP username. If using Gmail, Learn how to create an app password(empty)
SMTP_PWDNoThe SMTP password. If using Gmail, Learn how to create an app password(empty)
SMTP_FROMNoThe SMTP from address, if different from the username.(empty)
SENDGRID_API_KEYNoThe Sendgrid API key(empty)
SENDGRID_FROM_EMAILNoThe Sendgrid sender email(empty)
ALLOWED_ORGANIZATION_ADMINSNoComma separated email addresses allowed to sign up without being invited, hence allowed to create organizations. Empty means everyone can create an organization(empty)
GOOGLE_KEYNoGoogle Maps API key(empty)
GOOGLE_TRACKING_IDNoGoogle Analytics tracking ID(empty)
STORAGE_TYPENoType of storage either local MinIO or Google Cloud Storage gcp or miniominio
GCP_JSONNoThe Google Cloud JSON key after following these instructions.(empty)
GCP_PROJECT_IDNoThe Google Cloud project ID, also found in the GCP_JSON file.(empty)
GCP_BUCKET_NAMENoGCP Bucket Name(empty)
MAIL_RECIPIENTSNoComma-separated email addresses of the super admins where to send information emails like new signups. You can provide your email address.(empty)
LICENSE_KEYNoAtlas CMMS license key to get access to advanced features.(empty)
ENABLE_SSONoEnables or disables SSO. (true or false ) Requires OAUTH2_PROVIDER, OAUTH2_CLIENT_ID and OAUTH2_CLIENT_SECRET. Make sure to add PUBLIC_SERVER_URL as authorized origin and ${PUBLIC_SERVER_URL}/api/oauth2/callback/${OAUTH2_PROVIDER} as authorized redirection URI in your Oauth2 provider settingsfalse
OAUTH2_PROVIDERNoOauth2 provider google or microsoft(empty)
OAUTH2_CLIENT_IDNoOauth2 Client ID(empty)
OAUTH2_CLIENT_SECRETNoOauth2 client secret(empty)
LOGO_PATHSNoLogo names in this format. {"dark": "dark.png","white": "white.png", }. Add 2 logos in a folder named logo in the same folder as the docker-compose.yml. Needs a license.(empty)
CUSTOM_COLORSNoCustom colors in JSON format. All colors should be in hexadecimal format. {"emailColors":"#00A0E3","primary":"#EE4B2B","secondary":"#6E759F","success":"#57CA22","warning":"#FFA319","error":"#FF1943","info":"#33C2FF","black":"#223354","white":"#ffffff","primaryAlt":"#000C57"}(empty)
BRAND_CONFIGNoBrand config for white labeling. Requires license. In format { "name": "Quantum Labs", "shortName": "QL", "website": "https://example.io", mail: "contact@example.io" }(empty)
LDAP_ENABLEDNoEnables or disables LDAP. More variables are needed. You can get the full list herefalse

For production deployments, it’s strongly recommended to use unique credentials and not rely on defaults. You should also setup TLS

Mobile app

You can use the Android app or iOS App and configure it with your custom backend server url: ${PUBLIC_SERVER_URL}/api

Getting help

Docs

Usage guide

Super admin docs

Join our Discord server

If you still have questions after reading the docs, concerns, bug reports, etc., please file an issue in this repository's Issue Tracker or email contact@atlas-cmms.com.

Supported languages

  • English
  • Spanish
  • French
  • German
  • Turkish
  • Polish
  • Portuguese (Brazil)
  • Arabic
  • Swedish
  • Italian
  • Russian
  • Dutch
  • Chinese
  • Hungarian
  • Bosnian
  • Japanese

🏗️ Tech Stack

Need Professional Help?

Don't want to handle the maintenance and management yourself? We offer a complete done-for-you service. Please reach out to us

🤝 Looking to contribute?

We welcome contributions! You can help by:

  • ✅ Reporting bugs
  • ✅ Suggesting new features
  • ✅ Improving documentation
  • ✅ Submitting pull requests

Check CONTRIBUTING.md inside each subproject for details.

You can also join our Discord server

Open source licensing info

Atlas CMMS is dual-licensed:

To enable commercial features, you must set a valid LICENSE_KEY.
For commercial licenses, visit atlas-cmms.com/pricing?type=selfhosted or email us at contact@atlas-cmms.com.

asset-management
asset-tracking
cmms
docker
equipment-maintenance
expo
facility-management
gmao
inventory-management
java
maintenance
maintenance-management
preventive-maintenance
project-management
react
react-native
self-hosted
spring-boot
task-management
typescript

Contributors

iib0011

2,303 commits

dado-ca

29 commits

amb0u

21 commits

eldoctormail

15 commits

Grashjs/cmms

#1 Self hosted CMMS web & mobile application that allows you to manage enterprise maintenance for free - Computerized Maintenance Management System

TypeScript

789

2,398 commits

updated Sep 26, 2026

See the code

See what people are saying

SourceMessageScoreDate

Atlas CMMS v1.9.0 - Security, performance, PDF improvements & more (r/selfhosted)

Atlas CMMS is an **open-source self-hosted** web and mobile app for **managing maintenance operations**, assets, work orders, preventive maintenance, inventory, locations, and maintenance requests. **GitHub:** [https://github.com/Grashjs/cmms](https://github.com/Grashjs/cmms) We’ve just released…

4

Sep 26, 2026

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

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:
  1. Run:
    docker-compose up -d
    

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

Need customization or production setup? Continue reading below ↓

Set environment variables

NameRequiredDescriptionDefault Value
POSTGRES_USERYesPostgres userrootUser
POSTGRES_PWDYesPostgres passwordmypassword
MINIO_USERYesMiniO userminio
MINIO_PWDYesMiniO passwordminio123
JWT_SECRET_KEYYesJWT secret key. Generate with openssl rand -base64 32your_jwt_secret
PUBLIC_SERVER_URLNoWebsite URL in this format http://your.public.iphttp://localhost:3000
ENABLE_EMAIL_NOTIFICATIONSNoEnables or disables email notifications (true or false). Requires SMTP if enabled.false
INVITATION_VIA_EMAILNoEnables or disables user invitations via email (true or false). Requires SMTP and ENABLE_EMAIL_NOTIFICATIONS if enabled.false
MAIL_TYPENoMail type: SMTP or SENDGRIDsmtp
SMTP_HOSTNoThe SMTP hostsmtp.gmail.com
SMTP_PORTNoThe SMTP port587
SMTP_USERNoThe SMTP username. If using Gmail, Learn how to create an app password(empty)
SMTP_PWDNoThe SMTP password. If using Gmail, Learn how to create an app password(empty)
SMTP_FROMNoThe SMTP from address, if different from the username.(empty)
SENDGRID_API_KEYNoThe Sendgrid API key(empty)
SENDGRID_FROM_EMAILNoThe Sendgrid sender email(empty)
ALLOWED_ORGANIZATION_ADMINSNoComma separated email addresses allowed to sign up without being invited, hence allowed to create organizations. Empty means everyone can create an organization(empty)
GOOGLE_KEYNoGoogle Maps API key(empty)
GOOGLE_TRACKING_IDNoGoogle Analytics tracking ID(empty)
STORAGE_TYPENoType of storage either local MinIO or Google Cloud Storage gcp or miniominio
GCP_JSONNoThe Google Cloud JSON key after following these instructions.(empty)
GCP_PROJECT_IDNoThe Google Cloud project ID, also found in the GCP_JSON file.(empty)
GCP_BUCKET_NAMENoGCP Bucket Name(empty)
MAIL_RECIPIENTSNoComma-separated email addresses of the super admins where to send information emails like new signups. You can provide your email address.(empty)
LICENSE_KEYNoAtlas CMMS license key to get access to advanced features.(empty)
ENABLE_SSONoEnables or disables SSO. (true or false ) Requires OAUTH2_PROVIDER, OAUTH2_CLIENT_ID and OAUTH2_CLIENT_SECRET. Make sure to add PUBLIC_SERVER_URL as authorized origin and ${PUBLIC_SERVER_URL}/api/oauth2/callback/${OAUTH2_PROVIDER} as authorized redirection URI in your Oauth2 provider settingsfalse
OAUTH2_PROVIDERNoOauth2 provider google or microsoft(empty)
OAUTH2_CLIENT_IDNoOauth2 Client ID(empty)
OAUTH2_CLIENT_SECRETNoOauth2 client secret(empty)
LOGO_PATHSNoLogo names in this format. {"dark": "dark.png","white": "white.png", }. Add 2 logos in a folder named logo in the same folder as the docker-compose.yml. Needs a license.(empty)
CUSTOM_COLORSNoCustom colors in JSON format. All colors should be in hexadecimal format. {"emailColors":"#00A0E3","primary":"#EE4B2B","secondary":"#6E759F","success":"#57CA22","warning":"#FFA319","error":"#FF1943","info":"#33C2FF","black":"#223354","white":"#ffffff","primaryAlt":"#000C57"}(empty)
BRAND_CONFIGNoBrand config for white labeling. Requires license. In format { "name": "Quantum Labs", "shortName": "QL", "website": "https://example.io", mail: "contact@example.io" }(empty)
LDAP_ENABLEDNoEnables or disables LDAP. More variables are needed. You can get the full list herefalse

For production deployments, it’s strongly recommended to use unique credentials and not rely on defaults. You should also setup TLS

Mobile app

You can use the Android app or iOS App and configure it with your custom backend server url: ${PUBLIC_SERVER_URL}/api

Getting help

Docs

Usage guide

Super admin docs

Join our Discord server

If you still have questions after reading the docs, concerns, bug reports, etc., please file an issue in this repository's Issue Tracker or email contact@atlas-cmms.com.

Supported languages

  • English
  • Spanish
  • French
  • German
  • Turkish
  • Polish
  • Portuguese (Brazil)
  • Arabic
  • Swedish
  • Italian
  • Russian
  • Dutch
  • Chinese
  • Hungarian
  • Bosnian
  • Japanese

🏗️ Tech Stack

Need Professional Help?

Don't want to handle the maintenance and management yourself? We offer a complete done-for-you service. Please reach out to us

🤝 Looking to contribute?

We welcome contributions! You can help by:

  • ✅ Reporting bugs
  • ✅ Suggesting new features
  • ✅ Improving documentation
  • ✅ Submitting pull requests

Check CONTRIBUTING.md inside each subproject for details.

You can also join our Discord server

Open source licensing info

Atlas CMMS is dual-licensed:

To enable commercial features, you must set a valid LICENSE_KEY.
For commercial licenses, visit atlas-cmms.com/pricing?type=selfhosted or email us at contact@atlas-cmms.com.

asset-management
asset-tracking
cmms
docker
equipment-maintenance
expo
facility-management
gmao
inventory-management
java
maintenance
maintenance-management
preventive-maintenance
project-management
react
react-native
self-hosted
spring-boot
task-management
typescript

Contributors

iib0011

2,303 commits

dado-ca

29 commits

amb0u

21 commits

eldoctormail

15 commits

Languages

TypeScript

69.4%

Java

29.3%