diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..484b1b1fca970697fb698f954ac88f9cbaffc38f
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,23 @@
+stages:
+  - testing
+  - gen_fab
+
+variables:
+  GIT_SUBMODULE_STRATEGY: recursive
+
+#tests:
+#  image: ghcr.io/inti-cmnb/kicad7_auto:1.6.2
+#  stage: testing
+#  script:
+#    - "[ -f *.kicad_pcb ] && kibot -c test.kibot.yaml"
+
+pcb_outputs:
+  image: ghcr.io/inti-cmnb/kicad7_auto:1.6.2
+  stage: gen_fab
+  script:
+    - cd KiCad
+    - "[ -f *.kicad_pcb ] && kibot -c output.kibot.yaml"
+  artifacts:
+    when: always
+    paths:
+      - KiCad/Fabrication/
diff --git a/KiCad/output.kibot.yaml b/KiCad/output.kibot.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a6c8876fd04060712bf723b4c9dcc45bd839291e
--- /dev/null
+++ b/KiCad/output.kibot.yaml
@@ -0,0 +1,149 @@
+# Gerber and drill files for JLCPCB, without stencil
+# URL: https://jlcpcb.com/
+kibot:
+  version: 1
+
+globals:
+  resources_dir: ci
+
+filters:
+  - name: only_jlc_parts
+    comment: "Only parts with JLC (LCSC) code"
+    type: generic
+    include_only:
+      - column: "LCSC"
+        regex: '^C\d+'
+
+variants:
+  - name: rotated
+    comment: "Just a place holder for the rotation filter"
+    type: kibom
+    variant: rotated
+    pre_transform: _rot_footprint
+
+# JLCPCB Gerber Output
+outputs:
+  - name: JLCPCB_gerbers
+    comment: Gerbers compatible with JLCPCB
+    type: gerber
+    dir: JLCPCB
+    options: &gerber_options
+      exclude_edge_layer: true
+      exclude_pads_from_silkscreen: true
+      plot_sheet_reference: false
+      plot_footprint_refs: true
+      plot_footprint_values: false
+      force_plot_invisible_refs_vals: false
+      tent_vias: true
+      use_protel_extensions: true
+      create_gerber_job_file: false
+      disable_aperture_macros: true
+      gerber_precision: 4.6
+      use_gerber_x2_attributes: false
+      use_gerber_net_attributes: false
+      line_width: 0.1
+      subtract_mask_from_silk: true
+    layers:
+      # Note: a more generic approach is to use 'copper' but then the filenames
+      # are slightly different.
+      - F.Cu
+      - B.Cu
+      - F.Paste
+      - B.Paste
+      - F.SilkS
+      - B.SilkS
+      - F.Mask
+      - B.Mask
+      - Edge.Cuts
+
+  # JLCPCB drill files
+  - name: JLCPCB_drill
+    comment: Drill files compatible with JLCPCB
+    type: excellon
+    dir: JLCPCB
+    options:
+      pth_and_npth_single_file: false
+      pth_id: "-PTH"
+      npth_id: "-NPTH"
+      metric_units: false
+      output: "%f%i.%x"
+
+  # zip all JLCPCB gerber and drill files together
+  - name: JLCPCB
+    comment: ZIP file for JLCPCB
+    type: compress
+    dir: Fabrication/JLCPCB
+    options:
+      files:
+        - from_output: JLCPCB_gerbers
+          dest: /
+        - from_output: JLCPCB_drill
+          dest: /
+
+  # html ibom
+  - name: ibom
+    comment: Interactive BOM
+    type: ibom
+    dir: Fabrication/ibom
+    options:
+      dark_mode: true
+      name_format: "index"
+
+  # JLCPCB assembly positions of components
+  - name: "JLCPCB_position"
+    comment: "Pick and place file, JLCPCB style"
+    type: position
+    dir: Fabrication/JLCPCB-BOM
+    options:
+      variant: rotated
+      output: "%f_cpl_jlc.%x"
+      format: CSV
+      units: millimeters
+      separate_files_for_front_and_back: false
+      only_smd: false
+      columns:
+        - id: Ref
+          name: Designator
+        - Val
+        - Package
+        - id: PosX
+          name: "Mid X"
+        - id: PosY
+          name: "Mid Y"
+        - id: Rot
+          name: Rotation
+        - id: Side
+          name: Layer
+
+  # JLCPCB Bom for assembly or for LCSC order
+  - name: "JLCPCB_bom"
+    comment: "BoM for JLCPCB"
+    type: bom
+    dir: Fabrication/JLCPCB-BOM
+    options:
+      output: "%f_%i_jlc.%x"
+      exclude_filter: "only_jlc_parts"
+      ref_separator: ","
+      columns:
+        - field: Value
+          name: Comment
+        - field: References
+          name: Designator
+        - Footprint
+        - field: "LCSC"
+          name: "LCSC part number"
+        - field: "Quantity Per PCB"
+          name: "QTY"
+      csv:
+        hide_pcb_info: true
+        hide_stats_info: true
+        quote_all: true
+
+  # PDF of Schematic with dracula theme
+  - name: "SchPrint"
+    comment: "Print schematic PDF"
+    type: pdf_sch_print
+    dir: Fabrication/PDFs
+    options:
+      color_theme: dracula
+      background_color: true