Skip to the content
4 layers58.6 × 53.6 mmUsbhub, the printed circuit board in 3D

Personal portfolio site built with Astro. Static site, deploys to Cloudflare Pages.

Size
58.6 × 53.6 mm
Copper layers
4
Thickness
1.59 mm
Parts
65
Nets
44
Pads
200
Tracks, vias
281, 118
Pours
5
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
21 Jun 2026
Updated
29 Jul 2026

Overview

Usbhub is an open-source printed circuit board by gmarcus1018, from the gmarcus1018/Portfolio_Web repository on GitHub. It is a 4-layer board of 58.6 × 53.6 mm with 65 parts on 44 nets, routed with 281 tracks and 118 vias.

It is built around the FE1.1S, USBLC6-2SC6 and 24LC024/P, with the ABM3B-12.000MHZ-B2-T and SMAJ5.0A among its other parts. Its parts include 23 capacitors, 13 resistors, 7 ICs, 6 diodes and 5 connectors. It belongs with the interfaces and adapters boards of this library.

Main components

5

README

README.md

Grace Marcus — Portfolio

Personal portfolio site built with Astro. Static site, deploys to Cloudflare Pages.


Local development

You'll need Node.js v18.17.1 or newer. Check with node -v. If you need to install it, use nvm on Mac/Linux or download from nodejs.org on Windows.

bash
# from the project root
npm install        # install dependencies (only needed first time, or after pulling)
npm run dev        # start dev server at http://localhost:4321

The dev server hot-reloads on save. Open http://localhost:4321 in your browser.

To preview a production build locally:

bash
npm run build      # outputs static site to ./dist
npm run preview    # serves ./dist locally

Project structure

text
src/
  components/        Reusable Astro components (Nav, Footer, ProjectHero, etc.)
  layouts/           Page wrappers (BaseLayout, ProjectLayout)
  pages/             One file per route
    index.astro      Homepage
    about.astro      About page
    resume.astro     Resume page
    404.astro        404 page
    projects/
      index.astro    Projects index
      [slug].astro   Dynamic route — generates a page per MDX file
  content/
    config.ts        Schema for the projects collection
    projects/        One MDX file per project
      usb-hub-v1.mdx
  styles/
    global.css       Design tokens (CSS variables) and base styles
  config.ts          Site-wide config — name, email, socials, nav links
public/              Static assets — served at the root URL
  robots.txt

Adding a new project

  1. Create a new .mdx file in src/content/projects/, e.g. vhdl-system.mdx.
  2. Copy the frontmatter from usb-hub-v1.mdx and adjust the values.
  3. Use the existing components in the body: <Section>, <HighlightGrid>, <Callout>, <ViewerGrid>, <Viewer>, <SpecTable>, <FilesList>.
  4. Save — the page is automatically generated at /projects/<filename-without-extension>/.

Frontmatter reference is in src/content/config.ts.


Updating site-wide info

Single source of truth in src/config.ts:

  • Name, email, GitHub, LinkedIn, resume URL
  • Nav items
  • Site URL (update once you have a custom domain)

Change a value here and it updates everywhere it's used.


Updating colors / fonts

All design tokens live in src/styles/global.css as CSS variables under :root. Change one variable, the whole site updates.


Adding the resume PDF

  1. Save your resume as resume.pdf.
  2. Drop it into the public/ folder.
  3. Delete public/PLACE_RESUME_HERE.txt.
  4. The footer and resume page already link to /resume.pdf.

Embedding KiCanvas viewers

Once your KiCad project is pushed to GitHub, replace the placeholder <Viewer> content with the KiCanvas embed tag.

In src/layouts/BaseLayout.astro, add this once inside <head>:

html
<script type="module" src="https://kicanvas.org/kicanvas/kicanvas.js"></script>

Then in the project's MDX file:

mdx
<Viewer label="KiCanvas — Schematic">
  <kicanvas-embed
    src="https://raw.githubusercontent.com/gracemarcus1018-blip/usb-hub/main/usb-hub.kicad_sch"
    controls="full">
  </kicanvas-embed>
</Viewer>

KiCanvas docs: https://kicanvas.org/


Deploying to Cloudflare Pages

One-time setup

  1. Push this repo to GitHub.
  2. Sign in to Cloudflare (free account).
  3. Workers & Pages → Create → Pages → Connect to Git.
  4. Authorize Cloudflare to access your GitHub, then select this repo.
  5. Configure the build:
    • Framework preset: Astro
    • Build command: npm run build
    • Build output directory: dist
    • Node version: 20 (set under Environment variables as NODE_VERSION = 20)
  6. Click Save and Deploy.

Cloudflare gives you a free *.pages.dev URL automatically. Every push to main triggers a new deploy.

Custom domain (optional, recommended later)

In the Pages project settings → Custom domains → Set up a custom domain. Cloudflare walks you through DNS. A .dev domain is about $12/year if you want one — register through Cloudflare itself for the cleanest setup.

