From 962ee812bd8bf8628d2bb8f83856281bd3cd2bca Mon Sep 17 00:00:00 2001 From: "CITE\\dtziotzios" Date: Thu, 19 Sep 2024 17:12:18 +0300 Subject: [PATCH] docs update --- .../documentation/application/introduction.md | 137 ++++- .../for-devs/authentication/_category_.json | 8 - .../for-devs/authentication/index.md | 5 - .../for-devs/authentication/keycloak.md | 6 - .../documentation/for-devs/integration.md | 185 ++++++ .../for-devs/{apis => }/swagger.md | 26 +- .../getting-started/architecture.drawio | 218 +++++++ .../getting-started/architecture.md | 145 ++++- .../getting-started/architecture.png | Bin 0 -> 149096 bytes .../configuration}/_category_.json | 4 +- .../configuration/application.md | 31 + .../getting-started/configuration/docker.md | 31 + .../configuration}/index.md | 2 +- .../getting-started/configuration/keycloak.md | 558 ++++++++++++++++++ .../getting-started/installation.md | 512 ++++++---------- .../getting-started/introduction.md | 105 ++++ 16 files changed, 1591 insertions(+), 382 deletions(-) delete mode 100644 docs/docs/documentation/for-devs/authentication/_category_.json delete mode 100644 docs/docs/documentation/for-devs/authentication/index.md delete mode 100644 docs/docs/documentation/for-devs/authentication/keycloak.md create mode 100644 docs/docs/documentation/for-devs/integration.md rename docs/docs/documentation/for-devs/{apis => }/swagger.md (89%) create mode 100644 docs/docs/documentation/getting-started/architecture.drawio create mode 100644 docs/docs/documentation/getting-started/architecture.png rename docs/docs/documentation/{for-devs/apis => getting-started/configuration}/_category_.json (54%) create mode 100644 docs/docs/documentation/getting-started/configuration/application.md create mode 100644 docs/docs/documentation/getting-started/configuration/docker.md rename docs/docs/documentation/{for-devs/apis => getting-started/configuration}/index.md (67%) create mode 100644 docs/docs/documentation/getting-started/configuration/keycloak.md diff --git a/docs/docs/documentation/application/introduction.md b/docs/docs/documentation/application/introduction.md index 33034f2ad..2809ed9b8 100644 --- a/docs/docs/documentation/application/introduction.md +++ b/docs/docs/documentation/application/introduction.md @@ -3,4 +3,139 @@ sidebar_position: 1 description: A brief introduction to the core entities of the platform --- -# Introduction \ No newline at end of file +# Introduction + + + + + +## 🧩 **Core Concepts** + +OpenCDMP is built around four main entities that work together to provide a structured and flexible approach to managing OMPs: + +### **1. Blueprints** + +Blueprints define the overall structure of a **Plan** by specifying its **Sections** and the content within each section. + +- **Sections**: Each Blueprint is divided into multiple Sections, which can include various input fields and optional **Descriptions**. +- **Customization**: Tailor Blueprints to standardize the format and requirements of OMPs according to industry standards or specific project needs. + +### **2. Plans** + +A Plan is the primary entity and main output of the OpenCDMP platform, representing a comprehensive OMP. + +- **Multiple Descriptions**: Contains multiple **Descriptions** of various inputs or outputs. +- **Structured by Blueprints**: Inherits the structure and content defined by the selected Blueprint, ensuring consistency and completeness. +- **Collaboration Features**: Invite users to a Plan with different roles and access rights—Viewer, Contributor, Reviewer, etc. + - **Access Levels**: Grant access to the entire Plan or specific Sections for fine-grained control. +- **Export and Deposit Options**: + - **Export**: Export the Plan in various formats (XML, JSON, DOCX, PDF) for both human and machine readability. + - **Custom Exports**: Use the pluggable export mechanism to implement your own export plugins. + - **Deposit**: Deposit OMPs directly to repositories for DOI assignment. + - **Custom Deposits**: Use the pluggable deposit mechanism to implement your own deposit plugins for different repositories. + +### **3. Description Templates** + +Description Templates define the structure of a **Description** within a Plan, supporting a variety of input types to capture detailed information. + +- **Supported Input Types**: + - **Select**: Dropdown menus for predefined options. + - **Boolean Decision**: Yes/No choices. + - **RadioBox and CheckBox**: Multiple-choice selections. + - **Text**: Open-ended text fields. + - **File Upload**: Attach documents or files. + - **Date**: Calendar selection for dates. + - **External References**: Integration with external data sources via APIs. +- **Customization**: Configure Description Templates to meet specific data collection needs. + +### **4. Descriptions** + +Descriptions are detailed entries within a Plan that provide information about specific inputs or outputs. + +- **Integration with Sections**: Included in various Sections of a Plan as defined by the Blueprint. +- **Detailed Information**: Offer a granular level of detail for comprehensive documentation. + + + + diff --git a/docs/docs/documentation/for-devs/authentication/_category_.json b/docs/docs/documentation/for-devs/authentication/_category_.json deleted file mode 100644 index 15a248169..000000000 --- a/docs/docs/documentation/for-devs/authentication/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Authentication", - "position": 1, - "link": { - "type": "doc", - "id": "index" - } -} \ No newline at end of file diff --git a/docs/docs/documentation/for-devs/authentication/index.md b/docs/docs/documentation/for-devs/authentication/index.md deleted file mode 100644 index a12aea0d0..000000000 --- a/docs/docs/documentation/for-devs/authentication/index.md +++ /dev/null @@ -1,5 +0,0 @@ -# Authentication - -import DocCardList from '@theme/DocCardList'; - - \ No newline at end of file diff --git a/docs/docs/documentation/for-devs/authentication/keycloak.md b/docs/docs/documentation/for-devs/authentication/keycloak.md deleted file mode 100644 index a8a89aa69..000000000 --- a/docs/docs/documentation/for-devs/authentication/keycloak.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -sidebar_position: 1 -description: A guide on how Keycloak is configured as an auth provider for the platform ---- - -# Keycloak \ No newline at end of file diff --git a/docs/docs/documentation/for-devs/integration.md b/docs/docs/documentation/for-devs/integration.md new file mode 100644 index 000000000..3d1fe4245 --- /dev/null +++ b/docs/docs/documentation/for-devs/integration.md @@ -0,0 +1,185 @@ +--- +sidebar_position: 1 +description: A guide for integration with the platform +--- +# Integration +# Integrating with OpenCDMP + +This documentation provides developers with guidelines on how to use the OAuth2 protocol offered by **Keycloak** to authenticate and integrate with the **OpenCDMP** platform. By following this guide, you will be able to securely access OpenCDMP's APIs and integrate your applications or services. + +--- + +## Prerequisites + +- **Access to OpenCDMP**: You should have access to an instance of the OpenCDMP platform. +- **Client Application**: An application or service that needs to integrate with OpenCDMP APIs. +- **Access to OpenCDMP Administrators**: You'll need to request client credentials from the OpenCDMP/Keycloak Admins. + +--- + +## Steps to Integrate + +### 1. Request OAuth2 Client Credentials + +Contact the OpenCDMP/Keycloak administrators and request the following: + +- **Client ID**: A unique identifier for your application. +- **Client Secret**: A secret key associated with your Client ID. + +Provide the following information to the administrators: + +- **Application Name**: The name of your application or service. +- **Required Scopes**: The application scopes that you want to request access for. +- **Redirect URIs** (if applicable): The URLs to which Keycloak will redirect after authentication (required for web applications using the Authorization Code flow). + +### 2. Choose the Appropriate OAuth2 Flow + +Depending on your application's type, select one of the OAuth2 flows: + +- **Authorization Code Flow**: For web applications where users authenticate via a browser. +- **Client Credentials Flow**: For server-to-server communication without user interaction. + +### 3. Configure Your Application + +Use the obtained Client ID and Client Secret to configure your application: + +- **OAuth2 Endpoints**: + + - **Authorization Endpoint**: `https://(KEYCLOAK_URL)/auth/realms/(REALM_NAME)/protocol/openid-connect/auth` + - **Token Endpoint**: `https://(KEYCLOAK_URL)/auth/realms/(REALM_NAME)/protocol/openid-connect/token` + - **User Info Endpoint**: `https://(KEYCLOAK_URL)/auth/realms/(REALM_NAME)/protocol/openid-connect/userinfo` + + Replace `(KEYCLOAK_URL)` with the Keycloak server URL and `(REALM_NAME)` with the realm name used by OpenCDMP. + +- **Scopes**: Ensure that the necessary scopes are included in your requests, such as `openid`, `profile`, `email`, or any custom scopes provided by the administrators. + +### 4. Implement the OAuth2 Flow + +#### Authorization Code Flow (For Web Applications) + +1. **Redirect User to Authorization Endpoint**: + + - Construct a URL to the Authorization Endpoint with the following query parameters: + + - `client_id`: Your Client ID. + - `redirect_uri`: Your application's redirect URI. + - `response_type`: `code` + - `scope`: Requested scopes (e.g., `openid profile email`). + +2. **Handle Authorization Response**: + + - After the user authenticates, Keycloak will redirect to your `redirect_uri` with a `code` parameter. + +3. **Exchange Authorization Code for Access Token**: + + - Make a POST request to the Token Endpoint with: + + - `grant_type`: `authorization_code` + - `code`: The authorization code received. + - `redirect_uri`: Same as above. + - `client_id` and `client_secret`: Your credentials. + +4. **Store and Use the Access Token**: + + - Receive the access token and optional refresh token. + - Use the access token to access OpenCDMP APIs. + +#### Client Credentials Flow (For Server-to-Server Communication) + +1. **Request Access Token**: + + - Make a POST request to the Token Endpoint with: + + - `grant_type`: `client_credentials` + - `client_id` and `client_secret`: Your credentials. + +2. **Use the Access Token**: + + - Receive the access token. + - Use the token to authenticate API requests to OpenCDMP. + +### 5. Access OpenCDMP APIs + +With the access token, include it in the `Authorization` header of your HTTP requests: + +```http +Authorization: Bearer {access_token} +``` + + Replace `access_token` with the token obtained from Keycloak. + +### 6. Refresh Tokens (If Applicable) + +If your application receives a refresh token, you can use it to obtain new access tokens without re-authenticating: + + - Make a POST request to the Token Endpoint with: + - `grant_type`: `refresh_token` + - `refresh_token`: The refresh token received. + - `client_id` and `client_secret`: Your credentials. + + +## Additional Considerations + +- **Token Validation**: It's recommended to validate tokens before use, either by decoding the JWT or using Keycloak's introspection endpoint. +- **SSL/TLS**: Ensure all communication with Keycloak and OpenCDMP APIs is over HTTPS to protect credentials and tokens. +- **Error Handling**: Implement proper error handling for authentication failures and token expiration. +- **Scope Management**: Request only the scopes necessary for your application to follow the principle of least privilege. +- **Logout**: If your application requires user logout functionality, redirect users to the Keycloak logout endpoint. +- **Refresh Tokens**: Be cautious with refresh tokens and store them securely to prevent unauthorized access. + +--- + +## Sample Code Snippets + +### Requesting an Access Token (Client Credentials Flow) + +```bash +curl -X POST \ + 'https://(KEYCLOAK_URL)/auth/realms/(REALM_NAME)/protocol/openid-connect/token' \ + -H 'Content-Type: application/x-www-form-urlencoded' \ + -d 'grant_type=client_credentials' \ + -d 'client_id=YOUR_CLIENT_ID' \ + -d 'client_secret=YOUR_CLIENT_SECRET' +``` + +### Accessing an OpenCDMP API Endpoint + +```bash +curl -H "Authorization: Bearer {access_token}" \ + 'https://(OPENCMP_API_URL)/api/endpoint' +``` + +--- + +## Contacting OpenCDMP/Keycloak Administrators + +When reaching out to OpenCDMP/Keycloak administrators, provide the following information: + +- **Your Name and Contact Information** +- **Purpose of Integration**: Brief description of your application's use case. +- **Required Access**: Specify the OpenCDMP resources your application needs to access. +- **Redirect URIs**: For web applications using the Authorization Code flow. +- **Desired Scopes**: Any specific scopes your application requires. + +--- + +## Useful Links + +- **Keycloak Documentation**: [https://www.keycloak.org/documentation](https://www.keycloak.org/documentation) +- **OAuth2 Specification**: [https://oauth.net/2/](https://oauth.net/2/) +- **OpenID Connect Specification**: [https://openid.net/connect/](https://openid.net/connect/) +- **OpenCDMP API Reference**: [https://opencdmp.org/api-docs](https://opencdmp.org/api-docs) + +--- + +## Support + +If you have any questions or need assistance with integration: + +- **Email**: support@opencdmp.org + +- **GitHub Issues**: [https://github.com/YourUsername/OpenCDMP/issues](https://github.com/YourUsername/OpenCDMP/issues) + +--- + +**Note**: This guide assumes you have basic knowledge of OAuth2 and HTTP requests. Always ensure you follow best security practices when handling client credentials and access tokens. \ No newline at end of file diff --git a/docs/docs/documentation/for-devs/apis/swagger.md b/docs/docs/documentation/for-devs/swagger.md similarity index 89% rename from docs/docs/documentation/for-devs/apis/swagger.md rename to docs/docs/documentation/for-devs/swagger.md index 4e689d7d9..d495f4e0a 100644 --- a/docs/docs/documentation/for-devs/apis/swagger.md +++ b/docs/docs/documentation/for-devs/swagger.md @@ -7,22 +7,12 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import Admonition from '@theme/Admonition'; -# Swagger +# Swagger UI -The swagger UI is available at the `/swagger-ui/index.html` url. It contains documentation for the following API endpoints. +The Swagger UI is available at the `/swagger-ui/index.html` url. It contains documentation for the following API endpoints. - - - - **/api/public/dmps/\*\*** - - **/api/public/descriptions/\*\*** - - -

