Skip to content

Elbujito/orderbook

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn


Logo

OrderBook

Welcome to the Orderbook repository!
Explore the docs »

View Demo · Contributing

OrderBook documentation
  1. About The Project
  2. Getting Started
  3. Features
  4. Contributing
  5. License
  6. Contact
  7. Acknowledgments

About The Project

Product Name Screen Shot

There are many great README templates available on GitHub; however, I didn't find one that really suited my needs so I created this enhanced one. I want to create a README template so amazing that it'll be the last one you ever need -- I think this is it.

Of course, no one template will serve all projects since your needs may be different. So I'll be adding more in the near future. You may also suggest changes by forking this repo and creating a pull request or opening an issue. Thanks to all the people have contributed to expanding this template!

Use the BLANK_README.md to get started.

(back to top)

Goals and Objectives

The primary goal of this design is to [state the primary goal]. Key objectives include [list specific objectives or criteria]. Here's why:

  • Your time should be focused on creating something amazing. A project that solves a problem and helps others
  • You shouldn't be doing the same tasks over and over like creating a README from scratch
  • You should implement DRY principles to the rest of your life 😄

(back to top)

User Personas or Use Cases

Identify potential users or describe specific use cases to better understand the needs and expectations of the end-users.

(back to top)

System Architecture

Provide a high-level overview of the system architecture, including components, modules, and their interactions.

System Architecture Diagram

(back to top)

Data Model

Outline the data model, defining key entities, relationships, and attributes. Use an entity-relationship diagram if applicable.

(back to top)

Scalability and Performance Considerations

Discuss how the design addresses scalability and performance concerns, including load balancing, caching strategies, and database optimization.

(back to top)

Security Measures

Outline security measures incorporated into the design, such as authentication mechanisms, authorization strategies, and data encryption.

(back to top)

Error Handling and Logging

Describe how the system will handle errors and exceptions. Discuss logging mechanisms for debugging and monitoring.

(back to top)

Testing Strategy

Explain your approach to testing, covering unit testing, integration testing, and any other relevant testing methodologies.

(back to top)

Deployment Plan

The deployment plan outlines the steps and considerations for deploying the system in different environments, such as development and production. It also highlights the deployment tools used in the process.

Warning: The staging environment is not currently within the scope of this documentation. The decision to exclude staging is based on the potential need for additional product assurance requirements. Staging environment configurations and deployment procedures may be addressed in a future updates. It means also that Behavior-Driven Development(BDD) tests are not also integrated and defined yet.

Development Environment

In the development environment, the focus is on providing an environment that allows developers to test and iterate on the system's features. Deployment may involve local development setups or smaller shared environments.

Deployment Steps:

  1. Clone the Repository Locally:

    • Open a terminal.
    • Run the following command to clone the repository:
      git clone https://github.com/your/repository.git
  2. Local Development Testing with Docker Compose:

    • Navigate to the project directory:
      cd your_project_directory
    • Run the following command to launch the system with necessary dependencies:
      docker-compose up

Debugging with Docker: If you intend to run Docker in debug mode within the provided development stack, it's important to note that there is currently no specific configuration for executing your Docker image in debug mode. However, it is recommended to explore Delve, a debugger that is well-supported by Docker. Delve facilitates attaching to the executable on demand, providing a useful option for debugging purposes.

Debugging in local: If you plan to run the application with in debug mode within the provided development stack, it's essential to note that there is currently no specific configuration provided. The absence of predefined user settings allows developers to use their own preferences for debugging. It is recommended to explore your preferred debugging tools and configurations to ensure that debugging experience is tailored to your needs.

Production Environment

Deploying to the production environment involves a careful and controlled process to ensure system stability and minimal downtime.

Deployment Steps:

  1. Code is pushed to the master branch and tagged for release.
  2. CI/CD tools automate the build, test, and deployment process.
  3. Container orchestration tools like Kubernetes is employed for managing production containers.
  4. Blue-Green or Canary deployment strategies may be used to minimize the impact on end-users.
  5. Monitoring tools, such as Prometheus or Grafana, are employed to track system performance and health.
  6. Rollback procedures are in place in case of unexpected issues during deployment.

Deployment Tools

  • Docker: Used for containerization and consistent deployment across environments.
  • Container Orchestration: Kubernetes for managing and scaling containers in production.
  • Monitoring: Prometheus and Grafana for monitoring system performance.
  • Infrastructure as Code (IaC): Terraform or Ansible for managing and provisioning infrastructure.

(back to top)

Built With

This section should list any major frameworks/libraries used to bootstrap your project. Leave any add-ons/plugins for the acknowledgements section. Here are a few examples.

  • Next

(back to top)

Getting Started

This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.

Prerequisites

This is an example of how to list things you need to use the software and how to install them.

  • npm
    npm install npm@latest -g

Installation

  1. Get a free API Key at https://example.com
  2. Clone the repo
    git clone https://github.com/your_username_/Project-Name.git
  3. Install NPM packages
    npm install
  4. Enter your API in config.js
    const API_KEY = 'ENTER YOUR API';

(back to top)

Features

  • Add Design Documentation

  • Add Technical Documentation

    • Add README
    • About the project
    • Environment prerequisites
    • How to install the application
    • How to deploy the application
    • How to run the application
  • Features

    • As a Market Broker I want to read data from my client

      • Add a Reader component which open the file and read line by line
      • Add a queue to process asynchrony each line and forward it to the service layer
      • Add case where some lines are invalid
      • Add case where file doesn't exist
      • Add case where the file is empty
    • As a Market Broker I want to process strategy to my client's data

      • Process asynchrony each line received from the reader
      • Apply strategy to the line
      • Forward to the Writer's queue
      • Add case where the queue is not created yet
      • Add where reader is faster than writer
      • Add where writer is faster than reader
    • As a Market Broker I want to transmit computed data to the market

      • Add a Writer component which open the file and write line by line
      • Add case where file can't be created
      • Add case where file doesn't exist
    • As a Developer I want to have idempotent logs whatever my location

      • Support for RFC3339 format
      • Rolling strategy supported by syslog
    • As a Trader I want to know to use the application

      • Add docker file configuration
      • Add docker-compose file configuration
      • Add documentation for user
    • Add feedbacks

      • Known limitations
      • Scale design propositions
      • Home assignment experience feedback

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Adrien Roques - adrien.roques@icloud.com

Project Link: https://github.com/Elbujito/blocktech-bv

(back to top)

Acknowledgments

In this space, I'd like to acknowledge and credit the following resources that have been instrumental in my learning journey. I've included some of my favorites to get started:

(back to top)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published