
Ghoost Board
Broccoliux/Broccoli-board
A fully custom 100% mechanical keyboard with a custom black PCB, hot-swap clicky switches, and full RGB where every internal component is hand soldered and nothing is by assemble.

Apes is a wireless keyboard built for productivity.
Apex pcb design is an open-source printed circuit board by HashirX-ux, from the HashirX-ux/Apex repository on GitHub, published under the MIT licence. It is a 4-layer board of 516.6 × 112.1 mm with 479 parts on 284 nets, routed with 3,493 tracks and 1,266 vias.
It is built around the 74AHCT125D, USBLC6-2SC6 and SK6812MINI-E. Its parts include 225 diodes, 121 capacitors, 114 switches, 8 resistors and 5 ICs. It belongs with the keyboards and input boards and the nRF52 and nRF5x boards of this library.
[blocked]
[blocked]
[blocked]
[blocked]
[blocked]
[blocked]`
Apex is a custom 112 key full size wireless mechanical keyboard I designed from the ground up after building a macropad and deciding a store bought board would never feel like mine.
The PCB is designed in KiCad, the case in FreeCAD, and the firmware is on ZMK.
On top of a standard full size layout it adds:
I wanted a Keyboard that belongs to me not to any company so I build my own keyboard.
ZMK is currently targeted at nice_nano_v2 as a bring up stand in. The PCB carries a bare nRF52840 (not a Pro Micro module). Pin mapping on the real board is still being finished see Firmware.
pcb/gerber/gerber.rarFirmware lives in frimware/ and is a ZMK skeleton, not the final keymap.
Fork this repo (or copy frimware/ into a ZMK config repo)
Current build target in frimware/build.yaml:
include:
- board: nice_nano_v2
shield: apexEdit the keymap at frimware/config/apex.keymap
Push GitHub Actions builds the .uf2
Download the artifact, double-tap reset to enter the bootloader, drag the .uf2 onto the drive that appears
The overlay (frimware/config/boards/shields/apex/apex.overlay) is still a 5×14 bring up matrix. The PCB is 8×14 / 112 keys. Next step is mapping the real nRF52840 pins, OLED, encoder, buzzer, and the 112 LED chain.
Estimated total: ~$230 USD can drop to $170–$200 buying locally and skipping extras (second switch pack, spare LEDs, extra PCBs).
Prices are typical AliExpress pack prices as of 2026. You buy the pack; you do not need every piece in it. Shipping not included.
| Component | Spec | Qty | Price | Notes | Link |
|---|---|---|---|---|---|
| Microcontroller | nRF52840-QIAA, AQFN-73 | ×1 | $5.00 | Bare Nordic SoC — BLE 5.0, 7×7 mm | Buy |
| 74AHCT125 level shifter | TSSOP-14 | ×1 | $2.52 | Pack of 10 — LED data 3.3 V → 5 V | Buy |
| MCP73831 LiPo charger | MCP73831-2-MC, DFN-8 3×2 mm | ×1 | $2.50 | Pack of 10 — DFN-8 footprint, not SOT-23-5 | Buy |
| USBLC6-2SC6 ESD | SOT-23-6 | ×1 | $1.50 | Pack of 10 — USB D+/D− | Buy |
| MX mechanical switches | 5-pin PCB mount | ×112 | $32.00 | Pack of 110–120 — Gateron / any MX 5-pin | Buy |
| Kailh hot-swap socket | MX compatible, CPG151101S11 | ×112 | $14.00 | Pack of 100 × 2 | Buy |
| SK6812 Mini-E RGB LED | Reverse mount, 3.2×2.8 mm | ×112 | $27.00 | Pack of 100 × 2 — buy 200, use 112 + spares | Buy |
| 1N4148W matrix diode | SOD-123 | ×112 | $3.00 | Pack of 100 × 2 | Buy |
| EC11 rotary encoder | 20 mm, with push switch | ×1 | $2.00 | Pack of 5 | Buy |
| Rotary knob | Aluminum, 6 mm D-shaft, 20 mm | ×1 | $2.00 | 2 pieces | Buy |
| Reset button | SMD tactile, CK KMR2 | ×1 | $1.50 | Pack of 30 | Buy |
| OLED display | 0.91" 128×32 SSD1306 I²C | ×1 | $2.50 | ER-OLED0.91, address 0x3C | Buy |
| Buzzer | 12×9.5 mm, 5 V | ×1 | $1.80 | Pack of 10 — matches 12×9.5 RM7.6 footprint | Buy |
| 2N3904 transistor | TO-92 | ×1 | $1.40 | Pack of 50 — buzzer driver | Buy |
| 32 MHz crystal | SMD 2016, 4-pin | ×1 | $1.80 | Pack of 10 — nRF52840 HFCLK | Buy |
| Status LED | 0603 SMD | ×1 | $1.00 | Pack of 100 — charger / power indicator | Buy |
| Resistor 10 kΩ | 0603 | ×3 | $1.20 | Pack of 300 — I²C / reset pull-ups | Buy |
| Resistor 5.1 kΩ | 0603 | ×2 | $1.30 | Pack of 300 — USB-C CC1/CC2 | Buy |
| Resistor 330 Ω | 0603 | ×1 | $2.00 | Pack of 500 — buzzer base / LED | Buy |
| Resistor 1 kΩ | 1206 + 0805 | ×2 | $1.20 | Pack of 300 — PROG / current limit | Buy |
| Capacitor 100 nF | 0805 | ×119 | $2.00 | Pack of 200 — 112 LED + MCU decoupling | Buy |
| Capacitor 12 pF | 0402 | ×2 | $1.50 | Pack of 100 — crystal load | Buy |
| USB-C receptacle 16P | GCT USB4105 SMD | ×1 | $4.50 | Pack of 5 | Buy |
| JST PH 2-pin | PH2.0, B2B-PH-K vertical | ×1 | $2.00 | Pack of 2 — battery connector | Buy |
| Polyfuse 500 mA | Resettable, 1206 | ×1 | $1.70 | Pack of 10 | Buy |
| LiPo 3.7 V 1500 mAh | JST PH 2.0 | ×1 | $5.80 | Size to fit the case tray | Buy |
| Keycap set | PBT, full-size MX | ×104+ | $26.00 | 104-key set; extras needed for 112 | Buy |
| PCB fabrication | 2-layer, FR-4, 1.6 mm, HASL/ENIG | ×5 boards | $32.00 | Full-size board — ENIG preferred | JLCPCB |
| 3D print — case | FDM PETG / SLA resin | ×1 | $42.00 | FreeCAD sources in cad/ — local print is cheaper | JLC3DP |
| M3 screws | M3 × 8 mm countersunk | ×10 | $1.00 | Pack of 50 | Buy |
| M3 standoffs | M3 × 4–6 mm | ×10 | $1.00 | Pack of 50 | Buy |
BOM notes
LED_5V / VBUS).IREG ≈ 1000 / RPROG). 1 kΩ ≈ 1 A; 2 kΩ ≈ 500 mA. 500 mA is gentler on a 1500 mAh cell.Apex/
├── cad/ FreeCAD case + STEP
│ ├── APex cad.FCStd
│ └── .step
├── frimware/ ZMK config (skeleton)
│ ├── build.yaml
│ └── config/
│ ├── apex.conf
│ ├── apex.keymap
│ └── boards/shields/apex/
├── pcb/
│ ├── apex-pcb_design.kicad_sch
│ ├── apex-pcb_design.kicad_pcb
│ ├── LED-Design.kicad_sch
│ └── gerber/gerber.rar
├── Journal.md Build log
└── LICENSE MITMade by Hashir 2026
| Qty | Value | Footprint | References |
|---|---|---|---|
| 119 | 100nF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C10, C11, C100, C101, C102, C103, C104, C105, C106, C107, C108, C109, C110, C111, C112, C113 +103 |
| 112 | 1N4148 | Diode_SMD:D_SOD-123 | D1, D10, D11, D100, D101, D102, D103, D104, D105, D106, D107, D108, D109, D110, D111, D112 +96 |
| 112 | SK6812MINI-E | LED_SMD:LED_SK6812MINI-E_3.2x2.8mm_P1.5mm_ReverseMount | D114, D115, D116, D117, D118, D119, D120, D121, D122, D123, D124, D125, D126, D127, D128, D129 +96 |
| 112 | SW_Push | Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00u | SW1, SW10, SW11, SW100, SW101, SW102, SW103, SW104, SW105, SW106, SW107, SW108, SW109, SW110, SW111, SW112 +96 |
| 3 | 10k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1, R2, R8 |
| 2 | 12pF | Capacitor_SMD:C_0402_1005Metric | C1, C2 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R5, R6 |
| 1 | 1500mAh | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | J2 |
| 1 | 1k | Resistor_SMD:R_1206_3216Metric | R7 |
| 1 | 1k | Resistor_SMD:R_0805_2012Metric | R9 |
| 1 | 2N3904 | Package_TO_SOT_THT:TO-92_Inline | Q1 |
| 1 | 32MHz | Crystal:Crystal_SMD_2016-4Pin_2.0x1.6mm | Y1 |
| 1 | 330R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R10 |
| 1 | 500mA | Fuse:Fuse_1206_3216Metric | F1 |
| 1 | 74AHCT125 | Package_SO:TSSOP-14_4.4x5mm_P0.65mm | U5 |
| 1 | Buzzer | Buzzer_Beeper:Buzzer_12x9.5RM7.6 | BZ1 |
| 1 | ER_OLEDM0.91_1x-I2C | Display:ER_OLEDM0.91_1x-I2C | U1 |
| 1 | LED | LED_SMD:LED_0603_1608Metric | D113 |
| 1 | MCP73831-2-MC | Package_DFN_QFN:DFN-8-1EP_3x2mm_P0.5mm_EP1.7x1.4mm | U3 |
| 1 | RotaryEncoder_Switch | Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_MountingHoles | SW113 |
| 1 | SW_Push | Button_Switch_SMD:SW_Push_1P1T_NO_CK_KMR2 | SW114 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U2 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | J1 |
| 1 | nRF52840 | Package_DFN_QFN:Nordic_AQFN-73-1EP_7x7mm_P0.5mm | U4 |

Broccoliux/Broccoli-board
A fully custom 100% mechanical keyboard with a custom black PCB, hot-swap clicky switches, and full RGB where every internal component is hand soldered and nothing is by assemble.

CalamityCow/MacOS-Keyboard
Two modules based on the STM32F072CBT6 to make integrated MCU PCBs simpler. They're designed to sit between 2 switches on an ortholinear or row-staggered keyboard, column-staggered will require some manual moving to get…

byungyoonc/TrueStrike42
TrueStrike42 is a columnar staggered unibody split keyboard designed to maximize performance and minimize finger fatigue.

joshjetson/phosphor
A full fledged DAW in TUI and GUI flavors: Run it in the terminal or run it as a desktop app (Desktop App Coming Soon..maybe)

byungyoonc/TrueStrike56
TrueStrike56 is a columnar staggered unibody split hall effect keyboard with popular 4x6_4 layout.

HashirX-ux/Nexus
A customizable mechanical macropad for productivity, shortcuts, and macros. Built with QMK firmware support.

atoomnetmarc/n-teller-xl-diy
n-teller-xl-diy is an IoT device that displays the number of checked in participants and visitors at the hackerspace called Revelation Space (or RevSpace).

It measures 516.6 × 112.1 mm and has 4 copper layers, 1.6 mm thick.
479 parts, built around the 74AHCT125D, USBLC6-2SC6 and SK6812MINI-E. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the HashirX-ux/Apex repository on GitHub, at the commit this page was made from: the board is pcb/apex-pcb_design.kicad_pcb and its schematic pcb/LED-Design.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).