lab-resource-manager 1.1.0

GPU and room resource management system with Google Calendar and Slack integration
Documentation

lab-resource-manager

Crates.io Documentation License

A resource reservation management system for laboratories.

日本語 README

Overview

  • Resource Reservation Management: Manage schedules for resources such as GPU servers and rooms
  • Change Notifications: Get notified when reservations are created, updated, or deleted
  • Identity Linking: Map user identities across different systems for enhanced notifications

Default Implementations

Component Implementation
Resource Repository Google Calendar
Notifications Slack
User Interface Slack Bot
Access Control Google Calendar ACL

Quick Start

Architecture

This project follows Clean Architecture (DDD + Hexagonal Architecture):

src/
├── domain/                  # Domain layer (business logic)
│   ├── aggregates/          # Aggregates (ResourceUsage, IdentityLink)
│   ├── common/              # Shared Kernel (EmailAddress, etc.)
│   ├── ports/               # Ports (Repository, Notifier traits)
│   └── errors.rs            # Domain errors
├── application/             # Application layer (use cases)
│   └── usecases/            # Notify, GrantAccess use cases
├── infrastructure/          # Infrastructure layer (implementations)
│   ├── repositories/        # Repository implementations
│   ├── notifier/            # Notification implementations
│   ├── resource_collection_access/  # Access control implementations
│   └── config/              # Configuration management
├── interface/               # Interface layer
│   └── slack/               # Slack bot interface
└── bin/
    └── lab-resource-manager.rs  # Entry point

Development

Prerequisites

  • Rust 1.90+

Build & Test

cargo build
cargo test
cargo fmt
cargo clippy

Roadmap

  • Resource-based notification routing
  • Identity Linking
  • Access management interface
  • Reservation creation via Slack commands
  • Natural language resource management (LLM agent)

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.