TAK Server Documentation

repository·main·Indexed 20 days ago

https://github.com/tak-product-center/server

A core component of the TAK ecosystem providing configuration, messaging, and API services. Designed as a set of microservices requiring Java 17 and PostgreSQL/PostGIS, it includes components for schema management, plugin management, and a WebappAngular UI. The documentation covers building via Gradle, local development setup, microservice orchestration, RPM generation, and Kubernetes deployment using Helm charts.

Tokens
163.7K
Snippets
524
Records
656
Agent score
71%

What's inside TAK Server

  1. TAKCL User Guide

    main

    TAKCL (TAK Command Line) provides tools for interacting with the TAK Server. This guide covers two primary areas:

    1. Test Execution: How to run existing tests using the TAKCL interface.
    2. Test Architecture and Development: How to understand the underlying architecture and develop new tests for the system.

    For detailed instructions, refer to the specific documentation files: docs/testing.md for execution and docs/Development.md for development.

  2. Supported browsers and devices for Bootstrap

    main

    Bootstrap supports the latest stable releases of all major browsers and platforms.

    Desktop Support

    • Chrome, Firefox, Edge, Opera: Supported on Windows and Mac.
    • Safari: Supported on Mac (Not supported on Windows).
    • Internet Explorer: Supports IE 10-11 on Windows. (Note: If you require IE8-9 support, use Bootstrap 3).
    • Firefox ESR: The latest Extended Support Release is also supported.

    Mobile Support

    • Android: Supported on Android v5.0+ (Chrome, Firefox, Edge, and Android Browser/WebView).
    • iOS: Supported (Chrome, Firefox, and Safari).
    • Windows 10 Mobile: Supported via Microsoft Edge.

    Note: Proxy browsers like Opera Mini, Opera Mobile's Turbo mode, UC Browser Mini, and Amazon Silk are not explicitly supported.

  3. What is the TAK Server Federation Hub?

    main

    The TAK Server Federation Hub centralizes the management of federation capabilities using a hub-and-spoke topology. Instead of TAK servers connecting directly to each other (which requires managing individual connections and authentication), they connect to the Federation Hub.

    The Hub performs connection and trust management, and brokers federated data according to administrator-defined policies. It can be built and run independently of a standard TAK server deployment.

  4. What is PG-Pool and why is it needed for Aurora?

    main

    AWS Aurora scales using read replicas behind a load balancer, providing two distinct endpoints: one for the master (write) database and one for the read replica load balancer.

    To utilize these features, you must use PG-Pool. PG-Pool acts as an interceptor that determines whether an incoming database call should be routed to the write endpoint or the read endpoint.

    Deployment Considerations:

    • EC2 in same VPC: Provides the best network security control.
    • External Server: Requires the Aurora database to have a public IP.
    • Same server as TAK Server: Risk of resource starvation for the TAK Server process.
  5. Schema file naming and check-in workflow

    main

    When developing new schema versions, follow these workflow rules to ensure stability in the SchemaManager JAR:

    1. Development: Do not check in SQL files that are still in development to the schemaManager/resources directory. Instead, commit them to db-utils/pending.
    2. Naming Convention: Follow the official naming convention (refer to the MartiDatabase wiki for details).
    3. Point Releases: The system supports point releases using a format such as V16.1__<description>.sql.
    4. Promotion: Once a schema version is tested and frozen, the release manager will migrate the scripts from db-utils/pending to the schemaManager/resources directory.
  6. Understand Bootstrap source code structure

    main

    The Bootstrap source code download includes precompiled assets (dist/), documentation source (site/docs/), and the raw source files for customization:

    • scss/: Source Sass files for CSS.
    • js/: Source JavaScript files.
    • dist/: Contains the precompiled CSS and JS assets (same as the precompiled download).
    • site/docs/: Source code for the documentation.
    • examples/: Examples of Bootstrap usage.
    bootstrap/
    ├── dist/
    │   ├── css/
    │   └── js/
    ├── site/
    │   └──docs/
    │      └── 4.3/
    │          └── examples/
    ├── js/
    └── scss/
  7. Configure LDAP and CAC/PIV authentication controls

    main

    Version 4.5.0 introduced new authentication capabilities:

    • LDAP Group Limiting: Controls are available to limit access to a specific set of LDAP groups.
    • CAC/PIV Group Mapping: You can set a group name based on the Distinguished Name (DN) in a CAC/PIV certificate.
    • Concurrent Logins: WebTAK now allows concurrent logins using the same username.
  8. How Popper.js works

    main

    Popper.js is a positioning engine rather than a UI component library. Its primary purpose is to calculate the position of an element (the "popper") relative to a given reference element.

    Key characteristics:

    • Modular Architecture: Most features are implemented as modifiers (similar to middleware or plugins).
    • Non-destructive: It positions elements while keeping them in their original DOM context without messing with your DOM structure.
    • Zero Dependencies: It does not require jQuery or LoDash.
    • Shadow DOM Support: It supports Shadow DOM elements.
    • Extensible: It allows exporting computed information to integrate with view libraries like React or Vue.
  9. Configure the computeStyle and applyStyle modifiers

    main

    Popper separates style calculation from DOM application to allow for custom implementations (e.g., in framework integrations).

    1. computeStyle: Calculates the necessary styles but does not touch the DOM.

      • gpuAcceleration: (Boolean, default: true) If true, uses CSS 3D transformations. If false, uses top and left.
      • x: (String, default: 'bottom') The X axis anchor/offset origin.
      • y: (String, default: 'left') The Y axis anchor/offset origin.
    2. applyStyle: The only modifier that performs DOM manipulations.

      • If you disable this modifier to use your own implementation, you must ensure the popper element's position is set to absolute before Popper.js begins its work.
    // Example: Disabling default style application for custom framework integration
    const options = {
      modifiers: {
        computeStyle: {
          gpuAcceleration: false
        },
        applyStyle: {
          enabled: false
        }
      }
    };
    // Note: Ensure popper element has { position: 'absolute' } in CSS
  10. Configure global page defaults and box-sizing

    main

    Bootstrap Reboot applies several global defaults to the <html> and <body> elements:

    • Box Sizing: Globally sets box-sizing: border-box on every element, including *::before and *::after. This ensures the declared width of an element is never exceeded by padding or borders.
    • Font Size: No base font-size is declared on <html> (browser default of 16px is assumed). font-size: 1rem is applied to <body> to allow for responsive type-scaling via media queries while respecting user preferences.
    • Body Defaults: The <body> sets a global font-family, line-height, and text-align.
    • Background: The <body> defaults to a background-color of #fff.
  11. Work with Bootstrap responsive breakpoints

    main

    Bootstrap uses a mobile-first approach with specific media query breakpoints to scale interfaces. If you are using Sass, you should use the provided mixins instead of writing raw media queries.

    Breakpoints

    • xs: Extra small (portrait phones, < 576px). No media query needed as this is the default.
    • sm: Small (landscape phones, $\ge$ 576px).
    • md: Medium (tablets, $\ge$ 768px).
    • lg: Large (desktops, $\ge$ 992px).
    • xl: Extra large (large desktops, $\ge$ 1200px).

    Sass Mixins

    • @include media-breakpoint-up(breakpoint): Targets a breakpoint and everything larger.
    • @include media-breakpoint-down(breakpoint): Targets a breakpoint and everything smaller.
    • @include media-breakpoint-only(breakpoint): Targets only the specific breakpoint range.
    • @include media-breakpoint-between(start, end): Targets a range between two breakpoints.
    // Example: Hide starting at xs, and show at the sm breakpoint
    .custom-class {
      display: none;
    }
    @include media-breakpoint-up(sm) {
      .custom-class {
        display: block;
      }
    }
    
    // Example: Style from medium breakpoint and down
    @include media-breakpoint-down(md) {
      .custom-class {
        display: block;
      }
    }
    
    // Example: Apply styles from medium up to extra large
    @include media-breakpoint-between(md, xl) {
      .custom-class {
        /* styles */
      }
    }
  12. Accessibility considerations for Bootstrap Dropdowns

    main

    Bootstrap dropdowns are designed to be generic and can contain various markup like search fields or login forms. Because of this flexibility, Bootstrap does not automatically add role="menu" or other specific aria- attributes required by the WAI-ARIA standard for application-like menus.

    Key Accessibility Details:

    • Manual ARIA: If you need your dropdown to follow strict WAI-ARIA menu standards (e.g., for a menu that only contains menu items, checkboxes, or radio buttons), you must manually add the appropriate role and aria- attributes.
    • Built-in Keyboard Support: Bootstrap provides built-in support for standard keyboard interactions, including:
      • Navigating through .dropdown-item elements using the arrow keys.
      • Closing the menu using the <kbd>Esc</kbd> key.