BRINC Internal Portal · Contributor Quickstart

Get your tool live on gtm.brincdrones.com

A short walkthrough for adding your projects to the team's internal site — built on GitLab + Cloudflare Pages + Cloudflare Access. You don't need to be a developer to use it. If you can drag a file into a browser, you can ship to the portal.

Stack · GitLab · Cloudflare Pages · Cloudflare Access Auth · BRINC + MSI emails only Live URL · gtm.brincdrones.com
1

Get access to the GitLab project

Five-minute, one-time step. You only do this the very first time.

The portal lives in a single GitLab repo: BRINC / Go To Market / gtm internal site. Access is invite-only — DM David Benowitz on Slack (or email david.benowitz@brincdrones.com) and ask to be added as a contributor.

Heads up The live site is gated by Cloudflare Access — only @brincdrones.com and @motorolasolutions.com Google accounts can view it. If you ever see a Google sign-in screen on the portal, that's the gate working as intended.

What you'll get:

  • A GitLab login with developer access to the repo
  • An invite to #gtm-internal-site on Slack for questions and announcements
2

Adding files to GitLab

Pick whichever path matches your comfort level — both produce identical results.

The GitLab project home for gtm-internal-site, showing the file list including index.html, sitemap.json, signature-generator.html, and a design/ directory.
The repo home. This is what you land on after logging in. Notice the file list — that's exactly what gets served at gtm.brincdrones.com.

A · Drag & drop in the browser Easiest

Best for one-off HTML files or when you just want to ship a quick update. No tools to install.

  • Open the repo, click the + button next to the branch picker
  • Choose Upload file (or Upload directory) and drop your file in
  • Add a short commit message and click Commit changes

B · Push from a Git client More flexible

Better if you'll be iterating a lot, want history locally, or are working with multiple files at once.

  • Install GitHub Desktop — yes, it works fine with GitLab
  • Clone the repo URL into it, drop your files into the local folder
  • Write a commit message → Commit to mainPush origin

If you go the drag-and-drop route, the upload menu looks like this:

GitLab project page with the + dropdown menu open, showing 'Upload file', 'Upload directory', 'New file', and 'New directory' options.
The + dropdown. Use Upload file for a single HTML, or Upload directory if your project has assets.
GitLab commit changes dialog with 'BRINC_Territory_Map_2026_LIVE (11).html · 95.17 KiB' attached, a commit message field saying 'Upload New File', and 'Commit to the current main branch' selected.
The commit dialog. A simple one-line description is fine. Leave Commit to the current main branch selected — that's what triggers the deploy.
Tip Filenames become URLs. If you upload my-tool.html, it'll be live at gtm.brincdrones.com/my-tool.html. Stick to lowercase and hyphens — no spaces.

After the commit, the file shows up alongside everything else, with "just now" as the last update:

The repository file listing after adding Territory-map.html, which appears with 'just now' as the last update timestamp.
Confirming the upload. Your new file is now in the repo. One more step to make it visible on the homepage.

Need to tweak something inline? Click any file and use Edit to make changes right in the browser:

GitLab's in-browser file editor, showing an empty Territory-map.html file open with the dark Web IDE interface.
Editing in GitLab. Useful for small fixes — typos, version bumps, etc. For big rewrites, prefer a local editor.
3

Single files vs. directories

When to drop one HTML file in the root, and when to give your project its own folder.

One-off HTML file

If your tool is a self-contained single page — all CSS, JS, and assets inlined or hot-linked from a CDN — just drop the .html in the repo root.

  • URL: gtm.brincdrones.com/your-file.html
  • Examples in repo: signature-generator.html, brinc-customer-wins.html

Directory (multi-file project)

If you have separate CSS, JS, images, sub-pages, or anything that wouldn't fit cleanly in one HTML, give it its own folder with an index.html inside.

  • URL: gtm.brincdrones.com/your-folder/
  • Example in repo: design/ (the BRINC Design Framework)
Rule of thumb If your project loads any separate file (a logo, a stylesheet, a JSON of data), put it in a folder. It keeps the repo tidy and avoids name collisions in the root.
gtm-internal-site/
├── index.html                  ← the portal homepage (don't touch)
├── sitemap.json                ← register your project here
├── brinc-customer-wins.html    ← single-file tool
├── signature-generator.html    ← single-file tool
├── Territory-map.html          ← single-file tool
└── design/                     ← multi-file project (folder)
    └── index.html
4

Update sitemap.json so your project is discoverable

Without this, your file is live but won't show up as a card on the homepage.

The portal homepage reads from sitemap.json to render its grid of cards. Add an entry for your project, commit, and you'll get a card linking to it — filtered by category, tagged, optionally marked "New".

The sitemap.json file open in GitLab, showing the JSON structure with entries for design, brinc-signature, and a new territory-map entry with title 'Territory Map', URL 'Territory-map.html', category 'sales', tags ['Territory', 'Sales', 'Maps'], badge 'New', and badgeColor '#00d2ff'.
An example sitemap entry. Each project is a JSON object inside the "pages" array.

Copy this template, paste it as a new entry in the "pages" array, and edit the values:

{
  "id": "your-project-id",
  "title": "Your Project Title",
  "description": "One-sentence pitch — what this is and who it's for.",
  "url": "your-file-name.html",
  "category": "sales",
  "tags": ["Tag1", "Tag2"],
  "icon": "",
  "badge": "New",
  "badgeColor": "#00d2ff"
}

Field reference

  • id — unique slug, lowercase with hyphens. Used internally.
  • title — what shows up on the card.
  • description — one short line. Aim for ~10–15 words.
  • url — relative path. Either your-file.html or your-folder/ (with the trailing slash).
  • category — one of sales, customer-success, marketing, training. Powers the filter chips on the homepage.
  • tags — an array of short labels shown on the card.
  • icon — an emoji. Keeps cards scannable at a glance.
  • badge — optional small label, like "New" or "Beta". Set to null if you don't want one.
  • badgeColor — hex color for the badge background. #00d2ff is BRINC blue.
Watch out It's strict JSON — every entry except the last needs a trailing comma, and you can't have a comma after the last one. If the file fails to parse, the whole portal goes blank. Paste your JSON into jsonlint.com if you're unsure.

Need a quick win? Open sitemap.json in GitLab's web editor, paste your entry, and let GitLab Duo (the built-in AI assistant) sanity-check it before you commit:

The sitemap.json file open in GitLab with the GitLab Duo AI panel on the right, showing a request to add the Territory-map.html to the sitemap and a generated entry summary.
GitLab Duo can draft the entry for you — just describe your project and ask it to add it to sitemap.json.
5

What happens after you commit

A peek at the deploy pipeline so the magic feels less magical.

1Commit to mainYou push a file or merge a change.
2Cloudflare detects itA webhook from GitLab triggers a build.
3Cloudflare Pages deploys~1–3 minutes. No CI config needed.
4Cloudflare Access guards itBRINC/MSI Google sign-in required.

Total wall-clock time from "commit" to "live link works": typically under 3 minutes. If it's been longer than 5 minutes and you don't see your update, check the #gtm-internal-site channel — the deploy may have stalled and we'll need to retrigger.

Sanity check After Cloudflare redeploys, hit gtm.brincdrones.com, look for your card, and click through. If the card's there and the link 404s, you've probably got a typo between the file name and the url field in sitemap.json.

?

Help & conventions

Naming Lowercase-with-hyphens for filenames and IDs. Title Case for the title field. Keep descriptions to one short sentence — the homepage card has limited room.