These endpoints do not require authentication.

-
- -
- + - **/api/dmp/\*\*** - **/api/description/\*\*** @@ -44,4 +34,14 @@ The swagger UI is available at the `/swagger-ui/index.html` url. It contains doc + + + - **/api/public/dmps/\*\*** + - **/api/public/descriptions/\*\*** + + +

These endpoints do not require authentication.

+
+ +
\ No newline at end of file diff --git a/docs/docs/documentation/getting-started/architecture.drawio b/docs/docs/documentation/getting-started/architecture.drawio new file mode 100644 index 000000000..d901685b9 --- /dev/null +++ b/docs/docs/documentation/getting-started/architecture.drawio @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/docs/documentation/getting-started/architecture.md b/docs/docs/documentation/getting-started/architecture.md index cd0908294..cd47e3fb7 100644 --- a/docs/docs/documentation/getting-started/architecture.md +++ b/docs/docs/documentation/getting-started/architecture.md @@ -1,8 +1,149 @@ --- -sidebar_position: 3 +sidebar_position: 2 description: A guide for the platform architecture --- -# Architecture +# System Architecture +OpenCDMP is designed using a **microservices architecture**, leveraging Docker containers for deployment and scalability. This approach allows each component of the system to be developed, deployed, and scaled independently, ensuring flexibility and robustness in managing Output Management Plans (OMPs). +## Overview + +The architecture comprises multiple services, each responsible for specific functionalities within the OpenCDMP platform. These services communicate with each other through well-defined APIs and messaging queues, ensuring seamless integration and data flow. + +Below is a list of the services included in the architecture: + +- **Nginx Reverse Proxy**: Acts as the entry point and reverse proxy. It is the only service that needs external connectivity. +- **API Service**: Main APIs handling the core business logic. +- **Webapp Service**: Frontend of the application, providing the user interface. +- **Notification Service**: Handles notifications (Email and In-App). *Closed source project, but with a free-to-use license.* +- **Annotation Service**: Manages annotations (comments) and reviews. *Closed source project, but with a free-to-use license.* +- **Repository Deposit Services**: Multiple services acting as deposit plugins to repositories for DOI assignment. +- **File Transformation Services**: Multiple services acting as export/import plugins for file transformations. +- **Keycloak**: Authentication server for managing users and roles. +- **PostgreSQL**: Main database storage for persisting data. +- **RabbitMQ**: Message broker for microservices intercommunication. +- **Elasticsearch**: Used for indexing and searching data. +- **PDF Generator Service**: Generates PDF documents from Plans. + +The following diagram provides a high-level overview of the architecture: + +![Export plans](architecture.png) + +### **Services Breakdown** + +#### **Nginx Reverse Proxy** + +- **Purpose**: Acts as the gateway to the application, routing incoming HTTP/HTTPS requests to the appropriate internal services. +- **Features**: + - SSL termination + - Load balancing + - Reverse proxying to backend services +- **Notes**: + - It is the only service exposed to the external network. + - Enhances security by hiding internal services from direct external access. + +#### **API Service** + +- **Purpose**: Serves as the main backend, handling core business logic and API endpoints. +- **Features**: + - Processes requests from the Webapp Service. + - Interacts with PostgreSQL for data persistence. + - Interacts with Elastisearch for indexing. + - Evaluating authentication against Keyclaok. + - Communicates with other microservices via RabbitMQ. + - Implements RESTful APIs for frontend consumption. + +#### **Webapp Service** + +- **Purpose**: Provides the frontend user interface for OpenCDMP. +- **Features**: + - Built using modern web technologies. + - Communicates with the API Service. + - Offers a user-friendly interface for managing Plans, Blueprints, Templates, etc. + +#### **Notification Service** + +- **Purpose**: Manages email and in-app notifications. +- **Features**: + - Sends notifications based on events (e.g., Annotations added, Plan updates, Invitations). + - *Closed source*, but available under a free-to-use license. +- **Notes**: + - Communicates with other services via RabbitMQ. + - Configurable notification preferences. + - Configurable notification templates. + +#### **Annotation Service** + +- **Purpose**: Handles annotations (comments) and the review process. +- **Features**: + - Allows reviewers to add annotations to Plans or specific Sections. + - Tracks annotation statuses for lifecycle management. + - *Closed source*, but available under a free-to-use license. +- **Notes**: + - Enhances collaboration and quality control. + +#### **Repository Deposit Services** + +- **Purpose**: Deposits OMPs to external repositories for DOI assignment. +- **Features**: + - Multiple services acting as plugins for different repositories. + - Pluggable mechanism to implement custom deposit plugins. +- **Examples**: + - Integration with repositories like Zenodo, Dataverse, etc. + +#### **File Transformation Services** + +- **Purpose**: Manages export/import functionalities. +- **Features**: + - Supports exporting Plans and Descriptions in formats like XML, JSON, DOCX, and PDF. + - Multiple services acting as plugins for different file transformations. + - Pluggable mechanism to implement custom export/import plugins. + +#### **Keycloak** + +- **Purpose**: Provides authentication and authorization. +- **Features**: + - Manages user identities, roles, and permissions. + - Supports protocols like OpenID Connect, OAuth 2.0, and SAML 2.0. +- **Notes**: + - Centralized security management. + - Integrates with the Webapp and API Services for secure access control. + +#### **PostgreSQL** + +- **Purpose**: Main relational database for storing application data. +- **Features**: + - Stores data for Plans, Users, Templates, Annotations, etc. + - Provides data integrity and transactional support. +- **Notes**: + - Ensures reliable data persistence. + - Scalable and supports complex queries. + +#### **RabbitMQ** + +- **Purpose**: Message broker facilitating communication between microservices. +- **Features**: + - Supports asynchronous messaging. + - Enhances scalability and decouples services. +- **Notes**: + - Critical for inter-service communication. + - Improves system resilience. + +#### **Elasticsearch** + +- **Purpose**: Provides powerful search and indexing capabilities. +- **Features**: + - Enables full-text search over various data fields. + - Real-time data indexing. +- **Notes**: + - Enhances user experience with quick and efficient search functionality. + +#### **PDF Generator Service** + +- **Purpose**: Generates PDF documents from Plans. +- **Features**: + - Converts Plans into professional PDF formats. + - Supports custom templates and styling. +- **Notes**: + - Facilitates easy sharing and presentation of Plans. \ No newline at end of file diff --git a/docs/docs/documentation/getting-started/architecture.png b/docs/docs/documentation/getting-started/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..08afbdacc201400596877f4c1fef94ebf00c80ff GIT binary patch literal 149096 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 P0RQBrRisK^n+EFrom text box add the email that will be used by the application to send emails. (ex. no-reply@openaire.eu) -2. On the "Connection & Authentication" section add the required information for the email server used for the application. Then save and Test connection. +- **Development**: -#### User registration: -1. Add the groups "tenant-default" and "role-user". The paths should be " /opendmp-app/tenant-role-user/tenant-default" and "/opendmp-app/role-user" respectively. This will be the default roles for every new user that gets created. +- **Language and Framework**: Use a language and framework compatible with the rest of the system (e.g., Python with Flask or Node.js with Express). +- **API Design**: Design APIs that adhere to RESTful principles and OpenCDMP's API specifications. -## 8) Identity Providers: -1. Google IDP: - 1. On the Settings section add the required creds: - 1. Redirect URI: https://(KEYCLOAK_URL)/realms/(REALM_NAME)/broker/google/endpoint - 2. Client ID: (GOOGLE_CLIENT_ID) - 3. Client Secret: (GOOGLE_CLIENT_SECRET) - 2. After Creating the IDP, on the Mappers section add a mapper: - 1. Name: **identity_provider** - 2. Sync mode override: **Force** - 3. Mapper type: **Hardcoded User Session Attribute** - 4. User Session Attribute: **identity_provider** - 5. User Session Attribute Value **google** -2. OpenAIRE AAI Beta or ((IDP_NAME)): - 1. Create a "Keycloak OpenID Connect" type IDP - 2. Redirect URI: https://(KEYCLOAK_URL)/realms/(REALM_NAME)/broker/(ALIAS_NAME)/endpoint - 3. Alias: (ALIAS_NAME) - 4. Display name: (IDP_NAME) - 5. Use discovery endpoint: **Off** - 6. Authorization URL: https://beta.aai.openaire.eu/auth/realms/openaire/protocol/openid-connect/auth - 7. Token URL: https://beta.aai.openaire.eu/auth/realms/openaire/protocol/openid-connect/token - 8. Logout URL: https://beta.aai.openaire.eu/auth/realms/openaire/protocol/openid-connect/logout - 9. User Info URL: https://beta.aai.openaire.eu/auth/realms/openaire/protocol/openid-connect/userinfo - 10. Issuer: https://beta.aai.openaire.eu/auth/realms/openaire - 11. Validate Signatures: **On** - 12. Use JWKS URL: **On** - 13. JWKS URL: https://beta.aai.openaire.eu/auth/realms/openaire/protocol/openid-connect/certs - 14. Use PKCE: **Off** - 15. Client authentication: **Client secret sent as post** - 16. Client ID: (CLIENT_ID) - 17. Client Secret: (CLIENT_SECRET) - 18. Client assertion signature algorithm: **Algorithm not specified** - 19. Store tokens: **Off** - 20. Stored tokens readable: **Off** - 21. Access Token is JWT: **Off** - 22. Trust Email: **Off** - 23. Account linking only: **Off** - 24. Hide on login page: **Off** - 25. Verify essential claim: **Off** - 26. First login flow override **first broker login** - 27. Post login flow: **None** - 28. Sync mode: **Import** +- **Communication**: +- **Message Broker**: Utilize RabbitMQ for inter-service communication. +- **API Endpoints**: Expose necessary endpoints for other services to interact. + +- **Deployment**: + +- **Containerization**: Dockerize the new service. +- **Compose Integration**: Add the service to the `docker-compose.yml` file. +- **Environment Variables**: Define necessary environment variables for configuration. + +#### **Guidelines for Scaling and Extending OpenCDMP** + +1. **Assess Requirements**: + + - **Scalability Needs**: Identify which services require scaling based on performance metrics. + - **Extension Needs**: Determine functionalities that need to be added or customized. + +2. **Plan Infrastructure**: + + - **Resource Allocation**: Ensure adequate CPU, memory, and storage resources. + - **Network Configuration**: Plan for network policies, load balancers, and firewalls. + +3. **Implement Scaling**: + + - **Service Scaling**: Use Docker Compose or orchestration tools to scale services. + - **Database Scaling**: Consider database replication or clustering if necessary. + +4. **Develop and Integrate Plugins**: + + - **Follow Standards**: Adhere to OpenCDMP's development guidelines for consistency. + - **Testing**: Thoroughly test plugins in a staging environment before deployment. + - **Documentation**: Document the plugin's functionality, configuration, and deployment steps. + +5. **Update Configuration Files**: + + - **Docker Compose**: Add new services and adjust scaling configurations. + - **Environment Variables**: Update `.env` files with new settings. + - **Nginx Configuration**: Modify `nginx.conf` to route traffic to new service instances. + +6. **Deploy Changes**: + + - **Rolling Updates**: Deploy changes with minimal downtime. + - **Monitoring**: Keep an eye on logs and metrics during deployment. + +7. **Maintain and Optimize**: + + - **Regular Monitoring**: Continuously monitor system performance. + - **Feedback Loop**: Collect user feedback to identify areas for improvement. + - **Iterative Enhancement**: Regularly update and optimize services and plugins. + +#### **Example: Scaling the API Service** + +1. **Scale the Service**: + + +#### **Docker Compose** + +- **Purpose**: Orchestrates the deployment of multiple Docker containers. +- **Features**: + - Manages service dependencies. + - Simplifies configuration with `docker-compose.yml` files. +- **Deployment Steps**: + 1. Install Docker and Docker Compose. + 2. Clone the OpenCDMP repository containing the Docker Compose files. + 3. Configure environment variables as needed. + 4. Run `docker-compose up -d` to start all services. + 5. Access the application via the Nginx reverse proxy URL. + +### **Microservices Interaction** + +#### **Communication Flow** + +- **External Requests**: Users interact with the Webapp Service through the Nginx Reverse Proxy. +- **Frontend to Backend**: The Webapp Service communicates with the API Service for all backend operations. +- **Authentication**: Keycloak handles authentication requests from both the Webapp and API Services. +- **Inter-Service Communication**: Services like Notification Service, Annotation Service, Repository Deposit Services, and File Transformation Services communicate with the API Service and each other via RabbitMQ. +- **Database Operations**: The API Service interacts with PostgreSQL for CRUD operations. +- **Search Operations**: The API Service communicates with Elasticsearch for search functionalities. +- **Notifications**: Triggered by events in the API Service and handled by the Notification Service. --> \ No newline at end of file diff --git a/docs/docs/documentation/getting-started/introduction.md b/docs/docs/documentation/getting-started/introduction.md index 4ed2e23c7..c0234c844 100644 --- a/docs/docs/documentation/getting-started/introduction.md +++ b/docs/docs/documentation/getting-started/introduction.md @@ -5,4 +5,109 @@ description: A brief introduction to the platform features # Introduction +**OpenCDMP** is an open and extensible software platform designed to simplify the management, monitoring, and maintenance of **Output Management Plans (OMPs)**, such as **Data Management Plans (DMPs)** and **Software Management Plans (SMPs)**. It provides a flexible and customizable environment that streamlines the complex processes involved in handling OMPs, ensuring efficiency, compliance, and collaboration across various projects and organizations. + +## 🚀 **Key Features** + +- **Modular Architecture**: Easily extend the platform with new modules and plugins to meet specific needs. +- **Evaluation via Plugins**: Perform evaluation through customizable plugins tailored to specific standards and requirements. +- **Collaborative Environment**: Supports teamwork with multi-user access, version control, and change tracking. +- **Role-Based Access Control**: Invite users to a Plan with different roles—Viewer, Contributor, Reviewer, etc.—and set access rights at the Plan or Section level. +- **Review and Annotation System**: Reviewers can add annotations (comments) to Plans or Desriptions, with statuses to track their lifecycle. +- **Notification Features**: Receive Email and In-App notifications for updates, comments, and changes to Plans or Desriptions you're involved in. +- **Flexible Export Options**: Export Plans in human and machine-readable formats like XML, JSON, DOCX, and PDF. +- **Pluggable Export Mechanism**: Implement custom export plugins to suit specific requirements. +- **Repository Deposits for DOI Assignment**: Deposit OMPs directly to repositories for DOI (Digital Object Identifier) assignment. +- **Pluggable Deposit Mechanism**: Implement custom deposit plugins to integrate with different repositories. +- **Customizable Templates**: Offers a library of templates for various types of OMPs, customizable to fit specific project requirements. +- **Integration Capabilities**: Seamlessly connects with other software tools and platforms, enabling data import/export and interoperability via APIs. + + +--- + +## 🧩 **Core Concepts** + + - #### **Blueprints** + + Define the structure of a Plan by specifying its Sections and content. + + - #### **Plans** + + Primary entities representing comprehensive OMPs, structured by Blueprints. + + - #### **Description Templates** + + Define the structure of Descriptions within a Plan, supporting various input types. + + - #### **Descriptions** + + Detailed entries providing information about specific inputs or outputs. + +--- + +## 🛠️ **Getting Started** + +1. **Deploy OpenCDMP**: Follow the [Deployment Guide](https://github.com/YourUsername/OpenCDMP/blob/main/INSTALLATION.md) to set up the platform. +2. **Configure OpenCDMP**: Set up authentication and authorization by following the [Keycloak Setup Instructions](https://github.com/YourUsername/OpenCDMP/blob/main/KEYCLOAK_SETUP.md). +3. **Create your plans**: Create your Plans by leveraging the features of the platform. + +--- + +## 🌟 **Benefits** + +- **Efficiency**: Streamlines the creation, management, and distribution of OMPs, saving time and resources. +- **Enhanced Collaboration**: Robust features like role-based access control, annotations, and notifications improve teamwork and communication. +- **Quality Control**: The review and annotation system ensures thorough examination and quality assurance of Plans. +- **Flexible Sharing and Distribution**: Diverse export and deposit options enable easy sharing, integration, and official registration of your Plans. +- **Customizability**: The pluggable mechanisms for validation, export, and deposit allow for tailored solutions to meet specific organizational needs. +- **Stay Informed**: Notification features ensure that team members are promptly aware of important updates and actions required. +- **Flexibility and Scalability**: Suits organizations of all sizes due to its flexible and extensible design. + + +--- + +## 📖 **Documentation** + +- **User Guide**: Learn how to use OpenCDMP effectively. +- **Developer Guide**: For those interested in extending the platform. + +- **Deployment Instructions**: Steps to deploy OpenCDMP in your environment. +- **Configuration Guides**: + - [Environment Variables Configuration](https://github.com/YourUsername/OpenCDMP/blob/main/ENV_CONFIGURATION.md) + - [Keycloak Setup](https://github.com/YourUsername/OpenCDMP/blob/main/KEYCLOAK_SETUP.md) + - [Scalability and Extensibility](https://github.com/YourUsername/OpenCDMP/blob/main/SCALABILITY_EXTENSIBILITY.md) + +--- + +## 🤝 **Community and Support** + +- **GitHub Repository**: [https://github.com/YourUsername/OpenCDMP](https://github.com/YourUsername/OpenCDMP) +- **Issue Tracker**: Report bugs or request features. +- **Discussion Forum**: Join the community to discuss and share ideas. +- **Contributing Guidelines**: Learn how to contribute to OpenCDMP. Please check out our [contributing guidelines](CONTRIBUTING.md) to get started. + + +--- + +## 📄 **License** + +OpenCDMP is released under the [MIT License](https://github.com/YourUsername/OpenCDMP/blob/main/LICENSE). + +--- + +## 🌐 **Contact** + +For questions or support, please contact: + +- **Email**: support@opencdmp.org +- **Twitter**: [@OpenCDMP](https://twitter.com/OpenCDMP) +- **LinkedIn**: [OpenCDMP Page](https://www.linkedin.com/company/opencdmp) + +--- + +Start simplifying your Output Management Plans with OpenCDMP today! + +[Download Now](https://github.com/YourUsername/OpenCDMP/releases) + +