HTTP API do sistema do Herbário da UTFPR (HCF). O painel web usa, em desenvolvimento, PAINEL_BASE_URL=http://localhost:5173.
- Node.js 22 (
.nvmrcaponta paralts/jod; com nvm:nvm use) - Yarn (Classic; o repositório usa
yarn.lock) - Docker com Compose V2 (
docker compose) - Git
- Um cliente para restaurar o dump: DBeaver ou
psql
Clone o repositório e copie o arquivo de ambiente:
cp .env.example .envOs nomes e os valores padrão locais estão em .env.example. Ajuste o .env se precisar. Não commite segredos.
| Grupo | Variáveis | Uso local |
|---|---|---|
| Runtime | TZ, PORT, NODE_ENV, STORAGE_PATH |
Os padrões do exemplo bastam. |
| CORS | CORS_ORIGINS, CORS_METHODS, CORS_ALLOWED_HEADERS |
* ou a origem do painel. |
| Postgres | PG_DATABASE, PG_HOST, PG_PORT, PG_USERNAME, PG_PASSWORD, PG_MIGRATION_USERNAME, PG_MIGRATION_PASSWORD |
O Compose usa PG_DATABASE, PG_USERNAME, PG_PASSWORD e PG_PORT. A API usa PG_*. |
| Auth, e-mail, captcha | JWT_SECRET, SMTP_*, RECAPTCHA_SECRET_KEY |
Login, troca de senha e reCAPTCHA. |
| Painel | PAINEL_BASE_URL |
Padrão local: http://localhost:5173. |
Peça um dump a um colega de time (não há dump neste repositório). Suba o PostgreSQL:
docker compose up postgresConecte com os valores de PG_* do .env (padrões de .env.example: host 127.0.0.1, porta 5432, usuário postgres, senha masterkey, banco herbario_dev).
Pode usar um cliente gráfico como o DBeaver (importe ou execute o dump na conexão) ou o terminal com psql.
Dump compactado (.sql.gz):
gunzip -c caminho/para/dump.sql.gz | \
PGPASSWORD=masterkey psql \
-h 127.0.0.1 \
-p 5432 \
-U postgres \
-d herbario_devDump em SQL puro:
PGPASSWORD=masterkey psql \
-h 127.0.0.1 \
-p 5432 \
-U postgres \
-d herbario_dev \
-f caminho/para/dump.sqlyarn install
yarn startyarn start recarrega ao alterar arquivos (tsx --watch --env-file=.env). Saída esperada em desenvolvimento:
Using "development" environment
Master 18385 is running
Server is running on port 3000Confira com GET http://localhost:3000/health ({ "status": "OK" }).
| Comando | Função |
|---|---|
yarn start |
Servidor de desenvolvimento com watch |
yarn build |
Bundle de produção (dist/) |
yarn lint |
tsc --noEmit e ESLint |
yarn test |
Todos os projetos Vitest |
yarn test:unit / yarn test:unit:watch |
Testes unitários |
yarn test:integration / yarn test:integration:watch |
Testes de integração (Postgres de teste) |
yarn test:coverage |
Cobertura dos testes unitários |
yarn migration:create / yarn migration:apply |
Autores de mudança de schema |
O yarn install configura o Husky. O hook pre-push roda os testes unitários.
Unitários: yarn test:unit — não precisa de Docker.
Integração: sobe um PostgreSQL separado (porta 5433, banco herbario_test, credenciais iguais às de .env.test). O schema vem de test/integration/setup/schema.sql na inicialização do container.
docker compose -f compose.integration.yml up -d
yarn test:integrationMais detalhes em test/integration/README.md.