Skip to content

manoelroot/ContactManager

Repository files navigation

ContactManager

ContactManager é um sistema de gerenciamento de contatos para terminal, desenvolvido em C. A versão atual oferece um fluxo local de CRUD, persistência em arquivo CSV simples e organização modular para facilitar manutenção e evolução.

MVP atual do ContactManager

Objetivo

Permitir que o usuário cadastre, consulte, atualize, remova e mantenha contatos salvos localmente, usando uma interface simples de linha de comando.

Estado Atual

Implementado:

  • adicionar contato com nome, telefone e email;
  • listar contatos carregados em memória;
  • buscar contato pelo número exibido na lista;
  • atualizar os dados de um contato pelo número exibido;
  • remover contato pelo número exibido;
  • carregar contatos ao iniciar;
  • salvar contatos em data/contacts.txt ao sair;
  • compilar com Make usando saídas separadas em build/obj/ e dist/.

Planejado:

  • busca avançada por nome, telefone ou email;
  • validação de entrada mais robusta;
  • testes automatizados além do teste básico de encerramento;
  • importação/exportação de dados;
  • possível evolução para banco de dados ou interface gráfica.

Estrutura do Projeto

ContactManager/
├── Makefile                 # Atalhos da raiz para o build principal
├── README.md                # Visão geral do projeto
├── DOCUMENTATION.md         # Mapa geral da documentação
├── CONTRIBUTING.md          # Convenções de contribuição
├── build/
│   ├── Makefile             # Regras principais de compilação
│   ├── config.mk            # Variáveis do build
│   ├── README.md            # Referência rápida do build
│   └── obj/                 # Objetos gerados (ignorado pelo Git)
├── dist/                    # Binários gerados (ignorado pelo Git)
├── data/                    # Dados locais de execução (ignorado pelo Git)
├── include/
│   ├── config.h             # Constantes e API de configuração
│   ├── contact.h            # Modelo Contact e operações de contato
│   ├── storage.h            # API de persistência
│   └── error.h              # Códigos de erro da aplicação
├── src/
│   ├── main.c               # Menu e fluxo principal
│   ├── config.c             # Implementação da configuração
│   ├── contact.c            # Operações CRUD em memória
│   ├── storage.c            # Leitura e gravação em arquivo
│   └── error.c              # Mensagens de erro da aplicação
├── scripts/
│   ├── build.sh             # Interface shell para os comandos de build
│   └── README.md
├── docs/
│   ├── README.md            # Índice técnico
│   ├── build.md             # Guia de build, execução e instalação
│   ├── requisitos.md
│   ├── arquitetura.md
│   ├── modelos-de-dados.md
│   ├── casos-de-uso.md
│   ├── fluxos.md
│   ├── testes.md
│   ├── product-backlog.md
│   ├── resultados.md
│   ├── uml.md
│   └── diagramas/
├── tests/                   # Registros de testes manuais
└── diario/                  # Histórico de desenvolvimento

Como Compilar

make build

O binário release é gerado em:

dist/contactmanager

Como Executar

make run

Ou diretamente, após compilar:

./dist/contactmanager

Outros Comandos

make help       # Lista os targets disponíveis
make debug      # Gera dist/contactmanager-debug
make test       # Compila e executa um teste básico
make clean      # Remove build/obj/ e dist/
make install    # Instala o binário em /usr/local/bin

Também é possível usar o script:

./scripts/build.sh build
./scripts/build.sh run
./scripts/build.sh test

Persistência

Os contatos são mantidos em memória durante a execução. Ao escolher a opção de sair, a aplicação salva os dados em:

data/contacts.txt

O formato atual é CSV simples:

nome,telefone,email

O diretório data/ é criado automaticamente quando necessário.

Documentação

Convenção de Commits

Use os prefixos definidos em CONTRIBUTING.md:

  • STR: estrutura e refatoração;
  • FEAT: novas funcionalidades;
  • FIX: correções;
  • TEST: testes e validações;
  • DOCS: documentação;
  • CHORE: manutenção.

Observação

Este projeto ainda está em evolução. A documentação deve separar claramente o que já está implementado no CLI atual do que permanece planejado para versões futuras.

About

Sistemas de gerenciamento de contatos em ambientes de terminal (Linux), desenvolvido em C, Permitindo cadastrar, consultar, remover, persistir contatos localmente por meio de uma interface baseada em menu.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors