Resources
This section details the main features and resources available in the Nine Line application. Each resource is designed to provide a robust, scalable, and secure experience for both end-users and admin

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.
Last updated