6 min

Como criar um aplicativo web para solicitações internas de serviço

Aprenda como planejar, projetar e construir um aplicativo web que coleta solicitações internas, roteia aprovações, rastreia SLAs e reporta desempenho com segurança.

Como criar um aplicativo web para solicitações internas de serviço

Defina o problema e os objetivos

Antes de desenhar telas ou escolher uma stack, seja específico sobre o que seu aplicativo de solicitações internas está resolvendo. A maioria das equipes já tem um “sistema” — ele só está espalhado por threads de e-mail, mensagens de chat, planilhas e conversas no corredor. Esse arranjo oculta trabalho, cria solicitações duplicadas e dificulta responder uma pergunta simples: “Quem é o responsável por isso e quando vai ficar pronto?”

Comece escrevendo uma declaração de problema curta e um objetivo v1, por exemplo: “Fornecer um portal único de solicitações de funcionários para acesso de TI e reparos de Facilities com responsabilidade clara, aprovações quando necessárias e visibilidade de SLA.”

Tipos comuns de solicitações a suportar

As solicitações internas geralmente se agrupam em algumas categorias:

  • TI: novo laptop, acesso a ferramentas, reset de senha, instalação de software
  • RH: cartas de emprego, dúvidas sobre benefícios, tarefas de onboarding
  • Facilities: mudanças de mesa, reparos, pedidos de limpeza, problemas em salas de reunião
  • Finanças: dúvidas sobre despesas, cadastro de fornecedor, aprovações de compra
  • Segurança: acesso por crachá, relatórios de incidente, exceções de política

Você não precisa resolver todos os casos de borda no dia um, mas deve escolher um escopo inicial claro (por exemplo: “Acesso de TI + reparos de Facilities”).

O que está quebrado hoje (capture a dor)

Escreva em linguagem simples os pontos de falha atuais:

  • Solicitações ficam enterradas em longos threads de e-mail
  • Planilhas ficam desatualizadas no momento em que são compartilhadas
  • Responsabilidade é incerta, então funcionários cobram repetidamente
  • Aprovações acontecem em mensagens privadas, sem trilha de auditoria

Essa lista vira sua estrela guia para o que o app deve corrigir.

Para quem o app serve

Defina seus usuários principais e o que cada um precisa:

  • Funcionários: um portal simples para enviar, acompanhar e esclarecer solicitações
  • Aprovadores: decisões rápidas com contexto (e registro do motivo)
  • Agentes/solucionadores: uma fila limpa, prioridades e repasses
  • Admins: configuração, relatórios e aplicação de políticas

Métricas de sucesso (deixe mensurável)

Defina objetivos que possam ser monitorados após o lançamento: tempo de resolução mais rápido, menos follow-ups por ticket, maior velocidade de primeira resposta e responsabilidade mais clara (por exemplo, “toda solicitação tem um responsável dentro de 1 hora útil”). Essas métricas guiam decisões de produto e ajudam a provar que o app está funcionando.

Mapeie usuários, papéis e responsabilidades

Antes de desenhar telas ou fluxos, deixe claro quem usa o app e o que cada pessoa pode (e deve) fazer. A maioria dos sistemas de solicitação interna falha porque papéis são confusos: as pessoas não sabem quem é responsável pelo próximo passo e as solicitações vão ping-pong.

Papéis principais de usuário

Funcionário (solicitante)

Os funcionários devem conseguir enviar uma solicitação em minutos e confiar que ela não vai sumir.

  • Enviar uma solicitação na categoria certa (p.ex., TI, Facilities, People Ops)
  • Anexar arquivos (prints, PDFs, fotos) e adicionar contexto
  • Verificar status e ver o que é necessário deles

Aprovador

Aprovadores mantêm gastos, acessos e decisões de política sob controle.

  • Revisar solicitações atribuídas a eles
  • Pedir mudanças ou detalhes adicionais (sem rejeitar prematuramente)
  • Aprovar ou negar com motivo claro e timestamp

Agente / Solucionador

Agentes são as pessoas que realmente fazem o trabalho e comunicam o progresso.

  • Triagem: validar categoria, urgência e completude
  • Executar a solicitação, fazer perguntas e postar atualizações
  • Fechar a solicitação com notas de resolução (e opcional prompt de satisfação)

Admin

Admins mantêm o sistema organizado e seguro.

  • Gerenciar categorias, formulários e campos obrigatórios
  • Definir permissões (quem pode ver o quê) e atribuições de papel
  • Configurar SLAs, horários de operação e regras de escalonamento

Torne a propriedade explícita

Para cada tipo de solicitação, defina:

  • Quem é responsável pela entrega final (time ou indivíduo)
  • Quem aprova (e quando a aprovação é necessária)
  • Quem pode reatribuir ou mudar prioridade
  • Quem pode ver solicitações sensíveis (p.ex., RH ou segurança)

Uma tabela RACI simples na sua especificação evita confusão e facilita decisões de fluxo mais adiante.

Escolha recursos centrais para a v1

Um portal de solicitações interno v1 deve fazer algumas coisas extremamente bem: permitir que funcionários submetam solicitações claras, levá-las ao time certo rapidamente e manter todos informados até a conclusão. Se você tentar incluir todo caso de borda no dia um, vai retardar a entrega e ainda faltar o que os usuários realmente precisam.

1) Envio de solicitação (dificulte solicitações “ruins”)

Comece com um conjunto pequeno de categorias (por exemplo: Ajuda de TI, Facilities, RH, Compras). Cada categoria deve suportar campos dinâmicos para que o formulário só pergunte o que é relevante.

Inclua:

  • Básicos obrigatórios: título, descrição, solicitado-por, localização/departamento
  • Campos específicos por categoria (p.ex., “modelo do laptop”, “sistema de acesso”, “motivo de urgência”)
  • Anexos (prints, PDFs) com limites de tamanho claros

2) Regras de roteamento (chegue na fila certa)

Sua v1 precisa de atribuição previsível: por categoria, departamento, localização ou regras por palavra-chave. Adicione prioridade (baixo/médio/alto) e um caminho simples de escalonamento (p.ex., “não atribuído por 24 horas” ou “alta prioridade inativa por 4 horas”). Mantenha o editor de regras mínimo; você sempre pode torná-lo mais flexível depois.

3) Aprovações (só quando necessário)

Suporte aprovação de etapa única primeiro (gerente ou dono do orçamento). Se aprovações são críticas, adicione aprovações condicionais (ex.: “acima de $500 exige Financeiro”). Cadeias multi-step podem esperar, a menos que sejam seu tipo de solicitação principal.

4) Notificações (reduza perseguição por status)

Inclua e-mail e notificações in-app para: solicitação recebida, atribuída, precisa de informação, aprovada/negada, concluída. Adicione lembretes para aprovadores e responsáveis em itens atrasados.

5) Busca + autoatendimento leve

Antes do envio e na lista de solicitações, ofereça busca com filtros (categoria, status, solicitante). Adicione “solicitações semelhantes” e links para páginas de conhecimento para que usuários resolvam problemas comuns sem abrir ticket.

Modele os dados da solicitação

Um modelo de dados claro torna todo o resto mais fácil: formulários ficam consistentes, fluxos podem ser automatizados e relatórios são confiáveis. Comece decidindo o que é uma “solicitação” na sua organização e quais detalhes devem ser capturados sempre.

Defina os campos de intake

Mantenha o formulário inicial enxuto, mas completo o bastante para que o time receptor atue sem idas e vindas. Um baseline prático inclui:

  • Título: resumo curto (“Substituição de laptop”)
  • Descrição: o que é necessário, contexto, restrições
  • Categoria + subcategoria: para onde deve ser roteado
  • Urgência/prioridade: quão sensível ao tempo é (mesmo que v1 use baixo/médio/alto)
  • Informações do solicitante: identidade, time/departamento, localização, método de contato preferido

Padronize categorias para reduzir confusão

Categorias devem refletir como o trabalho está organizado (TI, Facilities, RH, Finanças), enquanto subcategorias refletem tipos repetíveis de trabalho (ex.: TI → “Pedido de Acesso”, “Hardware”, “Software”). Mantenha nomes amigáveis e evite duplicados (“Onboarding” vs “Configuração de Novo Contratado”).

Se as escolhas de categoria crescerem, versione-as em vez de renomear silenciosamente — isso protege relatórios e reduz confusão.

Validações e padrões que melhoram a qualidade

Use validação para evitar tickets vagos e faltas de roteamento:

  • Exigir comprimento mínimo na descrição (ou prompts guiados como “Qual é o objetivo?”)
  • Fornecer padrões (p.ex., urgência padrão “Normal”)
  • Auto-preencher campos do solicitante a partir do diretório
  • Mostrar campos dinâmicos apenas quando relevantes (p.ex., “Prédio” só para Facilities)

Modelo de status (e o que significa)

Escolha um ciclo de vida simples que os times não reinterpretarão, e defina o significado de cada status:

  • New → In Triage → Waiting for Info → Pending Approval → In Progress → Done
  • Inclua Canceled para solicitações retiradas ou inválidas

