blob: b51dd6e2896b217944dbaee10e6821ec61f30e40 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# 🛠️ 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.
|