sge
Sistema de gestão de estacionamentos
- Active · last change 6-25-2026
- ★ 2 on GitHub
README
SGE
Sistema de Gestão de Estacionamentos.
Este é o repositório do projeto desenvolvido nas lives do canal. A ideia é construir, ao vivo, um SGE: um sistema de gestão de estacionamentos, usando Lazarus, Free Pascal e SQLite.
O projeto é feito com foco didático, mostrando a evolução do código, a criação das rotinas de banco de dados, organização das units, testes automatizados e o fluxo de desenvolvimento de uma aplicação CLI em Pascal.
Estrutura do Projeto
| Pasta/arquivo | Descrição |
|---|---|
src/ |
Código-fonte principal do projeto |
src/units/ |
Units Pascal usadas pela aplicação |
db/ |
Scripts SQL para criação da estrutura do banco |
tests/ |
Testes unitários com FPCUnit |
run-tests.ps1 |
Script PowerShell para compilar e executar os testes |
tools/ |
Ferramentas auxiliares usadas no desenvolvimento e nas lives |
Requisitos
- Lazarus
- Free Pascal Compiler, FPC
- SQLite
- PowerShell, para rodar o script de testes no Windows
No Windows, é recomendado configurar uma variável de ambiente apontando para a pasta de instalação do Free Pascal.
Exemplo no PowerShell:
$env:FPCDIR = "C:\caminho\para\fpc\3.2.2"Exemplo no cmd:
set FPCDIR=C:\caminho\para\fpc\3.2.2Normalmente, quando o FPC vem instalado junto com o Lazarus, essa pasta fica dentro do diretório do Lazarus, por exemplo:
%LAZARUSDIR%\fpc\3.2.2Se quiser, você também pode configurar LAZARUSDIR:
$env:LAZARUSDIR = "C:\caminho\para\lazarus"
$env:FPCDIR = "$env:LAZARUSDIR\fpc\3.2.2"O executável do compilador costuma ficar em:
%FPCDIR%\bin\x86_64-win64\fpc.exeCompilando com Lazarus
- Abra o Lazarus.
- Vá em Project > Open Project....
- Selecione o arquivo:
src\sge.lpi- Compile o projeto com Run > Build ou usando o atalho padrão do Lazarus.
- Para executar, use Run > Run.
O arquivo principal do programa é:
src\sge.lprCompilando com Free Pascal pela linha de comando
Na raiz do projeto, execute:
& "$env:FPCDIR\bin\x86_64-win64\fpc.exe" -MObjFPC -Fusrc\units -FEbin -FUbin\x86_64-win64 src\sge.lprNo cmd, o mesmo comando fica:
"%FPCDIR%\bin\x86_64-win64\fpc.exe" -MObjFPC -Fusrc\units -FEbin -FUbin\x86_64-win64 src\sge.lprDepois, execute o programa compilado:
.\bin\sge.exeSe o comando fpc estiver no seu PATH, você também pode usar:
fpc -MObjFPC -Fusrc\units -FEbin -FUbin\x86_64-win64 src\sge.lprPara colocar o FPC no PATH apenas na sessão atual do PowerShell:
$env:PATH = "$env:FPCDIR\bin\x86_64-win64;$env:PATH"Rodando os Testes
Os testes unitários usam FPCUnit.
Para compilar e executar os testes:
.\run-tests.ps1Esse script compila o runner de testes em:
bin\tests\test_runner.exeE em seguida executa os testes.
Testando a API com Python
O projeto tambem possui uma suite simples de testes HTTP em Python para validar
a API local em http://localhost:8085. Ela fica em:
tools\client\test.pyEssa suite usa requests para chamar a API e rich para exibir um menu e uma
tabela de resultados no terminal. Ela cobre:
- rotas publicas:
GET /health,POST /auth/loginePOST /usuario - rotas protegidas de cargos:
GET /cargos,POST /cargo,GET /cargo/:id,POST /cargo/:id/eDELETE /cargo/:id/
Antes de rodar, instale as dependencias:
python -m pip install -r tools\client\requirements.txtCom o servidor da API em execucao, abra o menu interativo:
python tools\client\test.pyNo menu voce pode rodar todos os testes, apenas as rotas publicas, apenas as rotas de cargos ou escolher uma rota especifica.
Para executar tudo sem abrir o menu:
python tools\client\test.py --allSe a API estiver em outra URL, informe com --base-url:
python tools\client\test.py --base-url http://localhost:8085Tambem e possivel configurar a URL por variavel de ambiente:
$env:SGE_API_URL = "http://localhost:8085"
python tools\client\test.py --allPor padrao, os testes criam usuarios e cargos temporarios para validar os fluxos. Para testar login com um usuario existente, configure:
$env:SGE_TEST_USER = "admin"
$env:SGE_TEST_PASSWORD = "admin"
python tools\client\test.py --allArquivos Ignorados
Arquivos gerados por compilação, bancos locais e diretórios de backup não devem ser versionados. Exemplos:
bin/x86_64-win64/database.sqlite3teste.dbsrc/backup/**/backup/

