Aplicação de gerenciamento seguro e inteligente de condomínio desenvolvida em Kotlin Multiplatform com Jetpack Compose.
O SeCond ajuda na gestão de entrada e saída de pessoas em um condomínio. Pelo próprio aplicativo, o morador pode informar quem vai chegar ou sair, reduzindo a necessidade de contato direto com a portaria por interfone.
Este projeto foi realizado com a colaboração dos seguintes membros, listados em ordem alfabética:
O SeCond é um frontend multiplataforma para gestão de condomínio, com telas de autenticação, dashboard e navegação entre os módulos do sistema.
O projeto utiliza:
- Kotlin Multiplatform
- Jetpack Compose / Compose Multiplatform
- Ktor Client
- Kotlin Serialization
- Navigation Compose
- Material Icons
- API REST Spring Boot + MySQL
Módulos e funcionalidades principais:
- Avisos
- Chat com a portaria
- Convidados
- Documentos
- Encomendas
- Moradores
- Prestadores
- Reservas
- Veículos
- O menu lateral possui um Switch para alternar entre tema claro e escuro.
- A preferência de tema é persistida no dispositivo e mantida após reiniciar o app.
- O comportamento atual usa o tema escuro como padrão inicial.
Antes de rodar o projeto, instale ou configure:
- JDK compatível com o projeto, preferencialmente JDK 11 ou superior.
- Android Studio ou IntelliJ IDEA.
- Android SDK configurado para execução mobile.
- Um dispositivo Android com depuração USB ativada ou um emulador Android.
- Gradle Wrapper do próprio projeto, disponível em
gradlewegradlew.bat.
No Windows, os comandos abaixo usam .\gradlew.bat. Em macOS ou Linux, use ./gradlew no lugar.
- Baixe ou clone este repositório.
- Abra a pasta raiz
PI-SeCond-6DSMno Android Studio ou IntelliJ IDEA. - Aguarde a sincronização do Gradle terminar.
- Confirme que o módulo
composeAppfoi carregado.
- Abra o projeto no Android Studio.
- Conecte um celular Android com depuração USB ativada ou inicie um emulador.
- Selecione a configuração de execução do módulo
composeApp. - Clique em Run para compilar, instalar e abrir o aplicativo no dispositivo.
Na pasta raiz do projeto, execute:
.\gradlew.bat :composeApp:installDebugEsse comando compila e instala a versão debug no dispositivo Android conectado ou no emulador ativo.
Para abrir o app pelo terminal depois da instalação, use:
adb shell monkey -p second.project 1Se o dispositivo não for encontrado, verifique a conexão com:
adb devicesNa pasta raiz do projeto, execute:
.\gradlew.bat :composeApp:runEsse comando inicia a versão Desktop/JVM do aplicativo.
Também é possível executar diretamente a task JVM:
.\gradlew.bat :composeApp:jvmRunO projeto possui suporte Web por Kotlin/JS e Kotlin/Wasm.
Use esta opção como caminho principal para rodar no navegador:
.\gradlew.bat :composeApp:jsBrowserDevelopmentRunO Gradle iniciará um servidor de desenvolvimento. A URL será exibida no terminal, normalmente em http://localhost:8080.
A task jsBrowserDevelopmentRun fica em execução enquanto o servidor Web estiver ativo. Para encerrar, use Ctrl+C no terminal.
Para apenas validar se o bundle Web compila, sem manter o servidor aberto, execute:
.\gradlew.bat :composeApp:jsBrowserDevelopmentWebpackTambém é possível rodar a versão WebAssembly:
.\gradlew.bat :composeApp:wasmJsBrowserDevelopmentRunUse um navegador moderno com suporte a WebAssembly. Se houver incompatibilidade no navegador, rode a versão Kotlin/JS.
Se a execução Web falhar com erro parecido com Cannot find module '../Template' ou apontando para build/js/node_modules/webpack, limpe o pacote Webpack do cache do Yarn e reinstale as dependências JS geradas:
$node = Get-ChildItem "$env:USERPROFILE\.gradle\nodejs" -Recurse -Filter node.exe | Sort-Object LastWriteTime -Descending | Select-Object -First 1
$yarn = Get-ChildItem "$env:USERPROFILE\.gradle\yarn" -Recurse -Filter yarn.js | Sort-Object LastWriteTime -Descending | Select-Object -First 1
& $node.FullName $yarn.FullName cache clean webpack
if (Test-Path .\build\js\node_modules) {
Remove-Item -LiteralPath .\build\js\node_modules -Recurse -Force
}
.\gradlew.bat :composeApp:jsBrowserDevelopmentRunEsse problema normalmente indica cache JS incompleto ou corrompido, não erro no código Kotlin do projeto.
Para conferir se o projeto compila corretamente:
.\gradlew.bat buildPara gerar a distribuição Web de produção com Kotlin/JS:
.\gradlew.bat :composeApp:jsBrowserDistributionPara gerar a distribuição Web de produção com Kotlin/Wasm:
.\gradlew.bat :composeApp:wasmJsBrowserDistribution- O projeto está estruturado como aplicação Kotlin Multiplatform com interface em Compose.
- O target mobile configurado atualmente é Android.
- A versão Desktop roda sobre JVM.
- A versão Web pode ser executada via Kotlin/JS ou Kotlin/Wasm.
- Caso o backend remoto seja utilizado, confira a URL base em
composeApp/src/commonMain/kotlin/second/project/repository/ApiConfig.kt. - As imagens e logos do app devem ficar dentro dos recursos do projeto para serem carregadas corretamente.