Este projeto pode ser seu primeiro freela Full Stack!
Neste post você vai aprender a criar um sistema de login com dashboard usando Node.js, Express, HTML, CS, e Chart.js com potencial de cobrar até R$2.000.
Este projeto é perfeito para freelancers que querem vender uma solução simples e funcional para pequenas empresas. Vamos detalhar a construção de um sistema com uma tela de login e um dashboard com gráficos, mostrar como rodar o sistema localmente, além de sugerir formas de incrementá-lo para atrair novos clientes.
O código fornecido será usado como base, com explicações claras para que você possa adaptá-lo e usá-lo como template para seus projetos.
Para receber por e-mail um arquivo com o código utilizado aqui, preencha:
Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.
O que você vai ver hoje?
Por que criar um sistema de login com dashboard?
Este tipo de projeto é ideal para pequenas empresas que precisam de um sistema simples para gerenciar acessos e visualizar dados, como relatórios de vendas ou acessos ao site.
Ele combina frontend (nesse caso, a interface de login e o dashboard) e backend (autenticação e rotas). Então, além de ser um ótimo ponto de partida para freelancers, também é um projeto que vai te mostrar como funciona um sistema full stack.
- Benefícios:
- Fácil de implementar e personalizar para diferentes clientes.
- Alta demanda por sistemas de login e visualização de dados.
- Pode ser escalado com mais funcionalidades, aumentando o valor do projeto.

Estrutura do Projeto
O projeto é composto por um backend em Node.js com Express, para gerenciar autenticação e rotas, e um frontend com HTML, CSS, e Chart.js para exibir gráficos no dashboard.
A estrutura de pastas e arquivos, que você pode baixar ali em cima, inclui:
- /public: Contém arquivos estáticos como style.css e dashboard.js.
- /views: Contém as páginas login.html e dashboard.html.
- /server.js: Configura o servidor backend com Express.
- /.env: Armazena variáveis de ambiente (ex.: credenciais de login).
- /package.json: Lista as dependências do projeto.
Passo a Passo para Criar o Sistema
1. Configurando o Ambiente
Dica: Antes de prosseguir, se você quer entender melhor como funciona o Node.js e os comandos com npm, veja uma explicação detalhada neste artigo.
Pra começar, crie uma pasta para o projeto e inicialize um projeto Node.js inserindo o seguinte comando no terminal:
npm init -y
Adicione o campo "type": "module" ao package.json para usar importações ES6:
{
"name": "freela-dashboard",
"version": "1.0.0",
"type": "module",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.17.1",
"dotenv": "^16.0.3"
}
}Instale as dependências:
npm install express dotenv
Crie um arquivo .env para armazenar as credenciais de login (não compartilhe este arquivo publicamente) Exemplo:
USER=admin
PASS=1234
PORT=30002. Criando o Backend com Node.js e Express
O arquivo server.js configura o servidor, define rotas para login e dashboard, e autentica usuários com base nas credenciais do .env.text
import express from "express";
import path from "path";
import dotenv from "dotenv";
dotenv.config();
const app = express();
const PORT = process.env.PORT || 3000;
// Middleware
app.use(express.static("public"));
app.use(express.urlencoded({ extended: true }));
// Rotas
app.get("/", (req, res) => {
res.sendFile(path.resolve("views/login.html"));
});
app.post("/login", (req, res) => {
const { usuario, senha } = req.body;
// Simulação de login
if (usuario === process.env.USER && senha === process.env.PASS) {
res.sendFile(path.resolve("views/dashboard.html"));
} else {
res.send("<h2>Login inválido. <a href='/'>Tente novamente</a></h2>");
}
});
app.listen(PORT, () => {
console.log(`Servidor rodando em http://localhost:${PORT}`);
});Explicação do código:
- Dotenv: Carrega variáveis de ambiente do arquivo .env.
- Middleware:
- express.static("public"): Serve arquivos estáticos (CSS, JS) da pasta public.
- express.urlencoded: Permite processar dados de formulários HTML.
- Rotas:
- GET /: Exibe a tela de login (login.html).
- POST /login: Verifica as credenciais do formulário; se válidas, exibe o dashboard; caso contrário, mostra uma mensagem de erro.
- Servidor: Escuta na porta definida no .env (ou 3000 por padrão).
3. Criando a Tela de Login
A página login.html contém um formulário simples para autenticação.
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8" />
<title>Login - Freela Dashboard</title>
<link rel="stylesheet" href="/css/style.css" />
</head>
<body>
<div class="login-container">
<h1>Login</h1>
<form action="/login" method="POST">
<input type="text" name="usuario" placeholder="Usuário" required />
<input type="password" name="senha" placeholder="Senha" required />
<button type="submit">Entrar</button>
</form>
</div>
</body>
</html>Explicação do código:
- Formulário: Envia um POST para /login com os campos usuario e senha.
- Estilização: Vincula o arquivo style.css para um design limpo.
- Funcionalidade: Os dados do formulário são enviados ao backend para autenticação.
4. Criando o Dashboard com Gráficos
A página dashboard.html exibe um gráfico de barras usando Chart.js, mostrando dados mockados de acessos ao site.
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8" />
<title>Dashboard - Freela</title>
<link rel="stylesheet" href="/css/style.css" />
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<div class="dashboard-container">
<h1>Dashboard de Acessos</h1>
<canvas id="graficoAcessos" width="400" height="200"></canvas>
</div>
<script src="/js/dashboard.js"></script>
</body>
</html>O arquivo dashboard.js configura o gráfico com Chart.js:
const ctx = document.getElementById("graficoAcessos");
new Chart(ctx, {
type: "bar",
data: {
labels: ["Seg", "Ter", "Qua", "Qui", "Sex"],
datasets: [
{
label: "Visitas no site",
data: [12, 19, 3, 5, 10],
backgroundColor: "#4CAF50",
},
],
},
options: {
responsive: true,
scales: {
y: {
beginAtZero: true,
},
},
},
});Explicação do código:
- Chart.js: Usado via CDN para criar um gráfico de barras responsivo.
- Dados: Mostra acessos semanais mockados (ex.: 12 visitas na segunda-feira).
- Configuração: Define o tipo de gráfico (bar), rótulos (labels), e opções como responsividade.

