Peak Barbers
Peak Barbers is an open-source FiveM barbershop resource with native chair seating, animated barber NPCs, live appearance previews, peak-bridge integration, and a React + TypeScript NUI.
Source: github.com/Peak-Studios/peak-barbers
Features
- Hair, beard, eyebrow, eye-color, and makeup customization
- Save on payment and appearance rollback on cancel
- ESX, QBCore, and Qbox support through
peak-bridge ox_target,qb-target,qtarget, and marker interaction modes- English, French, Spanish, and Arabic locales
- Server-authoritative chair validation and rate-limited callbacks
- Built React/Vite NUI included for drag-and-drop installation
Installation
Place the resource at:
textresources/[peak]/peak-barbers
Install and configure:
- One framework:
es_extended,qb-core, orqbx_core peak-bridge- A supported appearance resource configured in
peak-bridge - An optional target resource, unless using marker interaction
Start dependencies before Peak Barbers. For example:
cfgensure es_extended ensure illenium-appearance ensure ox_target ensure peak-bridge ensure peak-barbers
Use your own framework, appearance, and target resource names where they differ.
Configuration
Edit shared/config.lua.
| Setting | Purpose |
|---|---|
Config.Locale | Active locale from locales/ |
Config.InteractionType | ox_target, qb-target, qtarget, or marker |
Config.Price | Cash price charged on confirmation; use 0 for free service |
Config.BarberModel | Temporary barber NPC model |
Config.MenuPosition | Dock the NUI on the left or right |
Config.MenuOffset | Keep the menu clear of a server HUD |
Config.UIColors | NUI accent colors |
Config.ChairPlacement | Default seating, camera, and exit tuning |
Config.Positions | Shop blips and chair coordinates |
Framework, money, notification, callback, and appearance providers are configured in peak-bridge.
Chair Placement
Most chairs use a vector4 containing position and heading:
luachairs = { vector4(0.0, 0.0, 0.0, 0.0), }
For custom interiors, a chair can instead define target, stand, exit, and optional camera or barber positions. Enable Config.Debug while tuning placement.
The server accepts only configured chair IDs. A player can reserve one chair at a time and must be within 5 meters when starting a session.
Appearance Flow
When a player confirms, the server validates the active chair session and payment through peak-bridge, then the client saves the appearance. Canceling reloads the previous appearance and releases the chair.
UI Development
The NUI source is React + TypeScript in ui/:
powershellcd ui npm install npm run lint npm run build
The manifest loads ui/dist/index.html. Keep ui/dist in releases and exclude ui/node_modules.
Troubleshooting
| Problem | Check |
|---|---|
| No chair interaction | Confirm Config.InteractionType and target resource load order, or select marker |
| Changes do not persist | Confirm the appearance provider in peak-bridge/shared/config.lua |
| Payment fails | Confirm framework detection, the cash account, and Config.Price |
| Missing text | Confirm Config.Locale and the matching file in locales/ |
| Player sits incorrectly | Tune the chair vector or Config.ChairPlacement and restart the resource |
For the complete source-pinned reference, connect to the Peak Studios MCP server or read the repository's installation guide and documentation.