Escreva regras de transição (quem pode mover para Pending Approval? quando Waiting for Info é permitido?) e armazene uma trilha de auditoria de mudanças de status, atribuições, aprovações e edições importantes.

Planeje a experiência do usuário e as telas

Do fluxo de trabalho ao código
Crie telas React, APIs em Go e tabelas PostgreSQL a partir de uma descrição clara do fluxo.

Um app de solicitações vence ou perde pela rapidez com que funcionários conseguem submeter uma solicitação e pela simplicidade com que os times a processam. Antes de construir, esboce as telas centrais e o “happy path” para cada papel: solicitante, aprovador e responsável.

1) Formulário de solicitação (envio)

Trate o formulário como um fluxo guiado, não uma página única intimidadora. Use seções por etapas (ou divulgação progressiva) para que funcionários vejam só o que importa para a categoria escolhida.

Deixe expectativas explícitas: mostre quais informações são obrigatórias, tempos típicos de resposta e o que acontece depois do envio. Tooltips e textos de ajuda evitam idas e vindas (“O que conta como ‘urgente’?” “Quais arquivos anexar?”).

2) Lista de solicitações (inbox / fila)

Quem processa solicitações precisa de uma lista estilo inbox que suporte triagem rápida.

Inclua filtros que batem com o trabalho real:

  • Status (new, waiting on requester, pending approval, in progress, done)
  • Categoria (TI, Facilities, RH, Finanças, etc.)
  • Assignee ou time
  • Intervalo de datas (criado / vencimento)

Projete as linhas para responder “o que é isto e o que devo fazer a seguir?” de relance: título, solicitante, prioridade, status atual, indicador de data de vencimento/SLA e próxima ação.

3) Página de detalhe da solicitação (fonte única da verdade)

A página de detalhe é onde a colaboração acontece. Ela deve combinar:

  • Uma timeline de mudanças de status e aprovações (sua trilha de auditoria em linguagem simples)
  • Comentários visíveis ao solicitante
  • Notas internas apenas para equipe
  • Anexos com permissões claras (quem pode ver/baixar)

Mantenha ações primárias em destaque (aprovar/recusar, atribuir, mudar status) e torne as secundárias descobertas sem atrapalhar.

Noções básicas de acessibilidade (não adie)

Planeje acessibilidade desde os wireframes: navegação por teclado para todas as ações, contraste de cores suficiente (não dependa só da cor para status) e labels legíveis que funcionem com leitores de tela.

Construa fluxos e lógica de aprovação

Itere sem medo
Experimente fluxos de trabalho com segurança usando snapshots e rollback quando mudanças falharem.

Fluxos transformam um simples “formulário + inbox” numa experiência de serviço previsível. Defina-os cedo para que solicitações não fiquem presas, aprovações não sejam arbitrárias e todos saibam o que significa “feito”.

Fluxo de submissão: criar → confirmar → acompanhar

Comece com um caminho de submissão limpo que reduza idas e vindas:

  • Create: funcionário seleciona um tipo de solicitação e responde só o necessário.
  • Confirm: mostre uma tela de resumo com detalhes chave (categoria, urgência, local, anexos) antes de enviar.
  • Track: após o envio, forneça um ID de solicitação, status atual e o próximo passo esperado (p.ex., “triagem em até 4 horas”).

Fluxo de triagem: auto-atribuir → priorizar → clarificar

Triagem impede que o sistema vire uma caixa de e-mail compartilhada.

  • Auto-assign baseado em tipo de solicitação, local, departamento ou rodízio on-call.
  • Priorizar usando regra clara (impacto × urgência), não feeling.
  • Clarificar movendo para Waiting for Info com um template de pergunta estruturada. Não reinicie o relógio silenciosamente — registre isso.

Fluxo de aprovação: quem aprova o quê e quando ignorar

Aprovações devem ser dirigidas por política e consistentes:

  • Defina matrizes de aprovação (ex.: “Nova compra de software > $200 requer Gerente + Financeiro”).
  • Use acesso baseado em função para que apenas aprovadores autorizados possam decidir em categorias específicas.
  • Adicione regras de bypass para itens de baixo risco (ex.: reset de senha) ou emergências com motivo explícito.
  • Mantenha sempre uma trilha de auditoria: quem aprovou, quando, o que mudou e comentários.

Fluxo de escalonamento: avisos de SLA, repasses, reatribuições

