diff --git a/keyboards/dmqdesign/spin/keymaps/vial/config.h b/keyboards/dmqdesign/spin/keymaps/vial/config.h
new file mode 100644
index 0000000000..f27b251413
--- /dev/null
+++ b/keyboards/dmqdesign/spin/keymaps/vial/config.h
@@ -0,0 +1,37 @@
+/* Copyright 2019-2020 DMQ Design
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xB5, 0xA8, 0x3A, 0x61, 0x86, 0x45, 0x95, 0xDF}
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
+
+#undef RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_TWINKLE
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 2, 3 }
\ No newline at end of file
diff --git a/keyboards/dmqdesign/spin/keymaps/vial/keymap.c b/keyboards/dmqdesign/spin/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..9b9de7816d
--- /dev/null
+++ b/keyboards/dmqdesign/spin/keymaps/vial/keymap.c
@@ -0,0 +1,39 @@
+/* Copyright 2019-2020 DMQ Design
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_7, KC_8, KC_9, KC_MUTE,
+ KC_4, KC_5, KC_6, KC_MUTE,
+ KC_1, KC_2, KC_3, KC_MUTE,
+ KC_0, UG_TOGG, KC_ENTER
+ ),
+ [1] = LAYOUT(
+ KC_7, KC_8, KC_9, KC_MUTE,
+ KC_4, KC_5, KC_6, KC_MUTE,
+ KC_1, KC_2, KC_3, KC_MUTE,
+ KC_0, UG_TOGG, KC_ENTER
+ ),
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ // Encoder 1 Encoder 2 Encoder 3
+};
+#endif
\ No newline at end of file
diff --git a/keyboards/dmqdesign/spin/keymaps/vial/rules.mk b/keyboards/dmqdesign/spin/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..eadfac430f
--- /dev/null
+++ b/keyboards/dmqdesign/spin/keymaps/vial/rules.mk
@@ -0,0 +1,11 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+
+LTO_ENABLE = yes
+QMK_SETTINGS = no
+COMBO_ENABLE = no
+KEY_OVERRIDE_ENABLE = no
+TAP_DANCE_ENABLE = no
+
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/dmqdesign/spin/keymaps/vial/vial.json b/keyboards/dmqdesign/spin/keymaps/vial/vial.json
new file mode 100644
index 0000000000..4a9ad69472
--- /dev/null
+++ b/keyboards/dmqdesign/spin/keymaps/vial/vial.json
@@ -0,0 +1,58 @@
+{
+ "name": "SPIN Macropad",
+ "vendorId": "0xA455",
+ "productId": "0x0001",
+ "matrix": {
+ "rows": 3,
+ "cols": 5
+ },
+ "lighting": "qmk_rgblight",
+ "layouts": {
+ "keymap": [
+ [
+ "0,0",
+ "1,0",
+ "2,0",
+ {
+ "x": 0.25
+ },
+ "2,4",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ "0,1",
+ "1,1",
+ "2,1"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3.25
+ },
+ "1,4",
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,2",
+ "1,2",
+ "2,2"
+ ],
+ [
+ "0,3",
+ "1,3",
+ "2,3",
+ {
+ "x": 0.25
+ },
+ "0,4",
+ "2,0\n\n\n\n\n\n\n\n\ne",
+ "2,1\n\n\n\n\n\n\n\n\ne"
+ ]
+ ]
+ }
+}
\ No newline at end of file