# ProjectManager

**Kind:** Class

**Source:** [`atloria-monorepo/packages/core/src/managers/project-manager.ts`](https://github.com/sherkety/atloria/blob/main/atloria-monorepo/packages/core/src/managers/project-manager.ts#L13)

ProjectManager handles project business logic
This class is framework-agnostic and can be used in any environment

## Methods

| Method | Signature | Returns |
|---|---|---|
| `validate` | `validate(project: Partial<Project>)` | `ValidationResult` |
| `canAccess` | `canAccess(user: User, project: Project)` | `boolean` |
| `getUserRole` | `getUserRole(user: User, project: Project)` | `UserRole | null` |
| `canEdit` | `canEdit(user: User, project: Project)` | `boolean` |
| `canDelete` | `canDelete(user: User, project: Project)` | `boolean` |
| `canCreateDocuments` | `canCreateDocuments(user: User, project: Project)` | `boolean` |
| `canManageSettings` | `canManageSettings(user: User, project: Project)` | `boolean` |
| `canView` | `canView(user: User, project: Project)` | `boolean` |
| `getPermissions` | `getPermissions(user: User, project: Project)` | `void` |

## Where it refuses work

- `ProjectManager` stops the work with an early return when `!this.canAccess(user, project)`, in 5 places.
