Sistema completo de gestão de stock e inventário para agrupamentos de escuteiros, com sincronização em tempo real com Airtable.
- Adicionar, editar e eliminar materiais
- Categorização e estados personalizados
- Controlo de quantidades em tempo real
- Pesquisa e filtros avançados
- Registo de entradas e saídas
- Associação a eventos e secções
- Histórico completo de movimentações
- Rastreabilidade total
- Métricas em tempo real
- Gráficos interativos
- Análises por categoria, estado e secção
- Exportação de dados (CSV, ZIP)
- Organização de espaços de armazenamento
- Localização hierárquica
- Controlo de contenções
- Múltiplas secções do agrupamento
- Associação de utilizadores
- Estatísticas por secção
- Login seguro com bcrypt
- Perfis de utilizador (Administrador, Gestor, Utilizador)
- Controlo de permissões
- Gestão de utilizadores
- Configurações do sistema
- Registos de atividade
- Python 3.8 ou superior
- Conta Airtable com API key
- Base de dados Airtable configurada
- Clone o repositório:
git clone https://github.com/seu-usuario/guardamaterial.git
cd guardamaterial- Crie um ambiente virtual:
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# ou
.venv\Scripts\activate # Windows- Instale as dependências:
pip install -r requirements.txt- Configure as credenciais:
Crie o ficheiro .streamlit/secrets.toml:
AIRTABLE_API_KEY = "sua_chave_aqui"
AIRTABLE_BASE_ID = "sua_base_id_aqui"
AIRTABLE_USERS_TABLE = "Usuarios"- Execute a aplicação:
streamlit run app.pyA aplicação estará disponível em http://localhost:8501
-
Faça push do código para GitHub
-
Aceda a share.streamlit.io
-
Conecte o seu repositório
-
Configure os secrets:
- Vá a Settings → Secrets
- Adicione as suas credenciais:
AIRTABLE_API_KEY = "sua_chave" AIRTABLE_BASE_ID = "sua_base" AIRTABLE_USERS_TABLE = "Usuarios"
-
Deploy!
A aplicação espera as seguintes tabelas no Airtable:
- Usuarios - Utilizadores do sistema
- Seccoes - Secções do agrupamento
- Local - Locais de armazenamento
- Itens - Materiais do inventário
- Movimentos - Histórico de movimentações
Usuarios:
- Nome do Usuário
- Função (Administrador/Gestor/Utilizador)
- Telefone
- Palavra-passe (hash bcrypt)
- Secções associadas (link)
Itens:
- Material
- Categoria
- Estado
- Unidade
- Entradas Totais (rollup)
- Saídas Totais (rollup)
- Quantidade Atual (formula)
Movimentos:
- Item (link)
- Quantidade
- Motivo
- Data
- Responsável (link)
- Secção (link)
- Local (link)
- Notas
Edite .streamlit/config.toml para personalizar cores e aparência.
Modifique src/config.py para ajustar permissões de cada perfil.
guardamaterial/
├── app.py # Aplicação principal
├── requirements.txt # Dependências
├── README.md # Este ficheiro
├── .streamlit/
│ ├── config.toml # Configurações Streamlit
│ └── secrets.toml.example # Exemplo de secrets
└── src/
├── config.py # Configurações gerais
├── auth.py # Autenticação
├── data_manager.py # Gestão de dados Airtable
├── ui/
│ ├── sidebar.py # Navegação
│ └── theme.py # Estilos customizados
└── pages/
├── dashboard.py # Dashboard principal
├── items.py # Gestão de itens
├── movements.py # Movimentos
├── locations.py # Locais
├── sections.py # Secções
├── reports.py # Relatórios
└── admin.py # Administração
- Passwords armazenadas com hash bcrypt
- Autenticação obrigatória
- Controlo de permissões por perfil
- Secrets geridos através do Streamlit
- Validação de dados em todas as operações
Contribuições são bem-vindas! Por favor:
- Faça fork do projeto
- Crie uma branch para a sua feature
- Commit das suas alterações
- Push para a branch
- Abra um Pull Request
Este projeto está sob a licença MIT. Veja o ficheiro LICENSE para mais detalhes.
Desenvolvido para os Escuteiros com ❤️
Para questões ou suporte, contacte o administrador do sistema.
Nota: Este sistema foi desenvolvido especificamente para gestão de inventário de agrupamentos de escuteiros, mas pode ser adaptado para outras organizações.