

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
5FE1.1S
SSOP-28USB 2.0 USB Hub SSOP-28 USB Converters ROHSTerminus TechUSB ConvertersUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)24LC024/P
PDIP-81,000,000 cycles 2.5V~5.5V 200 Years 2Kbit 400kHz 5ms Hardware write protection function、Noise suppression function I2C PDIP-8 EEPROM ROHSMicrochip TechnologyEEPROMABM3B-12.000MHZ-B2-T
SMD5032-4P-20℃~+70℃ 12MHz 18pF 70Ω Crystal Oscillator ±20ppm ±50ppm SMD5032-4P Crystals ROHSAbraconCrystalsSMAJ5.0A
DO-214AC(SMA)-65℃~+150℃ 400W@10/1000us 43.5A 5V 7V 800uA 9.2V TVS Unidirectional DO-214AC(SMA) ESD and Surge Protection (TVS/ESD) ROHSMDDESD And Surge Protection (TVS/ESD)
README
README.mdGrace 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.
# from the project root
npm install # install dependencies (only needed first time, or after pulling)
npm run dev # start dev server at http://localhost:4321The dev server hot-reloads on save. Open http://localhost:4321 in your browser.
To preview a production build locally:
npm run build # outputs static site to ./dist
npm run preview # serves ./dist locallyProject structure
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.txtAdding a new project
- Create a new
.mdxfile insrc/content/projects/, e.g.vhdl-system.mdx. - Copy the frontmatter from
usb-hub-v1.mdxand adjust the values. - Use the existing components in the body:
<Section>,<HighlightGrid>,<Callout>,<ViewerGrid>,<Viewer>,<SpecTable>,<FilesList>. - 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
- Save your resume as
resume.pdf. - Drop it into the
public/folder. - Delete
public/PLACE_RESUME_HERE.txt. - 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>:
<script type="module" src="https://kicanvas.org/kicanvas/kicanvas.js"></script>Then in the project's MDX file:
<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
- Push this repo to GitHub.
- Sign in to Cloudflare (free account).
- Workers & Pages → Create → Pages → Connect to Git.
- Authorize Cloudflare to access your GitHub, then select this repo.
- 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)
- 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| Qty | Value | Footprint | References |
|---|---|---|---|
| 10 | 0.1 uF | Capacitor_SMD:C_0402_1005Metric | C3, C5, C7, C9, C10, C11, C16, C18, C20, C22 |
| 5 | 1 MOhm | Resistor_SMD:R_0402_1005Metric | R1, R10, R11, R12, R13 |
| 5 | 10 nF 2kV | Capacitor_SMD:C_0402_1005Metric | C1, C12, C13, C14, C15 |
| 5 | TestPoint | TestPoint:TestPoint_Pad_D1.0mm | TP1, TP2, TP3, TP4, TP5 |
| 5 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U1, U3, U4, U5, U6 |
| 4 | 1 uF | Capacitor_SMD:C_0603_1608Metric | C17, C19, C21, C23 |
| 4 | 10 kOhms | Resistor_SMD:R_0402_1005Metric | R3, R4, R7, R8 |
| 4 | 10 uF | Capacitor_SMD:C_0402_1005Metric | C2, C4, C6, C8 |
| 4 | GREEN | LED_SMD:LED_0603_1608Metric | D2, D3, D4, D5 |
| 4 | MountingHole | MountingHole:MountingHole_2.2mm_M2 | H1, H2, H3, H4 |
| 4 | USB-A | Connector_USB:USB_A_Kycon_KUSBX-AS1N-B_Horizontal | J2, J3, J4, J5 |
| 2 | 150 Ohms | Resistor_SMD:R_0402_1005Metric | R5, R6 |
| 1 | 2.7 kOhms 1% | Resistor_SMD:R_0402_1005Metric | R2 |
| 1 | 220 Ohms | Resistor_SMD:R_0402_1005Metric | R9 |
| 1 | 24LC02 | Package_SO:SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.29x3mm | U2 |
| 1 | ABM3B-12.000MHZ-B2-T | Crystal:Crystal_SMD_Abracon_ABM3B-4Pin_5.0x3.2mm | Y1 |
| 1 | FE1.1S | footprints:SOP64P600X175-28N | IC1 |
| 1 | Fuse 1206L050YR | Fuse:Fuse_1206_3216Metric | F1 |
| 1 | RED | LED_SMD:LED_0603_1608Metric | D6 |
| 1 | SMAJ5.0A | Diode_SMD:D_SMA | D1 |
| 1 | USB_B | footprints:CUI_UJ2-BH-W1-TH | J1 |
Similar boards
- 4 layers101.6 × 128.7 mm

- 4 layers95.2 × 67.5 mm

- 2 layers121 × 70.5 mm

- 2 layers45 × 20 mm

- 4 layers394 × 110 mm

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 mm

- 4 layers84.2 × 118.3 mm

Hub20
joshajohnson/Hub20
Hub20 is a numpad with a bunch of features you never knew you needed.
175 parts68 - 4 layers70 × 50 mm

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.