Studio & Creative Assets
Centralized Creative & Asset Workspace
O pacote @repo/studio/assets serve como o repositório principal para todos os designs de marca, arquivos mestre brutos de projetos e assets compilados prontos para produção.
Para manter uma clara separação entre criação e distribuição, o workspace é dividido em duas raízes principais: o diretório creative/ e o diretório assets/.
1. Directory Division: creative/ vs. assets/
A. Raw Design Sources (creative/)
O diretório creative/ atua como nosso cofre de design privado. Ele abriga arquivos de origem brutos de softwares profissionais de produção. Estes arquivos representam o "work-in-progress" visual e o histórico do design da marca.
- Vector Graphics: Arquivos mestre do Adobe Illustrator (
.ai) para logotipos, exploração tipográfica e layouts de iconografia. - Digital Imaging: Modelos do Adobe Photoshop (
.psd) para assets raster de alta fidelidade, mockups e materiais de marketing. - 3D Modeling: Cenas mestre do Blender (
.blend) para componentes de plataforma e visualizações espaciais (por exemplo,Avokado.blend). - Video Editing: Arquivos de projeto do Adobe Premiere (
.prproj) para tutoriais e clipes de vídeo de marketing.
Tracking & Storage:
- Git Strategy: Este diretório é completamente ignorado no Git para evitar o inchaço do repositório.
- Cloud Storage: Sincronizado bidirecionalmente com o bucket privado
workspace-creative.
B. Production-Ready Assets (assets/)
O diretório assets/ contém elementos estáticos finais, otimizados e prontos para a web, consumidos diretamente pelas nossas interfaces de cliente (como @/hub) e pipelines.
- Brand Elements: Logotipos vetoriais, favicons, paletas oficiais e PDFs de diretrizes de marca.
- UI Elements: Ícones SVG otimizados (
assets/icons/) e ilustrações raster de UI (assets/images/). - 3D Models: Modelos GLB otimizados e mapas de ambiente HDRI (
assets/three/). - Typography: Fontes variáveis seguras para a web e arquivos codificados em base64 (
assets/fonts/). - Styling Tokens: Variáveis de folha de estilo CSS e constantes TypeScript (
assets/tokens/).
Tracking & Storage:
- Git Strategy: Híbrido. SVGs leves, wrappers de ícones React, fontes, folhas de estilo e manifestos JSON são commitados no Git. PNGs binários pesados, imagens e arquivos GLB são ignorados.
- Cloud Storage: Arquivos binários são sincronizados com o bucket público
workspace-assetse servidos via CDN.
2. Production Pipeline
A transição de modelos de design brutos dentro de creative/ para entregáveis compilados dentro de assets/ segue um pipeline padronizado:
- SVG Icon Compilation: Vetores brutos são exportados, limpos e empacotados como componentes React dentro de
assets/icons/. - 3D Assets Compilation: Arquivos mestre do Blender são gerados e exportados como arquivos GLB otimizados para
assets/three/. - Tokens Export: Variáveis de design de marca são compiladas em constantes TypeScript e propriedades personalizadas dentro de
assets/tokens/.
Cloudflare R2 Asset Synchronizer
Para manter nosso repositório Git leve, os assets estáticos prontos para produção não são commitados diretamente na base de código. Em vez disso, eles são sincronizados bidirecionalmente com o Cloudflare R2 Object Storage usando nosso pacote de sincronização CLI dedicado @repo/studio/bucket.
Para informações detalhadas sobre nosso ecossistema de buckets, comandos CLI e arquitetura de sincronização, consulte a documentação Cloudflare R2 Storage & Synchronizer.
Complete Directory Structure
Abaixo está o layout completo do diretório do workspace studio/:
studio/
├── bucket/ # Cloudflare R2 bucket CLI synchronizer
└── design/ # Core design platform and tokens
├── creative/ # High-fidelity master files (Ignored in Git, synced to R2)
│ ├── blender/ # Blender source files (.blend)
│ ├── illustrator/ # Illustrator sources (.ai)
│ ├── photoshop/ # Photoshop sources (.psd)
│ └── premiere/ # Premiere video edit sources (.prproj)
└── assets/ # Production-ready static assets
├── brand/ # Brand banners, favicons, logos, guidelines, palettes (SVGs in Git)
├── fonts/ # Web fonts (base64-encoded/variable fonts)
├── github/ # Github visual assets
├── icons/ # SVG UI icons
├── images/ # UI raster graphics & mockups (Ignored in Git, synced to R2)
├── three/ # WebGL GLB models & HDR environments (Ignored/synced)
└── tokens/ # Design system CSS/TS tokens (colors.ts, theme.css)
Brand Asset Namespace & Naming Standards
Para manter a consistência, os assets visuais da marca são organizados sob uma estrutura de diretório brand/ centralizada e seguem padrões estritos de nomenclatura.
Format & Storage Distribution Policy
- SVG Vector Files: Commitados diretamente no Git dentro de
studio/design/assets/brand/logos/(eassets/brand/favicons/). Os SVGs são baseados em texto, leves e podem ser compilados como componentes React dinâmicos. - PNG & Binary Files: Mantidos fora do Git para evitar o inchaço do repositório. Eles são armazenados em
studio/design/assets/brand/e sincronizados com o bucket CDN do Cloudflare R2 via CLI.
Brand Directory Subfolders
brand/logos/: Logotipos vetoriais e raster (por exemplo,logo-horizontal-positive.svg,logo-mark-purple.png).brand/palettes/: Arquivos de referência de paleta de cores visual (por exemplo,identity-palette.png).brand/favicons/: Favicons de aplicativos e ícones de toque para dispositivos móveis (por exemplo,favicon.ico,apple-touch-icon-gradient.png).brand/banners/: Banners oficiais da marca e capas sociais do OpenGraph (por exemplo,banner-github.png,og-default.png).brand/guidelines/: Guias de estilo, livretos de marca e manuais de referência.
Logo Naming Conventions
Todos os nomes de arquivos de logotipo devem seguir o padrão logo-[lockup]-[variant].[ext] usando letras minúsculas e hífens:
1. Base Lockups
horizontal: Marca do logotipo completa com arranjo de texto horizontal.mark: Apenas o símbolo/ícone da marca.
2. Variants
positive: Versão monocromática escura (preto ou cinza escuro) otimizada parafundos claros.- Example:
logo-horizontal-positive.svg(React Component:LogoHorizontalPositive)
- Example:
negative: Versão monocromática invertida (branco) otimizada para fundos escuros.- Example:
logo-horizontal-negative.svg(React Component:LogoHorizontalNegative)
- Example:
[color]: Nomes de cores explícitos em inglês para diferenciar as paletas da marca.- Example:
logo-horizontal-purple.svg(React Component:LogoHorizontalPurple)
- Example:
gradient: Uma transição de mesclagem de cores de assinatura vibrante.- Example:
logo-horizontal-gradient.svg(React Component:LogoHorizontalGradient)
- Example:
expressive: Marca de estilo visual artístico para landing pages personalizadas.- Example:
logo-horizontal-expressive.svg
- Example:
multicolor: Múltiplos blocos de cores sólidas lado a lado.alt: Ajustes de layout especializados ou configurações comemorativas.
Favicon Naming Conventions
- Default Canonical:
favicon.ico(contêiner de múltiplas resoluções empacotado para suporte a abas padrão). - Themed Favicons:
favicon-[variant].[ext](por exemplo,favicon-positive.ico,favicon-gradient.png). - Platform Specific:
apple-touch-icon-[variant].png(ícones de toque da Apple) esafari-pinned-tab-[variant].svg(vetores de aba fixada do Safari).
Asset Resolution & Zero-Copy Architecture
Para eliminar o armazenamento duplicado de arquivos em aplicações consumidoras como @repo/hub/web:
- In Development: O servidor de desenvolvimento Vite intercepta requisições iniciadas com
/@studio-assets/e serve os arquivos dinamicamente a partir do diretório do pacote de assets local na sua máquina. - In Production (Build-Time Copying): O sistema de build da aplicação usa
vite-plugin-static-copypara replicar automaticamente arquivos denode_modules/@repo/studio/assets/assets/brand/para o diretório de saída do builddist/no momento do empacotamento.
Namespaced Workspace Exports
Pacotes internos acessam assets criativos por meio de exports estritamente definidos para garantir o isolamento arquitetural:
@repo/studio/assets/icons: Biblioteca SVG otimizada e registro de componentes Icon curados.@repo/studio/assets/logos: Logotipos canônicos da marca.@repo/studio/assets/brand/*: Assets principais da marca (paletas, favicons, banners).@repo/studio/assets/tokens: Constantes de design com tipagem forte para lógica JS/TS.@repo/studio/assets/theme.css: Configuração de tema Tailwind CSS com zero runtime.