Skip to content

scope and functionalities

Shelson Ferrari edited this page Jul 24, 2024 · 7 revisions

Scope and Functionalities

Scope

The Currency Conversion API is a Java-based REST API designed for currency conversion. This project serves as an educational and reference Java project maintained on GitHub. It demonstrates key concepts of API development, including integration with external services, data persistence using an embedded database, and route management with Apache Camel. The entire project is containerized using Docker for ease of deployment and scalability. The project is designed to be easily extensible, maintainable, and deployable across various environments, including Windows, Linux, and Unix.

Main Functionalities

1. Currency Conversion

  • API Input: Accepts currency pairs (e.g., USD to BRL) and the amount to be converted.
  • External Service Integration: Uses the Exchange Rate API to fetch real-time conversion rates.
  • Data Persistence: Stores query information, including date, time, conversion rate, and input currencies, in an embedded H2 database.
  • API Response: Returns the conversion rate obtained from the external service.

2. Apache Camel Integration

  • Route Definition: Defines routes for fetching exchange rates and performing currency conversions.
  • Processing and Transformation: Uses Camel processors to handle the transformation and enrichment of messages.
  • Error Handling: Implements error handling strategies within Camel routes to manage exceptions and ensure reliability.

3. Dockerized Environment

  • Containerization: The entire application, including the API and database, is containerized using Docker.
  • Cross-Platform Support: Provides shell scripts (.sh) and batch scripts (.bat) to facilitate execution on different operating systems.

4. Continuous Integration and Continuous Delivery (CI/CD)

  • Automated Pipelines: Uses GitHub Actions to automate testing, building, and deployment processes.
  • Documentation Generation: Automatically generates and updates documentation files, such as CHANGELOG.md, .env, swagger.json, swagger.yaml, and DIRECTORY.md.
  • Testing and Validation: Runs unit tests, integration tests, and E2E tests to ensure code quality.

5. Multi-Application Support

  • Console Terminal: Provides a console terminal (index.sh and index.bat) to access various Dockerized applications, including:
    • Server: Java Spring server.
    • Console: Currency conversion client.
    • DB: Data lister for persisted data.
    • Directory: Generates and views the DIRECTORY.md file.
    • Changelog: Generates and views the project changelog.

6. Internationalization

  • Configurable Language Support: Supports internationalization by configuring the project.properties file.
  • Message Localization: Allows messages and labels to be translated into different languages.

7. Project Documentation and Licensing

  • Detailed Documentation: Includes comprehensive documentation on project architecture, development flow, API specifications, and more.
  • Licensing: Dual-licensed under MIT and Apache 2.0 licenses.

8. Future Enhancements

  • FUTURE.md: Maintains a file outlining planned enhancements and future developments.
  • Community Contributions: Encourages community contributions and discussions on improvement proposals.

Summary

The Currency Conversion API project offers a robust, scalable, and well-documented solution for currency conversion. With its modular architecture, automated CI/CD pipelines, and comprehensive testing, it serves as an exemplary base for Java developers aiming to build and maintain similar applications.


Wiki Menu

Wiki Main Page

1. Introduction to the Project

  • Overview: Presentation of the project, highlighting its purpose and the context in which it is embedded.
  • Project Objectives: Enumeration of the main objectives that the project aims to achieve.
  • Scope and Functionalities.

2. Configuration and Installation

3. Project Structure

  • Folder Structure: Description of the organization of the project directories.
  • Project Architecture: Explanation of the architecture used, including design patterns and technical decisions.

4. Development

  • Development Flow: Description of the development process adopted, including planning, coding, and review stages.
  • Apache Camel Integration: Guide on integrating Apache Camel into the project, including configuration and usage.
  • Contributors and Authors: Recognition of the contributors to the project.
  • Contributions: Guidelines on how to contribute to the project, including code standards and pull request requirements, tips and best practices.
  • Code of Conduct: Behavioral guidelines expected for the project community.

5. API and Documentation

6. Endpoints and Database

  • Endpoint Description: Details of the available API endpoints, including methods, parameters, and usage examples.
  • Database Management: Strategies and practices for efficient management of the database used by the project.

7. Testing

  • Testing Strategies: Approach and methods used to test the software, including unit, integration, and E2E tests.
  • Testing Tools: Description of the testing tools used in the project and how to configure them.

8. CI/CD and Automations

  • CI/CD Pipeline: Explanation of the continuous integration and delivery pipeline, detailing each stage and its function.
  • Automations and Artifact Generation: Description of the automations incorporated into the CI/CD, including documentation generation and build artifacts.

9. Configuration Files

10. Best Practices

11. Legal and Licensing

  • Licensing: Information about the rights and restrictions associated with the use of the software.
  • Terms of Use: Information about the terms and conditions for using the software.

12. Projections and Innovations

  • Future Plans: Discussion on functionalities and improvements considered for future versions of the project.
  • Improvement Proposals: Space for the community to suggest and debate improvements and innovations.

13. Attachments and Useful Links

14. Security

  • Security Policy: Details on the supported versions, reporting vulnerabilities, and general security practices.

Clone this wiki locally