aboutsummaryrefslogtreecommitdiff
path: root/README.md
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.