# BDTK

{% hint style="danger" %}
**THIS SECTION IS A WORK IN PROGRESS BDTK WILL REPLACE BOII\_UTILS EVENTUALY.**\
**EVERYTHING WILL BE DOCUMENTED FIRST.**
{% endhint %}

<figure><img src="/files/blW3m9Ns7lUDaOkN12ce" alt=""><figcaption></figcaption></figure>

***

## What is BDTK?

Normally? **BOII Development Tool Kit**\
When it works? **Big Damn Time-saving Kit**\
When it doesn’t? **Broken Dumbass Time Killer**

BDTK is the next evolution of `boii_utils` - rewritten, reorganized, and refined for modern FiveM scripting.

It’s still modular, still framework-agnostic, but now with tighter internals, smarter structure, and a more focused set of tools. From framework bridging to utility wrappers, animation helpers to UI fallbacks - it’s built to slot into any dev stack and cut the busywork out of your workflow.

No bloat. No gatekeeping. No nonsense.\
Just dependable functions, clean patterns, and a codebase that stays out of your way.

***

## Who Is It For?

* **Framework developers** who need clean, reusable utility modules for base functionality.
* **Script authors** who want their releases to support multiple frameworks with minimal effort.
* **Solo scripters** tired of rewriting the same junk over and over again.
* **Teams** looking for a shared library of tools to streamline development across projects.

Whether you're writing scripts or an entire framework, BDTK helps cut the fat and scale the logic.

***

## Why Should I Use It?

* **Framework Bridge** – Built to abstract and unify major frameworks (`qb`, `esx`, `ox`, `nd`, `boii`, etc.) so you don’t have to write double logic.
* **Modular by Default** – Use only what you need. Every module is isolated, with no hard dependencies on the rest.
* **Less Repetition** – Handles the common patterns and boring parts so you can focus on actual logic, not boilerplate.
* **Consistent Conventions** – Shared structure and naming across modules keeps your code clean and predictable.
* **Dev Time Saver** – Speeds up development with drop-in systems, helper functions, and sane defaults.

***

## What Does It Provide?

BDTK is split into multiple categories of modules:

#### Resource Bridges

* **Framework Bridge** - Currently compatible with ESX, QB-Core, QBox, Ox Core, or ND Core.
* **Notification Bridge** - Currently compatible with bduk, boii\_ui, es\_extended, okokNotify, ox\_lib, qb-core.
* **DrawText UI Bridge** - Currently compatible with boii\_ui, es\_extended, okokNotify, ox\_lib, qb-core.

#### Standalone Systems

* **Callbacks** - Full client/server callback handling without framework dependencies.
* **Commands** - Built-in permissions, Ace support, and command registration.
* **Licences** - Theory/practical tests, points, revoking—DMV-style, but smarter.
* **XP System** - Custom growth curves, XP types, and server-wide level tracking.

#### Utility Modules

* **Appearance** - Appearance, clothing, tattoos, and shared styling logic.
* **Vehicles** - Entity-safe functions for customization, storage, and behavior.
* **Items** - Usable item registry outside of any core system.
* **Methods** - Attach runtime functions to players, vehicles, or anything else.
* **Player Helpers** - Animations, props, directions, and ped-related helpers.
* **Timestamps** - Server-safe date/time utils for consistent formatting.
* **Environment** - Time, weather, seasonal effects, and sync helpers.
* **Entities** - Utility functions for managing NPCs, vehicles, and objects.
* **Profanity** - Handles profanity related filtering and replacing.
* Buckets - Routing bucket handling and static data storage.

#### Smart Libraries

* **Geometry** - Vector math, angles, zones, distance, and shape logic.
* **Maths** - Extended math with curves, clamping, interpolation, and more.
* **Strings** - Pad, slugify, wrap, and format anything text-based.
* **Tables** - Merge, clone, randomize, and clean up Lua tables.
* **Keys** - Named constants for all common input keys, with helpers.

***

## How Is It Structured?

Every module in BDTK is fully self-contained — no tangled dependencies, no weird global hacks.\
They’re designed to be loaded individually or accessed cleanly through the central `bdtk.get()` system.

BDTK is:

* **Bridge-Based** – Framework functions are abstracted and unified behind a common API.
* **Environment-Aware** – Modules work on the client, server, or both depending on context.
* **Drop-In Ready** – Use one module or all of them. It won’t break if you don’t use the full set.
* **Scalable by Design** – Built to grow with your project without becoming a mess.

***

## Quick Install

To get setup using **BDTK** follow these brief steps:

{% stepper %}
{% step %}
**Download BDTK**

Download the Latest Release of BDTK from GitHub.
{% endstep %}

{% step %}
**Add It To Your Server**

Drop `bdtk` into your server resources.
{% endstep %}

{% step %}

#### Add It To Your Server Config

Add `ensure bdtk` into your `server.cfg` make sure this line is **above** any resource requiring it.
{% endstep %}

{% step %}
**Insert The SQL**

Add the included `REQUIRED.sql` into your database, this is required for user accounts and some standalone systems.
{% endstep %}

{% step %}
**Restart Your Server**

Restart your server and BDTK will be up and running, all bridges run auto-detection and have safe fall backs if none of the supported resources are found. To change default configuration settings you can do this via `convars` for more on this read: **Configuring BDTK**
{% endstep %}
{% endstepper %}

***

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Guides</td><td><a href="/files/mXGQlzqtxWDAWC63HwSh">/files/mXGQlzqtxWDAWC63HwSh</a></td><td><a href="/pages/Z0V242UcuOSPwAiUTPfC">/pages/Z0V242UcuOSPwAiUTPfC</a></td></tr><tr><td>API Reference</td><td><a href="/files/lfc1oyGmqtwJalCePlXA">/files/lfc1oyGmqtwJalCePlXA</a></td><td><a href="/pages/lDrgX8pB2w41qtRbjGMA">/pages/lDrgX8pB2w41qtRbjGMA</a></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.boii.dev/fivem-free-resources/bdtk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
