# @odoo-inspired/core-lib

A comprehensive core library for NestJS backend applications, providing reusable components, utilities, and services to support enterprise-grade application development with a focus on security, flexibility, and scalability.

## Features

- **Auth Module**: JWT-based authentication and authorization with WebSocket support
- **WebSocket Module**: Real-time communication with JWT-authorized channels and role-based access control
- **Data Transfer Module**: Export/import functionality with multiple formats (JSON, CSV, XML) and encryption
- **Database Services**: Prisma and MongoDB integration with transaction support
- **Common Utilities**: Reusable helpers, loggers, and utilities
- **Decorators**: Custom decorators for API endpoints and validations
- **Filters**: Exception filters for standardized error handling
- **Guards**: Custom guards for request validation and authorization
- **Interfaces**: TypeScript interfaces for data modeling
- **Pipes**: Transform and validation pipes
- **Messaging Services**: Event-driven architecture support with message brokers

## Installation

```bash
npm install bb-inspired
```

## Usage

```typescript
import { Module } from '@nestjs/common';
import { 
  AuthModule, 
  WebsocketModule,
  DataTransferModule
} from 'bb-inspired';

@Module({
  imports: [
    // Authentication with JWT support
    AuthModule.register({
      jwt: {
        secret: process.env.JWT_SECRET,
        expiresIn: '1d',
      }
    }),
    
    // WebSocket with JWT-authorized channels
    WebsocketModule.register({
      cors: {
        origin: ['https://your-domain.com'],
        credentials: true
      },
      auth: {
        required: true
      }
    }),
    
    // Data transfer functionality
    DataTransferModule.register({
      basePath: './data/exports',
      defaultFormat: 'json',
      encryption: {
        algorithm: 'aes-256-cbc',
        secretKey: process.env.DATA_ENCRYPTION_KEY
      },
      global: true
    })
  ],
})
export class AppModule {}
```

## Core Components Overview

### Authentication & Security

The Auth Module provides a comprehensive JWT-based authentication system with WebSocket support, refresh tokens, and integration with external auth services.

### Real-time Communication

The WebSocket Module delivers secure real-time communication with JWT authentication, role-based channel authorization, and fine-grained permission control.

### Data Management

The Data Transfer Module offers flexible data export/import capabilities with support for multiple formats, encryption, and various storage options.

### Messaging & Events

The Messaging Services facilitate event-driven architecture with support for both in-memory and distributed message brokers.

## Documentation

For detailed information about each module and its configuration options, check out the following sections:

- [Auth Module](./docs/auth.md)
- [WebSocket Module](./docs/websocket.md)
- [Data Transfer Module](./docs/data-transfer.md)
- [Database Module](./docs/database.md)
- [Messaging Services](./docs/messaging.md)
- [Common Utilities](./docs/common.md)

## License

MIT
