;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Logo Pagbenk Seu dinheiro rende mais
Topo

Food truck: a nova mania dos jovens empreendedores

José Dornelas

Colunista do UOL

08/12/2014 06h00

Quem mora em São Paulo já deve no mínimo ter ouvido falar da proliferação de um modelo de negócio que está sendo a escolha de muitos jovens que querem empreender. Trata-se do food truck, ou um veículo adaptado onde se vende comida e/ou bebida.

Algo comum nos Estados Unidos, apenas recentemente começou a crescer no Brasil, principalmente nas grandes cidades. Em São Paulo, há várias feiras gastronômicas que oferecem uma variedade incrível de food trucks, desde comida, bebida, sobremesa etc.

Além das feiras gastronômicas, os empreendedores costumam atender eventos fechados, festas, e ainda ficar estacionados em pontos estratégicos em parceria com estabelecimentos ou lojas físicas.

O investimento inicial para um negócio de food truck pode variar de R$ 20 mil a mais de R$ 300 mil. Mas, como em qualquer negócio, o empreendedor precisa se preocupar com o planejamento antes de se lançar na iniciativa.

Eu tenho visitado várias dessas feiras gastronômicas na cidade de São Paulo e, além de saborear as ofertas de comida e bebida, sempre procuro conversar com os empreendedores para entender sua motivação e como o negócio está evoluindo.

A primeira constatação é que a maioria dos empreendedores é muito jovem, bem formada, que já teve uma experiência anterior no mundo corporativo, mas que quer autonomia e construir o próprio projeto e, principalmente, fazer algo que lhe dê prazer.

Porém, de todos com os que tenho conversado, com raras exceções, a visão de crescimento do negócio é muito limitada. O foco tem sido apenas no agora, em conseguir participar do máximo de eventos possível, com pouco tempo dedicado à gestão estratégica do negócio.

Como poucos pensam sobre o modelo de crescimento do negócio, começam a surgir os problemas. Como exemplo, um food truck que vende hambúrgueres só dá lucro em uma feira que cobra um dos alugueis diários mais caros da cidade a partir de 70 unidades vendidas.

Parece pouco, mas em conversa com o empreendedor dono do negócio, nem sempre a meta é atingida. E nesse caso o investimento foi de cerca de R$ 150 mil.

Em resumo, muitos estão criando negócios de alto risco e pouco retorno, seguindo um modismo. Infelizmente, muitos ficarão pelo caminho, não só devido à concorrência já acirrada no setor, mas porque não criaram um modelo sustentável de crescimento.

Essa é a essência do empreendedorismo. Os empreendedores precisam pensar, sempre, em como ganhar escala ou, se optarem por não crescer, em criar uma marca forte o bastante para ser perene e atrair cada vez mais clientes.

Mas o setor de gastronomia é um dos que mais punem o empreendedor, haja vista a alta taxa de mortalidade de empresas na área. É raro um restaurante, bar, lanchonete, ultraar os cinco anos de vida nesse ramo.

Se você gosta e quer se envolver com o setor, criando seu food truck, planeje bem o negócio, faça cenários e desenvolva uma visão de negócio que leve em consideração o crescimento da empresa. O risco de pensar pequeno, nesse caso, é maior que o de pensar grande.