The wardrobe point and wardrobe furniture call one function, openWardrobe(), from the detected bridge in client/custom/wardrobe/. Each bridge is a few lines that open that script's own outfit menu — adjust it there if your version renamed an export or event.
Doors, points and furniture are added through the qtarget API, which ox_target answers out of the box; the robot is registered with ox_target or qb-target directly. The bridge is client/custom/target/main.lua, and Config.ZoneDebug = true draws the boxes.
When an owner places the Charge point, Apartments fires the server event phone:CreateChargeLocation on the server, with the apartment ID and the position, for your phone script to put a charging spot there. A phone that does not handle that event ignores the point.
Messages are shown in Apartments' own notification style, inside its interface. To send them through another system, edit Notification(msg, type) in client/custom/framework/esx.lua or qb.lua — commented examples for qs-interface and ox_lib are already there. type is info, success or error.
A clothing bridge is the same with one function, openWardrobe(), and the wardrobes list. The framework bridges in server/custom/framework/ and client/custom/framework/ hold identifiers, money, metadata, routing buckets and the admin check.
41 translations ship in locales/: ar, bg, bn, ca, cs, da, de, el, en, es, et, fa, fi, fr, he, hi, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, sw, th, tr, uk, ur, vi, zh. Set Config.Locale in config/main.lua. To add another, copy en.json to the new code, translate it and set the locale to that code — anything left untranslated falls back to English, and the console names each missing key.