# Sushi Panda - Cash Flow

![PHP](https://custom-icon-badges.demolab.com/badge/PHP-8.2+-777BB4?logo=php&logoColor=white)
![CodeIgniter](https://custom-icon-badges.demolab.com/badge/CodeIgniter-4-DD4814?logo=codeigniter&logoColor=white)
![Status](https://custom-icon-badges.demolab.com/badge/status-active-success)
![Environment](https://custom-icon-badges.demolab.com/badge/environment-development-blue)

Sistema web desenvolvido para controle e monitoramento do fluxo de caixa do restaurante Sushi Panda.

A aplicação permite o registro manual de receitas e despesas, categorização de movimentações financeiras, controle de formas de pagamento e visualização de relatórios gráficos.

---

## Sumário

- [Funcionalidades](#funcionalidades)
- [Tecnologias](#tecnologias)
- [Instalação](#instalação)
- [Configuração do Ambiente](#configuração-do-ambiente)
- [Banco de Dados](#banco-de-dados)
- [Executando o Projeto](#executando-o-projeto)
- [Estrutura do Projeto](#estrutura-do-projeto)

---

## Funcionalidades

- Controle de receitas e despesas
- Categorias financeiras
- Formas de pagamento
- Registro de movimentações financeiras
- Histórico de movimentações
- Dashboard financeiro
- Relatórios visuais
- Gráficos financeiros
- Autenticação de usuário
- Responsividade para dispositivos móveis

---

## Tecnologias

- [PHP 8.2+](https://www.php.net/)
- [CodeIgniter 4](https://codeigniter.com/user_guide/index.html)
- [MySQL](https://www.mysql.com/)
- [Composer](https://getcomposer.org/download/)

---

## Instalação

### Composer

Nesse projeto utilizamos o **Composer** para gerenciar os pacotes do **CodeIgniter 4**.

#### 1. Ative as extensões do PHP

No arquivo `php.ini`, habilite as extensões abaixo removendo o `;` do início da linha:

- zip
- intl
- mysqli
- mbstring

#### 2. Clone o repositório

```bash
git clone https://github.com/soutbiaafnts/cash-flow.git
```

#### 3. Acesse a pasta do projeto

```bash
cd cash-flow
```

#### 4. Instale as dependências

```bash
composer install
```

---

## Configuração do Ambiente

### Dotenv

O CodeIgniter espera um arquivo `.env` na raiz do projeto e já fornece um template padrão.

#### 1. Crie uma cópia do arquivo

```text
env
```

#### 2. Renomeie a cópia para

```text
.env
```

#### 3. Configure os atributos abaixo

```env
CI_ENVIRONMENT = development

app.baseURL = 'http://localhost:8080/'
```

Configure também os atributos da sessão `DATABASE`:

```env
database.default.hostname =
database.default.database =
database.default.username =
database.default.password =
database.default.DBDriver = MySQLi
database.default.port = 3306
```

---

## Banco de Dados

#### 1. Crie o banco de dados

```sql
CREATE DATABASE cash_flow;
```

#### 2. Execute as migrations

```bash
php spark migrate
```

#### 3. Execute as seeders

```bash
php spark db:seed DatabaseSeeder
```

### Como funcionam as migrations

As migrations funcionam como um histórico versionado do banco de dados.

Cada alteração na estrutura do banco deve gerar uma nova migration, como por exemplo:

- criação de tabelas
- adição de colunas
- alteração de campos
- remoção de colunas
- criação de relacionamentos

> Não altere migrations antigas após elas serem compartilhadas ou executadas por outros desenvolvedores.

Para novas alterações, crie sempre uma nova migration utilizando:

```bash
php spark make:migration MigrationName
```

### Comandos úteis

Executar migrations:

```bash
php spark migrate
```

Reverter última migration:

```bash
php spark migrate:rollback
```

Recriar todas as migrations:

```bash
php spark migrate:refresh
```

---

## Executando o Projeto

#### 1. Inicie o servidor local do CodeIgniter

```bash
php spark serve
```

O projeto estará disponível em:

```text
http://localhost:8080
```

---

## Estrutura do Projeto

```text
app/
├── Config/
│   └── Routes.php
├── Controllers/
├── Models/
├── Views/
├── Database/
│   ├── Migrations/
│   └── Seeds/

public/
tests/
writable/
```