🛠️ 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 com suporte a Flakes habilitado
- Git
Setup do Ambiente
# 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.