Contexto Project
- Tipo: 
object - Origem: Contexto Nullstack
 - Disponibilidade: server/client
 - readwrite no contexto do server
 - readonly no contexto do client
 
Ele te dá informações sobre o manifest do app e algumas metatags.
As chaves de project serão usadas para gerar metatags durante a renderização do lado do servidor e devem ser definidas antes que initiate seja resolvido.
As chaves de project serão usadas para gerar o manifest do app.
A chave disallow será usada para gerar o robots.txt.
As chaves a seguir estão disponíveis no objeto e são suportadas como variáveis de ambiente da seguinte maneira:
- domain: 
string(NULLSTACK_PROJECT_DOMAIN) - name: 
string(NULLSTACK_PROJECT_NAME) - shortName: 
string(NULLSTACK_PROJECT_SHORT_NAME) - color: 
string(NULLSTACK_PROJECT_COLOR) - backgroundColor: 
string - type: 
string - display: 
string - orientation: 
string - scope: 
string - root: 
string - icons: 
object - favicon: 
string(url relativo ou absoluto) - disallow: 
arraydestring(caminhos relativos) - sitemap: 
booleanoustring(url relativo ou absoluto) - cdn: 
string(NULLSTACK_PROJECT_CDN) - protocol: 
string(NULLSTACK_PROJECT_PROTOCOL) 
Além de domain, name and color todas as outras chaves tem padrões sensíveis gerados com base no escopo do aplicativo.
Se você não declarar a chave icons, Nullstack irá escanear quaisquer ícones com o nome seguindo o padrão "icon-[LARGURA]x[ALTURA].png" na sua pasta public.
A meta tag apple-touch-icon de head irá ser igual ao seu arquivo icon-180x180.png.
Se a chave sitemap estiver definida como true o seu arquivo robots.txt irá apontar o sitemap para https://${project.domain}/sitemap.xml.
A chave cdn irá prefixar seu pacote de assets e ficará disponível no contexto para que você possa manualmente prefixar outros ativos.
A chave protocol é "http" no modo de desenvolvimento e "https" e no modo produção por predefinição.
// server.js
import Nullstack from 'nullstack';
import Application from './src/Application';
const context = Nullstack.start(Application);
context.start = function() {
  const { project } = context;
  project.name = 'Nullstack';
  project.shortName = 'Nullstack';
  project.domain = 'nullstack.app';
  project.color = '#d22365';
  project.backgroundColor = '#d22365';
  project.type = 'website';
  project.display = 'standalone';
  project.orientation = 'portrait';
  project.scope = '/';
  project.root = '/';
  project.icons = {
    '72': '/icon-72x72.png',
    '128': '/icon-128x128.png',
    '512': '/icon-512x512.png'
  };
  project.favicon = '/favicon.png';
  project.disallow = ['/admin'];
  project.sitemap = true;
  project.cdn = 'cdn.nullstack.app';
  project.protocol = 'https';
}
export default context;
Mais sobre o
context.startem inicialização da aplicação.
// src/Application.njs
import Nullstack from 'nullstack';
class Application extends Nullstack {
  prepare({project, page}) {
    page.title = project.name;
  }
}
export default Application;
💡 Você pode substituir o manifest.json gerado automaticamente e robots.txt inserindo o seu próprio arquivo na pasta public