bettertend/backend/README.md

140 lines
4.2 KiB
Markdown

# Atlas CMMS Backend
This directory contains the backend configuration and assets for the Atlas CMMS system.
## Overview
The backend uses the official Atlas CMMS Docker image (`intelloop/atlas-cmms-backend`) which provides:
- **Spring Boot API**: Java 8 based REST API
- **PostgreSQL Integration**: Database for all CMMS data
- **MinIO Integration**: Object storage for files and documents
- **JWT Authentication**: Secure token-based authentication
- **Role-based Access Control**: Multi-level user permissions
- **Email Notifications**: SMTP support for system notifications
- **OAuth2 Support**: Google and Microsoft SSO integration
## Directory Structure
```
backend/
├── logos/ # Custom logo files for branding
├── config/ # Configuration files
├── scripts/ # Utility scripts
└── README.md # This file
```
## Configuration
The backend is configured through environment variables defined in the main `.env` file:
### Database Configuration
- `DB_USER`: PostgreSQL username
- `DB_PASSWORD`: PostgreSQL password
- Database name is set to `atlas` by default
### API Configuration
- `PUBLIC_API_URL`: External API URL (e.g., http://localhost:8080)
- `JWT_SECRET_KEY`: Secret key for JWT token signing (minimum 32 characters)
- `PUBLIC_FRONT_URL`: Frontend URL for CORS and redirects
### Storage Configuration
- `MINIO_ROOT_USER`: MinIO admin username
- `MINIO_ROOT_PASSWORD`: MinIO admin password
- `MINIO_BUCKET_NAME`: Bucket name for file storage
### Email Configuration (Optional)
- `SMTP_HOST`: SMTP server hostname
- `SMTP_PORT`: SMTP server port (default: 587)
- `SMTP_USER`: SMTP username
- `SMTP_PASSWORD`: SMTP password
- `MAIL_FROM`: From email address
### Optional Features
- `ENABLE_SSO`: Enable Single Sign-On (true/false)
- `ENABLE_INVITATIONS`: Enable user invitations (true/false)
### OAuth2 Configuration (Optional)
- `GOOGLE_CLIENT_ID` / `GOOGLE_CLIENT_SECRET`: Google OAuth2 credentials
- `MICROSOFT_CLIENT_ID` / `MICROSOFT_CLIENT_SECRET`: Microsoft OAuth2 credentials
## Custom Branding
Place custom logo files in the `logos/` directory. The backend will mount this directory and make logos available for the application.
Supported formats:
- PNG
- JPG/JPEG
- SVG
## API Endpoints
The Atlas CMMS backend provides comprehensive REST API endpoints:
### Authentication
- `POST /api/auth/signin` - User login
- `POST /api/auth/signup` - User registration
- `POST /api/auth/logout` - User logout
- `POST /api/auth/refresh` - Token refresh
### Work Orders
- `GET /api/work-orders` - List work orders
- `POST /api/work-orders` - Create work order
- `GET /api/work-orders/{id}` - Get work order details
- `PUT /api/work-orders/{id}` - Update work order
- `DELETE /api/work-orders/{id}` - Delete work order
### Assets
- `GET /api/assets` - List assets
- `POST /api/assets` - Create asset
- `GET /api/assets/{id}` - Get asset details
- `PUT /api/assets/{id}` - Update asset
- `DELETE /api/assets/{id}` - Delete asset
### Users
- `GET /api/users` - List users
- `POST /api/users` - Create user
- `GET /api/users/me` - Get current user
- `PUT /api/users/{id}` - Update user
## Health Checks
The backend includes health check endpoints:
- `GET /api/health` - Application health status
- `GET /api/info` - Application information
## Development
### Running Locally
To run the backend locally outside of Docker:
1. Install Java 8 JDK
2. Set up PostgreSQL database
3. Configure environment variables
4. Build and run the Spring Boot application
### Custom Development
If you need to customize the backend:
1. Fork the Atlas CMMS repository
2. Make your changes
3. Build your own Docker image
4. Update the `docker-compose.yml` to use your custom image
## Support
For backend-specific issues:
- Check the Atlas CMMS documentation: https://grashjs.github.io/user-guide/
- File issues at: https://github.com/Grashjs/cmms/issues
- Contact: contact@atlas-cmms.com
## Security Considerations
- Change default passwords in production
- Use strong JWT secret keys (minimum 32 characters)
- Enable HTTPS in production environments
- Regularly update the Docker images
- Secure your PostgreSQL and MinIO instances
- Use proper firewall rules and network security