# CondoConnect - Sistema Gerenciador de Condomínios
## Membros:
 - Adriano Montaguti
 - Gabriel Felipe Batista dos Santos
 - Gustavo Iassyl Nielsen Alves
 - Gustavo Jahnz

# Link dos repositórios no github:
- Back/servidor: https://github.com/tads-ufpr/tcc
- Front/mobile: https://github.com/gfbsant/condo_connect_app

# Instruções de uso do back/servidor

- [ ] Clonar o repositório
- [ ] Inicialize o Docker na sua máquina

# Running on Docker (Windows / Linux / Mac)

- [ ] Construir a imagem da aplicação
      `Este passo só precisa ser feito uma única vez`

```sh
docker-compose build
```

- [ ] Database migrations
      `Este passo atualizará as configurações das tabelas do banco de dados (SQLite, por enquanto)`

```sh
docker-compose run app rails db:migrate
```

- [ ] Database seed
      `Este passo insere no banco as entidades padrões (dados)`

```sh
docker-compose run app rails db:seed
```

- [ ] Rodar a aplicação

```sh
docker-compose up
```

# Running locally (Linux / Mac)

- Certifique-se de que a versão do ruby na sua máquina é a mesma versão indicado pelo arquivo `.ruby-version` (3.2.2)
- Rode os seguintes comandos, um por vez comando, na raiz do projeto `/condo-api`

```sh
bundle install
rails db:create
rails db:migrate
rails db:seed
rails s
```


## Instruções de uso projeto mobile/front

### Pré-requisitos
- Flutter SDK instalado
- Android Studio ou Xcode (para iOS)
- Dispositivo físico ou emulador configurado

### Configuração do ambiente
1. Verifique se o Flutter está instalado:
```bash
flutter --version
```

2. Verifique se há problemas na configuração:
```bash
flutter doctor
```

3. Instale as dependências do projeto:
```bash
flutter pub get
```

### Executar o projeto
1. Liste os dispositivos disponíveis:
```bash
flutter devices
```

2. Execute o aplicativo:
```bash
flutter run
```

3. Para executar em um dispositivo específico:
```bash
flutter run -d <device-id>
```

4. Para executar em modo debug:
```bash
flutter run --debug
```

5. Para executar em modo release:
```bash
flutter run --release
```

---
## Atualização de ícones

Para atualizar os ícones do aplicativo Flutter, utilize o comando:
 
```bash
flutter pub run flutter_launcher_icons
```
 
Este comando gera e atualiza os ícones do aplicativo para diferentes plataformas,
conforme configurado no arquivo `pubspec.yaml` usando o pacote `flutter_launcher_icons`.
Certifique-se de definir corretamente as opções de ícone no `pubspec.yaml` antes de executar o comando.

---
## Desenvolvimento Local com Servidor Mock

Para facilitar o desenvolvimento e os testes da UI sem depender de um backend real, o projeto inclui um servidor mock.

### 1. Rodando o Servidor Mock

O servidor simula a API real e fornece dados para autenticação e outras funcionalidades.

```bash
# 1. Navegue até a pasta do servidor
cd mock_server

# 2. Instale as dependências (apenas na primeira vez)
npm install

# 3. Inicie o servidor
node server.js
```

O servidor estará rodando em `http://localhost:8080` e pronto para receber requisições.

### 2. Configurando o App Flutter

Para que o aplicativo (especialmente em um emulador ou dispositivo físico) consiga se comunicar com o servidor rodando na sua máquina, você precisa usar o endereço de IP da sua rede local.

#### Encontrando seu IP Local

- **No macOS / Linux:**
  ```bash
  ipconfig getifaddr en0
  # ou
  ifconfig | grep "inet " | grep -v 127.0.0.1
  ```

- **No Windows:**
  ```bash
  ipconfig | findstr "IPv4"
  ```
  Procure pelo endereço IPv4 do seu adaptador de Wi-Fi ou Ethernet.

### 3. Executando o App com Variáveis de Ambiente

A melhor forma de informar o IP para o app é através de variáveis de ambiente, usando a flag `--dart-define`. Isso evita que você precise alterar o código-fonte.

Substitua `<SEU_IP_LOCAL>` pelo endereço que você encontrou no passo anterior.

```bash
flutter run --dart-define="API_BASE_URL=http://<SEU_IP_LOCAL>:8080"
```

**Exemplo:**
```bash
flutter run --dart-define="API_BASE_URL=http://192.168.1.100:8080"
```

O código do aplicativo está configurado para ler essa variável. Se ela não for fornecida, ele tentará usar uma configuração padrão para emuladores.

#### Configurando o Ambiente de Execução na IDE

Para não precisar digitar o comando no terminal toda vez, você pode configurar a variável de ambiente diretamente na sua IDE.

##### Visual Studio Code

1.  Abra o arquivo `.vscode/launch.json` na raiz do projeto.
2.  Adicione uma configuração de inicialização com o campo `args`. Substitua pelo seu IP.

```json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Condo Connect (Mock API)",
            "request": "launch",
            "type": "dart",
            "args": [
                "--dart-define",
                "API_BASE_URL=http://10.0.0.158:8080"
            ]
        },
        {
            "name": "Condo Connect (Default)",
            "request": "launch",
            "type": "dart"
        }
    ]
}
```
Agora você pode selecionar "Condo Connect (Mock API)" no menu "Run and Debug" (Cmd+Shift+D) para iniciar com a configuração.

##### IntelliJ IDEA / Android Studio

1.  Vá em `Run > Edit Configurations...`.
2.  Selecione a configuração de execução do Flutter (geralmente chamada de `main.dart`).
3.  No campo **"Additional run args"**, adicione a flag. Substitua pelo seu IP.

```
--dart-define="API_BASE_URL=http://192.168.1.100:8080"
```
4.  Clique em "Apply" e "OK". Agora, ao executar o projeto, a variável será aplicada automaticamente