Plan: Set Up UIS Branding
IMPLEMENTATION RULES: Before implementing this plan, read and follow:
- WORKFLOW.md - The implementation process
- PLANS.md - Plan structure and best practices
Status: Complete
Goal: Establish complete branding assets for the UIS documentation site.
Last Updated: 2026-01-19
Priority: High (blocks other documentation work)
Overview
Set up the brand folder structure and create/collect all branding assets needed for the UIS Docusaurus site, following the pattern established by DevContainer Toolbox.
Phase 1: Brand Folder Structure
Tasks
- 1.1 Create
website/static/img/brand/folder - 1.2 Copy and adapt main logo (
uis-logo-green.svg) with SovereignSky colors - 1.3 Update
docusaurus.config.tsto use new logo - 1.4 Create logo variant for dark mode (
uis-logo-teal.svg) - 1.5 Create text logo similar to DCT's
cube-dct-green.svg:- Create
uis-text-green.svgwith pyramid logo + "UIS" text - Use SovereignSky green (#3a8f5e)
- Similar layout: logo on left, text on right
- Create
- 1.6 Adapt publish scripts from DCT:
publish-logo.sh- Copies SVG logo to Docusaurus location (static/img/logo.svg)publish-favicon.sh- Creates multi-size favicon.ico from SVG (16x16, 32x32, 48x48)- Change default source to
uis-logo-green.svg
- 1.7 Copy other branding assets from
~/Downloads/uis-branding/to brand folder
Validation
User confirms brand folder structure is correct.
Phase 2: Animated Hero SVG
Overview
Create an animated SVG for the homepage hero section, similar to DCT's FloatingCubes component. The animation shows services being added to the UIS cloud, communicating that the platform can run many services.
Design Description
- Background: Cloud shape from
uis-logo-green.svg - Inside cloud: Pyramid of cubes (service icons) with same look/feel as DCT hero
- Below cloud: Row of cubes representing available services waiting to be deployed
- Animation: Cubes float up from the row below and settle into positions inside the cloud
- Message: Visually demonstrates "complete datacenter on your laptop" concept
Tasks
- 2.1 Create
FloatingCubesReact component (adapt from DCT)- Located in
website/src/components/FloatingCubes/ index.tsx- Main component with SVG and animationsstyles.module.css- Component styles
- Located in
- 2.2 Create animated hero SVG (
uis-hero-animation.svg):- Cloud outline as container/background
- 5 cubes inside cloud (pyramid arrangement)
- 5 cubes floating outside cloud (service queue)
- CSS animations for cube movement
- 2.3 Implement cube animation logic:
- AI cube animates from outside into top slot
- Floating cubes bob up and down
- Subtle idle animation on stacked cubes
- Staggered timing for natural feel
- 2.4 Integrate hero into homepage (
src/pages/index.tsx) - 2.5 Test animations across browsers (Chrome, Firefox, Safari)
- 2.6 Ensure responsive behavior on mobile
Reference Files
- DCT component:
devcontainer-toolbox/website/src/components/FloatingCubes/index.tsx - UIS logo:
website/static/img/brand/uis-logo-green.svg - Concept files:
~/Downloads/uis-branding/uis-animated-hero-v2.svg,uis-swap-animation.svg
Validation
User confirms hero animation displays correctly and conveys the intended message.
Phase 3: Category Logos
Decision: Harmonize with DevContainer Toolbox
Category logos use Heroicons (MIT License) with SovereignSky green (#3a8f5e). This matches the approach used in DCT for consistency across SovereignSky projects.
Reused from DCT (5 icons):
| UIS Logo | DCT Source | Heroicon |
|---|---|---|
| ai-logo.svg | ai-tools-logo.svg | Sparkles |
| monitoring-logo.svg | background-services-logo.svg | ServerStack |
| datascience-logo.svg | data-analytics-logo.svg | ChartBar |
| core-logo.svg | infra-config-logo.svg | Cog |
| development-logo.svg | language-dev-logo.svg | Code |
Created new for UIS (5 icons):
| UIS Logo | Heroicon |
|---|---|
| authentication-logo.svg | ShieldCheck |
| databases-logo.svg | CircleStack |
| queues-logo.svg | QueueList |
| search-logo.svg | MagnifyingGlass |
| management-logo.svg | AdjustmentsHorizontal |
Tasks
- 3.1 Create
website/static/img/categories/folder - 3.2 Create
website/static/img/categories/src/for SVG sources - 3.3 Create/collect category logos (10 total, SVG preferred):
- ai-logo.svg - AI & Machine Learning (from DCT)
- authentication-logo.svg - Authentication & SSO (new)
- databases-logo.svg - Databases (new)
- monitoring-logo.svg - Observability & Monitoring (from DCT)
- queues-logo.svg - Message Queues & Caching (new)
- search-logo.svg - Search & Indexing (new)
- datascience-logo.svg - Data Science & Analytics (from DCT)
- core-logo.svg - Core Infrastructure (from DCT)
- management-logo.svg - Management Tools (new)
- development-logo.svg - Development Tools (from DCT)
- 3.4 Create
LOGO-SOURCES.mddocumenting icon sources - 3.5 Verify
categories.jsonlogo paths match created files
Validation
User confirms category logos match SovereignSky branding.
Phase 4: Service Logos
Complete Service List
Services identified from provision-host/kubernetes/ scripts and manifests:
Core Infrastructure (01-core):
| Service | Logo File | Source |
|---|---|---|
| traefik | traefik-logo.svg | traefik.io |
| nginx | nginx-logo.svg | nginx.org |
Databases (02-databases):
| Service | Logo File | Source |
|---|---|---|
| postgresql | postgresql-logo.svg | postgresql.org/media |
| mysql | mysql-logo.svg | mysql.com |
| mongodb | mongodb-logo.svg | mongodb.com |
| qdrant | qdrant-logo.svg | qdrant.tech |
Message Queues (03-queues):
| Service | Logo File | Source |
|---|---|---|
| redis | redis-logo.svg | redis.io |
| rabbitmq | rabbitmq-logo.svg | rabbitmq.com |
Search (04-search):
| Service | Logo File | Source |
|---|---|---|
| elasticsearch | elasticsearch-logo.svg | elastic.co/brand |
API Management (05-apim):
| Service | Logo File | Source |
|---|---|---|
| gravitee | gravitee-logo.svg | gravitee.io |
Management Tools (06-management):
| Service | Logo File | Source |
|---|---|---|
| pgadmin | pgadmin-logo.svg | pgadmin.org |
| redisinsight | redisinsight-logo.svg | redis.io/insight |
AI & ML (07-ai):
| Service | Logo File | Source |
|---|---|---|
| openwebui | openwebui-logo.svg | openwebui.com |
| ollama | ollama-logo.svg | ollama.ai |
| litellm | litellm-logo.svg | litellm.ai |
| tika | tika-logo.svg | tika.apache.org |
Development Tools (08-development):
| Service | Logo File | Source |
|---|---|---|
| argocd | argocd-logo.svg | CNCF Artwork |
Network (09-network):
| Service | Logo File | Source |
|---|---|---|
| tailscale | tailscale-logo.svg | tailscale.com |
| cloudflare | cloudflare-logo.svg | cloudflare.com |
Data Science (10-datascience):
| Service | Logo File | Source |
|---|---|---|
| spark | spark-logo.svg | Apache Foundation |
| jupyterhub | jupyterhub-logo.svg | jupyter.org |
| unity-catalog | unity-catalog-logo.svg | unitycatalog.io |
Monitoring (11-monitoring):
| Service | Logo File | Source |
|---|---|---|
| prometheus | prometheus-logo.svg | CNCF Artwork |
| tempo | tempo-logo.svg | CNCF Artwork |
| loki | loki-logo.svg | CNCF Artwork |
| otel-collector | otel-collector-logo.svg | CNCF Artwork |
| grafana | grafana-logo.svg | grafana.com/brand |
Authentication (12-auth):
| Service | Logo File | Source |
|---|---|---|
| authentik | authentik-logo.svg | goauthentik.io |
Total: 28 services
Tasks
- 4.1 Create
website/static/img/services/folder - 4.2 Create
website/static/img/services/src/for original sources - 4.3 Collect service logos (SVG preferred, PNG fallback):
- Core Infrastructure (2):
- traefik-logo.svg
- nginx-logo.svg
- Databases (4):
- postgresql-logo.svg
- mysql-logo.svg
- mongodb-logo.svg
- qdrant-logo.svg
- Message Queues (2):
- redis-logo.svg
- rabbitmq-logo.svg
- Search (1):
- elasticsearch-logo.svg
- API Management (1):
- gravitee-logo.svg
- Management Tools (2):
- pgadmin-logo.png
- redisinsight-logo.svg
- AI & ML (4):
- openwebui-logo.png
- ollama-logo.svg
- litellm-logo.svg
- tika-logo.svg
- Development Tools (1):
- argocd-logo.svg
- Network (2):
- tailscale-logo.svg
- cloudflare-logo.svg
- Data Science (3):
- spark-logo.svg
- jupyterhub-logo.svg
- unity-catalog-logo.png
- Monitoring (5):
- prometheus-logo.svg
- tempo-logo.svg
- loki-logo.png
- otel-collector-logo.svg
- grafana-logo.svg
- Authentication (1):
- authentik-logo.svg
- Core Infrastructure (2):
- 4.4 Update
services.jsonwith correct logo paths - 4.5 Update
LOGO-SOURCES.mdwith service logo sources
Logo Source Priority
- CNCF Artwork - Prometheus, Loki, Tempo, Argo CD, OpenTelemetry (Apache 2.0)
- Official brand pages - Grafana, PostgreSQL, Redis, Elastic, etc.
- Simple Icons - Fallback for common tech logos (simpleicons.org)
- Devicon - Programming/dev tool icons (devicon.dev)
Validation
User confirms service logos are available for all 28 services.
Phase 5: Stacks Setup
Overview
Create visual representation and documentation for service stacks - groups of services that work together as a unit. Stacks are defined in stacks.json and show installation order and dependencies.
Current Stacks (from stacks.json)
| Stack ID | Name | Services |
|---|---|---|
| observability | Observability Stack | prometheus → tempo → loki → otel-collector (opt) → grafana |
| ai-local | Local AI Stack | ollama → litellm (opt) → openwebui |
| datascience | Data Science Stack | spark → jupyterhub → unity-catalog (opt) |
Tasks
- 5.1 Create stack logos/icons for each stack:
-
observability-stack-logo.svg- Metrics/logs/traces visualization -
ai-local-stack-logo.svg- Neural network/processor icon -
datascience-stack-logo.svg- Beaker with data dots
-
- 5.2 Create
website/static/img/stacks/folder structure - 5.3 Design stack card component for homepage or docs (future):
- Show stack name and description
- List component services with logos
- Indicate installation order (position)
- Mark optional components
- 5.4 Create stack documentation page template (future):
- Overview of what the stack provides
- Prerequisites and dependencies
- Installation instructions (which scripts to activate)
- Configuration options
- 5.5 Update
stacks.jsonwith logo references - 5.6 Create React component for displaying stacks (optional/future):
website/src/components/StackCard/index.tsx- Shows services in order with visual flow
Stack Logo Design
Used Heroicons style (option 3) to match category logos with SovereignSky green (#3a8f5e).
Validation
User confirms stacks are visually represented and documented.
Phase 6: Social Card and Favicon
Tasks
- 6.1 Create
social-card-background.png(similar to DCT's version)- Generated with Gemini AI, cleaned with
remove-gemini-stars.sh - 1344x768 pixels
- Cloud with cubes visual, space for text on right side
- Generated with Gemini AI, cleaned with
- 6.2 Adapt
create-social-card.shscript from DCT:- Title: "Urbalurba\nInfrastructure\nStack"
- Tagline: "Complete datacenter\non your laptop."
- Logo:
uis-text-green.svgin bottom right - Uses ImageMagick to composite background + text + logo
- 6.3 Adapt
publish-social-card.shscript from DCT:- Outputs only
static/img/social-card.jpg(optimized JPG) - Removed PNG output to avoid duplication
- Outputs only
- 6.4 Run scripts to generate
social-card-generated.png - 6.5 Create favicon from UIS logo (
website/static/img/favicon.ico) - 6.6 Verify social card and favicon in Docusaurus config
- 6.7 Create
remove-gemini-stars.shscript to clean AI watermarks- Supports
-leftand-rightflags for corner selection - Validates image size for social cards
- Supports
- 6.8 Add
README.mddocumenting brand folder workflow
Validation
User confirms social card appears correctly in link previews.
Phase 7: Component Infrastructure
Overview
Set up the foundation for displaying services, categories, and stacks. Adapt components from DevContainer Toolbox (DCT) project.
Reference: DCT Component Architecture
DCT uses these components at /Users/terje.christensen/learn/projects-2025/devcontainer-toolbox/website/src/components/:
- ToolCard → adapt to ServiceCard (64px logo + title + 2-line abstract + tags)
- CategoryCard → reuse (48px logo + title + service count)
- ToolGrid → adapt to ServiceGrid (responsive 1-4 column grid)
- CategoryGrid → reuse (responsive grid of categories)
- RelatedTools → adapt to RelatedServices (horizontal scroll)
Tasks
- 7.1 Create TypeScript interfaces for UIS data types:
src/types/service.ts- Service interfacesrc/types/category.ts- Category interfacesrc/types/stack.ts- Stack interfacesrc/types/index.ts- Central exports
- 7.2 Create utility functions:
src/utils/paths.ts- URL generation for services/categoriessrc/utils/data.ts- Data loading helperssrc/utils/index.ts- Central exports
- 7.3 CSS variables already in place from DCT adaptation in custom.css
Files to Create
website/src/
├── types/
│ ├── service.ts
│ ├── category.ts
│ └── stack.ts
└── utils/
├── paths.ts
└── data.ts
Validation
TypeScript types compile without errors.
Phase 8: Service & Category Components
Overview
Create the card and grid components for displaying services and categories.
Tasks
- 8.1 Create ServiceCard component:
src/components/ServiceCard/index.tsxsrc/components/ServiceCard/styles.module.css- Layout: 64px logo | title + 2-line abstract + tags
- Hover effect: shadow lift
- Links to service detail page (using docs field from services.json)
- 8.2 Create ServiceGrid component:
src/components/ServiceGrid/index.tsxsrc/components/ServiceGrid/styles.module.css- Groups services by category with section headers
- Responsive: 1 col (mobile) → 4 col (desktop)
- 8.3 Create CategoryCard component:
src/components/CategoryCard/index.tsxsrc/components/CategoryCard/styles.module.css- Layout: 48px logo | title + abstract + service count badge
- Links to category section on services page
- 8.4 Create CategoryGrid component:
src/components/CategoryGrid/index.tsxsrc/components/CategoryGrid/styles.module.css- Auto-counts services per category
- Sorts by category order
- 8.5 Create RelatedServices component:
src/components/RelatedServices/index.tsxsrc/components/RelatedServices/styles.module.css- Horizontal scroll of mini service cards
- Ready for use on service detail pages
Files to Create
website/src/components/
├── ServiceCard/
│ ├── index.tsx
│ └── styles.module.css
├── ServiceGrid/
│ ├── index.tsx
│ └── styles.module.css
├── CategoryCard/
│ ├── index.tsx
│ └── styles.module.css
├── CategoryGrid/
│ ├── index.tsx
│ └── styles.module.css
└── RelatedServices/
├── index.tsx
└── styles.module.css
Validation
Components render correctly in isolation (Storybook or test page).
Phase 9: Stack Components
Overview
Create StackCard with service flow diagram showing installation order.
Design
┌─────────────────────────────────────────────────────────┐
│ [Stack Logo] Observability Stack │
│ Complete monitoring with metrics... │
│ │
│ prometheus → tempo → loki → otel-collector* → grafana │
│ ⬤ ⬤ ⬤ ○ ⬤ │