5. Estilização com CSS
A pasta para download também inclui um .css bem simples para estilizar a página.
Como aumentar o valor do projeto
Este projeto pode ser vendido como um freelancer por R$ 500 a R$ 2.000, dependendo da complexidade.
Aqui estão formas de aumentar o valor do projeto:
- Mais gráficos: Adicione outros tipos de gráficos (ex.: linha, pizza) usando a documentação do Chart.js.
- Integração com API: Substitua os dados mockados por uma API real, como um banco de dados de vendas ou Google Analytics.
- Autenticação avançada: Implemente tokens JWT para segurança.
- Design aprimorado: Use frameworks como Tailwind CSS para um visual mais moderno.
- Deploy online: Hospede o projeto em plataformas como Heroku ou Vercel para fornecer um link ao cliente.
Níveis de Complexidade e Preço
| Complexidade | Funcionalidades | Preço Estimado |
|---|---|---|
| Básico | Login simples, dashboard com 1 gráfico mockado | R$ 500 - R$ 800 |
| Intermediário | Múltiplos gráficos, integração com API simples | R$ 800 - R$ 1.500 |
| Avançado | Autenticação com token, banco de dados, design | R$ 1.500 - R$ 2.000+ |
Conclusão
Você aprendeu aqui a criar uma página de login com dashboard, uma excelente ferramenta para freelancers iniciantes ou experientes conseguirem entrar no mercado.
Com Node.js, Express, e Chart.js, você pode construir um projeto funcional e vendável em poucas horas. Use o código fornecido como template, personalize ele com dados reais ou gráficos adicionais, e ofereça a pequenas empresas que precisam de soluções práticas.
Se quiser ver mais dicas e guias como este sobre, veja os outros conteúdos de Full Stack em nosso blog!
E caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Hashtag Treinamentos
Para acessar publicações de Full Stack, clique aqui!
Posts mais recentes de Full Stack
- LESS CSS: Guia Completo do Pré-processador (2026)LESS CSS é um pré-processador que adiciona variáveis, mixins, nesting e operações matemáticas ao CSS. Aprenda a configurar e usar com projeto prático.
- Variáveis no CSS (CSS Variables): Como Usar de Forma ProfissionalVocê sabe o que são Variáveis no CSS (CSS Variables)? Aprenda como usar técnicas que vão transformar a forma como você escreve variáveis CSS.
- Try Catch no JavaScript: Programação Defensiva na PráticaAprenda a usar try catch no JavaScript e melhore a sua programação defensiva!
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.









