# Resources

<figure><img src="https://869823119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FpyWVnmtszkUSqMcP8ips%2Fuploads%2F0HTmNlSros4R6LTASEJe%2F10743451.png?alt=media&#x26;token=d66af5a8-0a74-41a2-99a3-06f5690f1876" alt="" width="128"><figcaption></figcaption></figure>

***

### 1. User Management

* **User Registration:** Allows new users to create an account with name, email, and password.
* **Authentication:** Secure login using JWT (JSON Web Tokens) for session management.
* **User Roles:** Role-Based Access Control (RBAC) with roles such as USER, MANAGER, and ADMIN.
* **Profile Management:** Users can update their personal information and avatar.
* **Password Management:** Secure password storage and update mechanisms.

***

### 2. Appointments

* **Create Appointment:** Users can schedule appointments by selecting a space, date, and time.
* **List Appointments:** View all appointments, filter by user or space, and paginate results.
* **Update Appointment:** Modify appointment details (date, time, space) according to user role and business rules.
* **Delete/Cancel Appointment:** Users can cancel their own appointments; admins/managers can delete any appointment.
* **Approve/Reject Appointment:** Managers and admins can approve or reject pending appointments.
* **Status Tracking:** Appointments have statuses such as PENDING, CONFIRMED, CANCELLED, and REJECTED.

***

### 3. Spaces

* **Create Space:** Admins or managers can register new spaces with details, photos, rules, and amenities.
* **List Spaces:** View all available spaces, with filtering and pagination.
* **Update Space:** Edit space information, including title, description, rules, and amenities.
* **Delete Space:** Remove spaces from the system.

***

### 4. Ratings

* **Create Rating:** Users can rate spaces after using them, providing a score and comments.
* **List Ratings:** View ratings by user or by space.
* **Update Rating:** Edit previously submitted ratings.
* **Delete Rating:** Remove a rating from the system.

***

### 5. RBAC (Role-Based Access Control)

* **Role Assignment:** Assign or revoke roles to users.
* **Permission Management:** Each role has a set of permissions that control access to resources and actions.
* **User Permissions:** Query and audit user permissions for transparency and security.

***

### 6. Authentication & Security

* **JWT Authentication:** Stateless authentication for all protected routes.
* **Refresh Tokens:** Secure refresh token flow for session renewal.
* **Token Blacklisting:** Logout and token invalidation for enhanced security.
* **Environment Variable Validation:** All sensitive configuration is validated at startup.

***

### 7. Caching & Performance

* **Redis Integration:** Caching for user and appointment data to improve performance.
* **Cache Invalidation:** Automatic cache clearing on data changes to ensure consistency.

***

### 8. API Documentation

* **Swagger/OpenAPI:** Comprehensive API documentation for all endpoints, including request/response examples and authentication requirements.
* **Markdown Docs:** Human-readable documentation for quick reference.

***

### 9. Docker & DevOps

* **Dockerized Services:** All components (API, database, Redis) run in isolated containers.
* **Docker Compose:** Easy orchestration of multi-service environments for development and production.
* **Automated Migrations & Seeding:** Database migrations and initial data seeding run automatically on startup.

***

### 10. Testing

* **Unit & Integration Tests:** Coverage for core business logic, repositories, and controllers.
* **In-Memory Repositories:** Fast, isolated tests without external dependencies.

***