Once you have a custom domain, update site in astro.config.mjs and url in src/config.ts.


Build output

npm run build produces a fully static site in dist/. No server, no database. Cloudflare serves the static files from its global edge network.

Parts

65
QtyValueFootprintReferences
100.1 uFCapacitor_SMD:C_0402_1005MetricC3, C5, C7, C9, C10, C11, C16, C18, C20, C22
51 MOhmResistor_SMD:R_0402_1005MetricR1, R10, R11, R12, R13
510 nF 2kVCapacitor_SMD:C_0402_1005MetricC1, C12, C13, C14, C15
5TestPointTestPoint:TestPoint_Pad_D1.0mmTP1, TP2, TP3, TP4, TP5
5USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U1, U3, U4, U5, U6
41 uFCapacitor_SMD:C_0603_1608MetricC17, C19, C21, C23
410 kOhmsResistor_SMD:R_0402_1005MetricR3, R4, R7, R8
410 uFCapacitor_SMD:C_0402_1005MetricC2, C4, C6, C8
4GREENLED_SMD:LED_0603_1608MetricD2, D3, D4, D5
4MountingHoleMountingHole:MountingHole_2.2mm_M2H1, H2, H3, H4
4USB-AConnector_USB:USB_A_Kycon_KUSBX-AS1N-B_HorizontalJ2, J3, J4, J5
2150 OhmsResistor_SMD:R_0402_1005MetricR5, R6
12.7 kOhms 1%Resistor_SMD:R_0402_1005MetricR2
1220 OhmsResistor_SMD:R_0402_1005MetricR9
124LC02Package_SO:SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.29x3mmU2
1ABM3B-12.000MHZ-B2-TCrystal:Crystal_SMD_Abracon_ABM3B-4Pin_5.0x3.2mmY1
1FE1.1Sfootprints:SOP64P600X175-28NIC1
1Fuse 1206L050YRFuse:Fuse_1206_3216MetricF1
1REDLED_SMD:LED_0603_1608MetricD6
1SMAJ5.0ADiode_SMD:D_SMAD1
1USB_Bfootprints:CUI_UJ2-BH-W1-THJ1

Similar boards

  • 4 layers101.6 × 128.7 mmQCB board, the printed circuit board in 3D

    QCB board

    bartkepl/QCB_board

    Quad Card Backplane

    222 partsMIT
  • 4 layers95.2 × 67.5 mm6xUSB PowMet, the printed circuit board in 3D

    6xUSB PowMet

    aleksejm/6xUSB-Power-Meter

    6 USB port Power Meter

    175 parts7
  • 2 layers121 × 70.5 mmJoshua, the printed circuit board in 3D

    Joshua

    thepolymatt/joshua

    The Repository for "Joshua" the audio/OSD mod for CRT TVs

    58 parts12
  • 2 layers45 × 20 mmLpc1756 totp, the printed circuit board in 3D

    Lpc1756 totp

    itzandroidtab/totp

    Hardware 2FA TOTP authenticator

    52 parts8
  • 4 layers394 × 110 mmGpu cluster backplane, the printed circuit board in 3D

    Gpu cluster backplane

    antmicro/gpu-cluster-backplane

    This project contains open hardware design files for a PCB supporting power distribution in a cluster composed of GPUs. This board has been derived from an open source d1600e-psu-breakout created by Antmicro.

    616 parts4Apache-2.0
  • 4 layers50 × 80 mmHimax usb board, the printed circuit board in 3D

    Himax usb board

    johnMamish/lilcam

    USB webcam that uses himax sensors

    120 parts
  • 4 layers84.2 × 118.3 mmHub20, the printed circuit board in 3D

    Hub20

    joshajohnson/Hub20

    Hub20 is a numpad with a bunch of features you never knew you needed.

    175 parts68
  • 4 layers70 × 50 mmSkibidi phone usb hub, the printed circuit board in 3D

    Skibidi phone usb hub

    tobycm/skibidi-phone-usb-hub

    a very skibidi usb hub for my google pixel 7. powered by the fe1.1s, providing 1 upstream usb c port, 2 downstream usb c ports, and 2 downstream usb a ports!!

    34 parts4MIT

Questions

How big is the Usbhub PCB?

It measures 58.6 × 53.6 mm and has 4 copper layers, 1.59 mm thick.

What parts does the Usbhub use?

65 parts, built around the FE1.1S, USBLC6-2SC6, 24LC024/P and ABM3B-12.000MHZ-B2-T. 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.

Where can I download the Usbhub KiCad files?

From the gmarcus1018/Portfolio_Web repository on GitHub, at the commit this page was made from: the board is public/usbhub.kicad_pcb and its schematic public/usbhub.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Usbhub design in my own project?

Its repository states no licence, so its author keeps all rights: ask gmarcus1018 before reusing the design.