Escalonamento não é punição; é rede de segurança.

  • Envie avisos de SLA antes do estouro (p.ex., 75% do limite) para o responsável e líder do time.
  • Suporte handoffs (troca de turno) com transferência de propriedade e uma nota.
  • Permita reatribuições com códigos de motivo obrigatórios, para identificar problemas de pessoal e roteamento depois.

Feitos corretamente, esses fluxos mantêm solicitações em movimento e dão resultados previsíveis aos funcionários e responsabilidade clara aos times.

Crie o esquema de banco de dados

Um bom esquema de banco torna o app mais fácil de manter, reportar e evoluir. Mire em um conjunto “core” limpo de tabelas e acrescente tabelas de suporte para flexibilidade e analytics.

Entidades core (coluna vertebral)

Comece com as tabelas que você tocará em quase toda tela:

  • users: id, name, email, status, created_at
  • roles: id, name (ex.: Employee, Approver, Agent, Admin)
  • user_roles: user_id, role_id (many-to-many)
  • teams: id, name; e team_members (team_id, user_id)
  • requests: id, requester_id, category_id, title, description, status, priority, assigned_team_id/assigned_user_id, created_at, updated_at, resolved_at
  • comments: id, request_id, author_id, body, visibility (internal/public), created_at
  • attachments: id, request_id, uploaded_by, file_name, storage_key, size, created_at

Mantenha requests.status como um conjunto controlado de valores e armazene timestamps para relatórios de ciclo de vida.

Entidades de suporte (estrutura e flexibilidade)

Para suportar diferentes tipos de solicitação sem criar novas tabelas cada vez:

  • categories: id, name, default_team_id, active
  • form_fields: id, category_id, key, label, type, required, sort_order
  • request_field_values: request_id, field_id, value (frequentemente text/JSON)
  • approvals: id, request_id, step, approver_id, decision (pending/approved/rejected), decided_at
  • sla_policies: id, category_id, priority, response_due_minutes, resolve_due_minutes

Eventos de auditoria e relatórios

Para uma trilha de auditoria, crie audit_events com request_id, actor_id, event_type, old_value/new_value (JSON) e created_at. Registre mudanças de status, de atribuição e aprovações explicitamente.

Para reporting, use views (ou tabelas dedicadas mais tarde) como:

  • Tempos de resolução e resposta (rastreio de SLA)
  • Backlog por time/assignee
  • Volume por categoria e prioridade

Indexe requests(status, created_at), requests(assigned_team_id) e audit_events(request_id, created_at) para manter consultas comuns rápidas.

Escolha a stack tecnológica e arquitetura

Assuma a base de código
Mantenha controle total com exportação do código-fonte quando estiver pronto para customizações mais profundas.

Um app de solicitações tem sucesso quando é fácil de mudar. Sua primeira versão vai evoluir conforme times adicionam novos tipos de solicitação, etapas de aprovação e regras de SLA — então escolha tecnologia que seu time consiga manter, não só o que está na moda.

Comece com o que seu time já entrega

Para a maioria das solicitações internas, escolhas “sem surpresa” vencem:

  • Frontend: React ou Vue pareados com uma biblioteca de componentes (ex.: Material UI, Ant Design, Vuetify). Isso acelera formulários, tabelas e modais consistentes — perfeito para um portal de funcionários.
  • Backend: Node/Express, Django, Rails ou .NET. Escolha o que seu time conhece para que automações de workflow e lógica de ticketing sejam construídas mais rápido e com menos surpresas.

Se o objetivo é avançar ainda mais rápido (especialmente para uma ferramenta interna), considere gerar uma base funcional com Koder.ai. É uma plataforma de desenvolvimento guiada por chat onde você descreve o portal de solicitações e itera em features (formulários, filas, aprovações, notificações) com um fluxo baseado em agentes. Koder.ai costuma mirar React no frontend e Go + PostgreSQL no backend, suporta exportação de código, deployment/hosting, domínios customizados e snapshots com rollback — útil quando você refina automações de fluxo rapidamente. Preços variam entre Free, Pro, Business e Enterprise, permitindo pilotos antes de um compromisso.

Perguntas frequentes

What should I define before building an internal service request web app?

Comece escolhendo um escopo estreito e com alto volume (por exemplo, solicitações de acesso de TI + reparos de Facilities). Documente o que está quebrado hoje (e-mails enterrados, responsabilidade pouco clara, sem trilha de auditoria), defina os usuários principais (solicitantes, aprovadores, agentes, administradores) e estabeleça métricas mensuráveis de sucesso (como “toda solicitação tem um responsável dentro de 1 hora útil”).

Which request types should a v1 internal portal support?

