Este é um aplicativo para gerenciar produtos. Com ele, é possível adicionar, editar e exibir uma lista de produtos, incluindo imagem, nome, descrição e preço. Além disso, é possível visualizar detalhes dos produtos,ordená-los de diferentes maneiras na lista e realizar operações de banco de dados de forma assíncrona para uma melhor performance.
- Autenticação de Usuários: Cadastro e login de usuários para acesso personalizado.
- Lista Personalizada de Produtos: Cada usuário visualiza e gerencia apenas seus próprios produtos cadastrados.
- Cadastro de Produtos: Adição de novos produtos com imagem, nome, descrição e preço.
- Detalhes do Produto: Visualização completa dos detalhes de cada produto cadastrado.
- Edição e Exclusão de Produtos: Funcionalidades acessíveis via cliques longos na lista ou através da tela de detalhes do produto.
- Ordenação de Produtos: Organização da lista de produtos por nome, descrição ou preço.
- Operações Assíncronas de Banco de Dados: Execução de todas as operações de banco de dados de maneira assíncrona para melhor performance e experiência do usuário.
- Logout: Opção para que o usuário possa encerrar sua sessão no aplicativo.
- Tela de Perfil do Usuário: Exibição de informações do usuário e opção para logout.
- Visualização de Todos os Produtos: Implementação da tela 'AllProductsActivity' para exibir todos os produtos e informações dos usuários relacionados.
- Navegação para Detalhes do Produto: Configuração do 'AllProductsAdapter' para permitir a navegação até os detalhes do produto selecionado.
- Autocomplete em ProductFormActivity: Adição de campo Autocomplete para facilitar a seleção de usuários ao salvar produtos sem usuário associado.
- Ajustes nos Filtros de Produtos: Os filtros na tela de lista de produtos agora consideram apenas os produtos do usuário logado.
- Atualizações em AllProductsActivity: Implementação do método onResume para garantir a atualização correta dos dados exibidos.
- Sincronização com a nuvem para backup
- Recursos de compartilhamento de produtos
- Implementação de autenticação de usuários e controle de acesso.
Kotlin
: Linguagem de programação utilizada para desenvolver o aplicativo.View Binding
: Busca de views do layout de forma segura.Coil
: Carregar imagens via requisição HTTP.Fontes personalizadas
: Configuração para adicionar novas fontes.Extension functions
: Funções de extensão para carregar imagens e formatar valores em moeda.Personalização de tema
: Modificação de cores para o tema do App.Layout para Activities
:ContraintLayout
: ViewGroup padrão para implementar todos os layouts.ImageView
: View para apresentar imagens no App.Material Design Components
: Incluindo TextInputLayout para experiência de usuário melhorada.RecyclerView
: Listagem dos produtos.CardView
: Container para apresentar cada produto na lista.Button
: Botões interativos.AlertDialog
: Exibição de formulário para carregar novas imagens do produto.
Room Database
: Persistência de dados com Room para armazenar produtos e usuários.Flow
: Uso de sequências assíncronas de dados.setOnLongClickListener
: Gestos para clicks longos para edição e exclusão rápida de produtos.PopupMenu
: Menus contextuais para ordenação de produtos.DataStore
: Armazenamento de tipos primitivos, como o ID do usuário autenticado.Migration
: Evolução do schema do banco de dados conforme as entidades do Room são modificadas.Coroutines e Flow
: Comunicação assíncrona com Room e DataStore.StateFlow
: Permite a alteração do valor de um Flow fora do seu builder.Activity base
: Código comum entre Activities para gerenciamento de autenticação e sessão do usuário.Relacionamento no Room
: Configuração de entidades para estabelecer relacionamentos, como produtos associados a usuários.
- Novas funcionalidades e melhorias na usabilidade.
- Lançamento das funcionalidades de autenticação e controle de produtos por usuário.
- Implementação de Coroutines e Flow.
- Adicionada a funcionalidade de ordenação de produtos na lista com várias opções de classificação.
- Melhorias de interface para facilitar a interação com a lista de produtos.
- Implementação de click longo para ações rápidas de edição e exclusão de produtos na lista.
- Adição de menus contextuais para edição e exclusão no RecyclerView.
- Refinamento da lógica de atualização da lista após operações CRUD.
- Lançamento das funcionalidades de edição e exclusão de produtos na tela de detalhes do produto.
- Melhorias na interface do usuário com menus contextuais e pop-ups.
- Adoção do Room para persistência de dados local.
- Lançamento da funcionalidade de tela de detalhes do produto.
- Lançamento da funcionalidade de adicão de imagens e gif's.
- Melhorias na interface do usuário atravez do Material Design.
- Formatação de Valores Monetários. A exibição de preços foi aprimorada com uma formatação adequada para valores monetários.
- Lançamento do aplicativo
Este projeto faz parte da Formação "Desenvolva seu primeiro app Android com Kotlin" ministrado pelo professor Alex Felipe e oferecido pela empresa Alura.