Estrutura do projeto Fabric Apps

Fabric Projetos de Aplicativos usam um layout de pasta consistente para que você possa encontrar rapidamente modelos de dados, configuração de back-end e código de front-end. Este artigo explica os arquivos e pastas com os quais você provavelmente trabalhará depois de criar um projeto.

Layout da pasta

Quando você cria um novo projeto Fabric Apps, o modelo gera a seguinte estrutura:

your-project/
├── rayfin/
│   ├── data/
│   │   ├── schema.ts
│   │   └── *.ts
│   ├── .env
│   ├── rayfin.yml
│   └── tsconfig.json
├── src/
├── package.json
├── tsconfig.json
└── README.md

Arquivos de configuração de chave

rayfin/rayfin.yml

O arquivo rayfin/rayfin.yml é o principal arquivo de configuração do back-end do Fabric Apps. Ele controla quais serviços são executados durante o desenvolvimento local e dá suporte à interpolação de variável de ambiente para valores de configuração dinâmica.

Exemplo completo:

id: my-app
name: my-app
version: 1.0.0
services:
  auth:
    enabled: true
    expiryInMinutes: 60
    refreshToken:
      lifetimeInDays: 30
    customClaims:
      tenant: "default"
    scopes:
      - read:data
      - write:data
    allowedRedirectUris:
      - http://localhost:5173
      - http://localhost:5173/auth/callback
    password:
      enabled: true
    fabric:
      enabled: false
    passwordless:
      magicLink:
        enabled: false
        expiryMinutes: 15
      smsOtp:
        enabled: false
    email:
      enabled: false
      provider: smtp
      senderName: Rayfin Platform
      verificationTokenExpirationHours: 24
      passwordResetTokenExpirationMinutes: 30
      smtp:
        host: maildev
        port: 1025
        senderEmail: noreply@rayfin.local
        username: ""
        password: ""
        useSsl: false
        useStartTls: false
        webPort: 1080
  data:
    enabled: true
    dialect: mssql
  storage:
    enabled: false
  staticHosting:
    enabled: true
    root: .
    folder: dist
    buildCommand: npm run build
    indexDocument: index.html

A configuração inclui estes campos de chave:

Campos de nível superior

Campo Tipo Obrigatório Description
id string Sim Slug do projeto usado como nome do projeto do Docker Compose e identificador do item do Fabric.
name string Sim Nome de exibição do projeto legível por humanos.
version string Sim Versão do projeto (semver).
services object Sim Bloco de configuração de serviço.

services.data

Campo Tipo Default Description
enabled boolean false Habilite o serviço de dados.

services.auth

Campo Tipo Default Description
enabled boolean false Habilite o serviço de autenticação.
expiryInMinutes number Expiração do token JWT em minutos.
customClaims Record<string, string> Declarações personalizadas adicionadas aos JWTs emitidos.
scopes string[] Escopos OAuth (por exemplo, ["read:data", "write:data"]).
refreshToken.lifetimeInDays number Atualizar o tempo de vida do token em dias.
allowedRedirectUris string[] ["http://localhost:5173"] URIs de redirecionamento permitidos para callbacks de autenticação.

services.auth.password

Campo Tipo Default Description
enabled boolean true Habilitar a autenticação de email e senha para desenvolvimento local

services.auth.fabric

Campo Tipo Default Description
enabled boolean false Habilitar a autenticação intermediada do Fabric (Microsoft Entra ID SSO).

services.staticHosting

Campo Tipo Default Description
enabled boolean false Habilite a hospedagem de conteúdo estático.
root string Diretório raiz do projeto de front-end (em relação à raiz do projeto).
folder string "dist" Diretório que contém ativos estáticos criados (relativos a root).
buildCommand string Comando shell a ser executado antes do empacotamento (por exemplo, npm run build).
indexDocument string Documento padrão servido para o caminho raiz (por exemplo, index.html).

Dica

Todos os valores de string dão suporte à interpolação de variáveis de ambiente com a sintaxe ${VAR} e ${VAR:-default}. As variáveis são resolvidas a partir de rayfin/.env e do ambiente do shell.

rayfin/.env

O arquivo rayfin/.env é um arquivo de ambiente opcional usado para fornecer valores ao rayfin.yml por meio de interpolação. Não envie segredos para o seu repositório. Em vez disso, crie um rayfin/.env.example arquivo para fins de documentação e adicione .env ao arquivo .gitignore .

rayfin/tsconfig.json

O arquivo rayfin/tsconfig.json é uma configuração typeScript de referência de projeto usada pela CLI Fabric Apps para compilar suas definições de entidade. Ele estende o tsconfig.json raiz e substitui as configurações que Fabric apps precisam, como composite: true e resolução de módulo Node.js. Você não deve precisar editar esse arquivo diretamente.

Arquivos de modelo de dados

rayfin/data/*.ts

Os arquivos na rayfin/data/ pasta definem suas entidades. Entidades são classes TypeScript decoradas com @entity(), além de decoradores de campo como @uuid() e @text(). Cada arquivo de entidade exporta uma classe que representa um modelo de dados em seu aplicativo.

rayfin/data/schema.ts

O arquivo rayfin/data/schema.ts associa nomes de entidades às suas classes. O cliente SDK da Rayfin usa este mapa para fornecer acesso com segurança de tipos a entidades por meio de client.data.<Entity>. Ao adicionar uma nova entidade, você deve registrá-la neste arquivo de esquema.

Artefatos gerados

rayfin/.temp/

A rayfin/.temp/ pasta contém artefatos de back-end gerados que são criados quando você executa o servidor de desenvolvimento. Se o backend parecer estar usando um esquema ou uma configuração desatualizados, pare e reinicie a stack de desenvolvimento para regenerar esses arquivos.

Importante

Não faça commit da pasta .temp/ no seu repositório. Adicione-o ao arquivo .gitignore .

Estrutura de front-end

A src/ pasta contém o código do aplicativo de front-end. A estrutura exata depende de qual modelo você escolheu ao criar seu projeto, como React ou Vue.

os modelos de aplicativos Fabric usam as seguintes variáveis de ambiente do Vite para a configuração de front-end:

  • VITE_RAYFIN_API_URL – URL base apontando o front-end para o back-end do Fabric Apps. Defina essa variável de ambiente antes de executar npm run dev para substituir o padrão.
  • VITE_RAYFIN_PUBLISHABLE_KEY – Chave publicável usada para autenticação do cliente.
  • VITE_FABRIC_ITEM_ID – ID do item Fabric definida por rayfin up. Gravado em .env.fabric-<workspacename> (e .env.fabric) durante a implantação. Usado para autenticação intermediada do Fabric.
  • VITE_FABRIC_WORKSPACE_ID – ID do workspace do Fabric configurada por rayfin up. Escrito junto com VITE_FABRIC_ITEM_ID durante a implantação.