A maioria das solicitações internas se enquadra em categorias recorrentes:

  • TI: acesso, reinicialização de senha, instalações, hardware
  • RH/People Ops: cartas, tarefas de onboarding, dúvidas sobre benefícios
  • Facilities: reparos, limpeza, mudanças de mesa, problemas em salas
  • Finanças: cadastro de fornecedor, aprovações de compra, dúvidas de despesas
  • Segurança: acesso a crachá, relatórios de incidente, exceções de política

Comece com as categorias que são frequentes e causam mais dor, e só expanda quando os fluxos estiverem estáveis.

What roles do I need, and what should each be allowed to do?
  • Employee (solicitante): criar e acompanhar solicitações, anexar arquivos, responder a perguntas
  • Approver (aprovador): aprovar/negarexplicando o motivo e registrando o timestamp, solicitar mudanças
  • Agent/Resolver (agente/solucionador): triagem, executar o trabalho, comunicar, encerrar com nota de resolução
  • Admin (administrador): gerenciar categorias/forms, permissões, SLAs, regras de escalonamento

Adicione um RACI simples na sua especificação para que propriedade e repasses não fiquem ambíguos.

How do I design request intake so employees submit useful tickets?

Concentre-se em dificultar o envio de solicitações “ruins”:

  • Mantenha as categorias limitadas e use campos dinâmicos por categoria
  • Exija um título claro + descrição e valide a completude
  • Preencha automaticamente dados do solicitante a partir do diretório
  • Suporte anexos com limites de tamanho/tipo

Uma triagem de entrada com qualidade reduz as idas e vindas e acelera o roteamento e as aprovações.

What’s the simplest effective way to route and assign requests?

Deixe o roteamento previsível e mínimo na v1:

  • Atribua por categoria, departamento, local ou regras simples por palavra-chave
  • Adicione um campo de prioridade (baixo/médio/alto)
  • Inclua um gatilho de escalonamento simples (por exemplo, “não atribuído por 24 horas” ou “alta prioridade inativa por 4 horas”)

Mantenha o editor de regras simples; complexidade vem depois, com padrões reais.

How should approvals work in an internal request system?

Comece com aprovação de etapa única (gerente ou responsável pelo orçamento) e exija aprovações apenas onde a política pedir.

Para crescer:

  • Adicione regras condicionais (ex.: “> $500 exige Financeiro”)
  • Use autorização baseada em função para que apenas aprovadores válidos possam decidir
  • Registre sempre quem aprovou, quando e por quê em uma trilha de auditoria

Evite cadeias multi-step a menos que sejam o tipo de solicitação principal desde o dia 1.

What statuses should I use, and how do I avoid status confusion?

Use um ciclo de vida pequeno e compartilhado com significados claros, por exemplo:

  • New → In Review → Approved → In Progress → Waiting → Done
  • Inclua Canceled para solicitações retiradas ou inválidas

Documente regras de transição (quem pode mudar o que) e armazene uma trilha de auditoria de mudanças de status, atribuições e aprovações para que as decisões sejam rastreáveis.

Which screens and UX flows are essential for v1?

Pense em três telas essenciais mais uma vista de detalhe robusta:

  • Formulário de solicitação: fluxo guiado com divulgação progressiva e expectativas claras
  • Lista de solicitações (fila/caixa de entrada): filtros por status/categoria/responsável/data; linhas mostram próxima ação
  • Detalhe da solicitação: linha do tempo (trilha de auditoria), comentários públicos, notas internas, anexos, ações principais

Inclua acessibilidade desde o início (suporte a teclado, contraste, labels para leitores de tela).

What database tables do I need for a service request app?

Um esquema prático inclui:

  • Core: users, roles, user_roles, teams, requests, comments, attachments
  • Flexibilidade: categories, form_fields, request_field_values
  • Workflow: approvals, sla_policies
  • Rastreabilidade: audit_events

Indexe consultas comuns (como requests(status, created_at) e audit_events(request_id, created_at)) para que filas e linhas do tempo fiquem rápidas.

What security and compliance basics should I implement early?

Priorize fundamentos empresariais:

  • SSO (SAML/OIDC) com o provedor de identidade da empresa
  • RBAC e visibilidade por equipe (funcionários veem os próprios; equipes veem o que está atribuído a elas)
  • Criptografe dados em trânsito (HTTPS) e proteja segredos via um gerenciador de segredos
  • Proteja uploads (validação de tipo/tamanho; varredura de malware se necessária)
  • Mantenha logs de auditoria append-only para aprovações e ações sensíveis

Essas escolhas evitam retrabalho quando chegarem solicitações de RH/finanças/segurança.

Related posts