Sistema para acompanhamento de desenvolvimento de sistemas, desenvolvido com Node.js, Handlebars, TailwindCSS, PrismaORM e MySQL.
- Visualização de todos os projetos
- Seleção de projeto para acompanhamento
- Exibição de etapas e atividades com barras de progresso
- Visualização de prazos para cada etapa
- Checkboxes desabilitados mostrando o status de conclusão (somente visualização)
- Autenticação JWT
- CRUD completo de projetos
- CRUD completo de etapas com prazos
- CRUD completo de atividades
- Marcação de atividades como concluídas
- Interface moderna com tema dark
- Node.js - Runtime JavaScript
- Express - Framework web
- Handlebars - Template engine
- TailwindCSS - Framework CSS (tema dark)
- PrismaORM - ORM para banco de dados
- MySQL - Banco de dados
- JWT - Autenticação
- bcryptjs - Hash de senhas
-
Clone o repositório ou navegue até a pasta do projeto
-
Instale as dependências:
npm install- Configure o arquivo
.envcom suas credenciais do MySQL:
DATABASE_URL="mysql://usuario:senha@localhost:3306/follow_work?schema=public"
JWT_SECRET="sua_chave_secreta_jwt_aqui_altere_em_producao"
PORT=3000- Gere o cliente Prisma:
npm run prisma:generate- Execute as migrações do banco de dados:
npm run prisma:migrate- Execute o seed para criar os usuários iniciais e dados de exemplo:
npm run prisma:seed- Email: ofbsantos@gmail.com
- Senha: admin123456
- Email: rafaelnobreagro@gmail.com
- Senha: admin123
npm run devnpm startO sistema estará disponível em http://localhost:3000
follow-work/
├── config/
│ └── database.js # Configuração do Prisma
├── controllers/
│ ├── adminController.js # Controllers da área administrativa
│ └── publicController.js # Controllers da área pública
├── helpers/
│ └── handlebars.js # Helpers do Handlebars
├── middleware/
│ └── auth.js # Middleware de autenticação JWT
├── prisma/
│ ├── schema.prisma # Schema do Prisma
│ └── seed.js # Seed para dados iniciais
├── routes/
│ ├── admin.js # Rotas administrativas
│ └── public.js # Rotas públicas
├── views/
│ ├── layouts/
│ │ └── main.hbs # Layout principal
│ ├── admin/ # Views administrativas
│ ├── public/ # Views públicas
│ └── error.hbs # Página de erro
├── server.js # Arquivo principal do servidor
└── package.json
GET /- Lista de projetosGET /projects/:id- Detalhes do projeto
GET /admin/login- Página de loginPOST /admin/login- AutenticaçãoGET /admin/logout- LogoutGET /admin/projects- Lista de projetos (admin)GET /admin/projects/new- Formulário de novo projetoPOST /admin/projects- Criar projetoGET /admin/projects/:id/edit- Formulário de ediçãoPOST /admin/projects/:id- Atualizar projetoPOST /admin/projects/:id/delete- Deletar projetoGET /admin/projects/:projectId/stages- Lista de etapasGET /admin/projects/:projectId/stages/new- Formulário de nova etapaPOST /admin/projects/:projectId/stages- Criar etapaGET /admin/projects/:projectId/stages/:id/edit- Formulário de edição de etapaPOST /admin/projects/:projectId/stages/:id- Atualizar etapaPOST /admin/projects/:projectId/stages/:id/delete- Deletar etapaGET /admin/projects/:projectId/stages/:stageId/activities- Lista de atividadesGET /admin/projects/:projectId/stages/:stageId/activities/new- Formulário de nova atividadePOST /admin/projects/:projectId/stages/:stageId/activities- Criar atividadeGET /admin/projects/:projectId/stages/:stageId/activities/:id/edit- Formulário de edição de atividadePOST /admin/projects/:projectId/stages/:stageId/activities/:id- Atualizar atividadePOST /admin/projects/:projectId/stages/:stageId/activities/:id/delete- Deletar atividadePOST /admin/activities/:id/toggle- Alternar status de conclusão da atividade
- id, name, email, password, createdAt, updatedAt
- id, name, description, createdAt, updatedAt
- id, name, description, deadline, projectId, createdAt, updatedAt
- id, name, description, completed, stageId, createdAt, updatedAt
- Node.js
- Express.js
- Handlebars
- TailwindCSS
- PrismaORM
- MySQL