# 🛠️ Helpdesk TI — Sistema Interno de Chamados Sistema interno de gerenciamento de chamados de TI, desenvolvido para rodar em infraestrutura própria (on-premise). ## Stack Tecnológica | Camada | Tecnologia | |------------|-------------------------------------| | Backend | Node.js 20 + Fastify | | ORM | Drizzle ORM | | Banco | SQLite (via better-sqlite3) | | Frontend | React 18 + TypeScript + Vite | | Ambiente | Nix Flakes (reprodutível) | | Monorepo | pnpm Workspaces | | VCS | Git (espelhado via Gitolite/cgit) | ## Pré-requisitos - [Nix](https://nixos.org/download) com suporte a Flakes habilitado - Git ## Setup do Ambiente ```bash # 1. Clone o repositório git clone git@git.devlucas.me:helpdesk.git cd helpdesk # 2. Entre no shell de desenvolvimento (instala todas as dependências automaticamente) nix develop # 3. Instale as dependências Node de todos os workspaces pnpm install # 4. Rode as migrações do banco de dados pnpm db:migrate # 5. Inicie o ambiente de desenvolvimento (api + web em paralelo) pnpm dev ``` ## Scripts Disponíveis | Comando | Descrição | |-------------------|------------------------------------------------| | `pnpm dev` | Inicia api (porta 3000) e web (porta 5173) | | `pnpm dev:api` | Inicia apenas o servidor Fastify | | `pnpm dev:web` | Inicia apenas o frontend Vite | | `pnpm build` | Build de produção de ambos os pacotes | | `pnpm db:migrate` | Executa migrações pendentes do Drizzle | | `pnpm db:studio` | Abre o Drizzle Studio (GUI do banco) | ## Estrutura do Repositório ``` helpdesk/ ├── flake.nix # Ambiente Nix reprodutível ├── pnpm-workspace.yaml # Configuração dos workspaces ├── package.json # Scripts raiz do monorepo ├── api/ # Backend Fastify + Drizzle + SQLite │ ├── src/ │ │ ├── db/ # Schema, migrações e conexão │ │ ├── modules/ # Módulos de tickets, usuários, comentários │ │ └── server.ts # Entry point do Fastify │ └── package.json └── web/ # Frontend React + TypeScript + Vite ├── src/ │ ├── components/ # Componentes reutilizáveis │ ├── pages/ # Páginas (solicitante, agente) │ └── main.tsx # Entry point do React └── package.json ``` ## Configuração de VCS (Gitolite) Ver seção de configuração do Gitolite no guia de infraestrutura.