Skip to content

atalhox/forrozim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ForroZim - Gerador de Sequências de Passos de Forró

Um gerador inteligente de sequências de passos de forró desenvolvido com Next.js, React e PostgreSQL.

O projeto permite criar sequências aleatórias de passos de forró, alternando entre perna direita e esquerda para dar idéias de variações.

Índice

Sobre o Projeto

O ForroZim é uma aplicação web que ajuda dançarinos de forró a praticar e aprender novos passos.

O sistema gera sequências inteligentes de passos, garantindo uma alternância natural entre perna direita e esquerda, proporcionando uma experiência de dança mais fluida e realista.

Características Principais

  • Sequência Inteligente: Algoritmo que alterna automaticamente entre passos de perna direita e esquerda
  • Base de Dados Rica: Mais de 30 passos diferentes de forró categorizados por perna de início
  • Interface Intuitiva: Interface limpa e responsiva para fácil uso
  • Configurável: Possibilidade de ajustar o tamanho da sequência (2-50 passos)

Funcionalidades

  • Geração de sequências aleatórias de passos de forró
  • Alternância inteligente entre perna direita e esquerda
  • Visualização clara dos passos com indicação da perna de início
  • Configuração personalizada do tamanho da sequência
  • Sistema de repetição que evita passos duplicados na mesma sequência
  • Interface responsiva e moderna

Tecnologias Utilizadas

Frontend

  • Next.js 15.5.4 - Framework React para aplicações web
  • React 19.2.0 - Biblioteca para interfaces de usuário
  • JavaScript ES6+ - Linguagem de programação

Backend

  • Next.js API Routes - API serverless integrada
  • PostgreSQL 16.0 - Banco de dados relacional
  • node-pg-migrate - Sistema de migrações de banco

DevOps e Ferramentas

  • Docker Compose - Containerização do banco de dados
  • ESLint - Linting de código JavaScript
  • Prettier - Formatação de código
  • Jest - Framework de testes
  • Husky - Git hooks para qualidade de código
  • Commitlint - Padronização de commits

Pré-requisitos

Antes de começar, certifique-se de ter instalado:

  • Node.js (versão 18 ou superior)
  • npm ou yarn
  • Docker e Docker Compose

Instalação

  1. Clone o repositório

    git clone https://github.com/atalhox/forrozim.git
    cd forrozim
  2. Instale as dependências

    npm install
  3. Configure as variáveis de ambiente

    cp .env.example .env.development

    Configure as seguintes variáveis no arquivo .env.development:

    POSTGRES_HOST=localhost
    POSTGRES_PORT=5432
    POSTGRES_USER=seu_usuario
    POSTGRES_DB=seu_db
    POSTGRES_PASSWORD=seu_password
    DATABASE_URL=postgresql://seu_usuario:sua_senha@localhost:5432/seu_db

Configuração

Banco de Dados

O projeto utiliza PostgreSQL com Docker. O banco de dados será configurado automaticamente quando você executar o comando de desenvolvimento.

Migrações

O projeto inclui migrações automáticas que:

  • Criam a tabela passos com os campos necessários
  • Populam o banco com mais de 30 passos de forró diferentes

Como Usar

  1. Inicie o ambiente de desenvolvimento

    npm run dev
  2. Acesse a aplicação Abra seu navegador e acesse: http://localhost:3000/gerador

  3. Gere sua sequência

    • Ajuste o tamanho da sequência (1-50 passos)
    • Clique em "Gerar Sequência de Forró"
    • Aproveite sua sequência personalizada!

API

Endpoint: /api/v1/passos

GET - Listar Passos ou Gerar Sequência

Parâmetros:

  • tamanho (opcional): Número de passos na sequência (2-50, padrão: 2)
  • tipo (opcional): Tipo de resposta (sequencia ou todos, padrão: sequencia)

Exemplos:

# Gerar sequência de 15 passos
GET /api/v1/passos?tamanho=15&tipo=sequencia

# Listar todos os passos disponíveis
GET /api/v1/passos?tipo=todos

Resposta de Sucesso:

{
  "mensagem": "Sequência inteligente de 15 passos gerada com sucesso!",
  "total": 30,
  "sequencia_tamanho": 15,
  "tipo_resposta": "sequencia",
  "dados": [
    {
      "id": 1,
      "nome": "Basicão Direita",
      "perna_inicio": "direita",
      "total_pisadas": 3,
      "created_at": "2024-01-15T10:30:00.000Z"
    },
    {
      "id": 2,
      "nome": "Balancinho Esquerda",
      "perna_inicio": "esquerda",
      "total_pisadas": 3,
      "created_at": "2024-01-15T10:30:00.000Z"
    }
  ]
}

Estrutura do Projeto

forrozim/
├── src/
│   ├── lib/
│   │   ├── compose.yaml          # Configuração Docker para PostgreSQL
│   │   ├── db.js                 # Configuração do banco de dados
│   │   ├── wait-for-db.js        # Script para aguardar banco estar pronto
│   │   └── migrations/           # Migrações do banco de dados
│   │       ├── 1759968632716_create-passos.js
│   │       └── 1759969610116_populate-passos-forro.js
│   └── pages/
│       ├── api/
│       │   ├── teste.js          # Endpoint de teste
│       │   └── v1/
│       │       └── passos/
│       │           └── index.js  # API principal dos passos
│       └── gerador.jsx           # Página principal do gerador
├── coverage/                     # Relatórios de cobertura de testes
├── package.json                  # Dependências e scripts
├── next.config.mjs              # Configuração do Next.js
├── eslint.config.mjs            # Configuração do ESLint
├── jest.config.js               # Configuração do Jest
└── README.md                    # Este arquivo

Scripts Disponíveis

# Desenvolvimento
npm run dev                    # Inicia o servidor de desenvolvimento

# Banco de Dados
npm run services:up            # Inicia o PostgreSQL via Docker
npm run services:stop          # Para o PostgreSQL
npm run services:down          # Remove o container do PostgreSQL

# Migrações
npm run migrations:create      # Cria nova migração
npm run migrations:up          # Executa migrações pendentes

# Qualidade de Código
npm run lint                   # Executa ESLint
npm run lint:eslint:check      # Verifica problemas de lint
npm run lint:prettier:check    # Verifica formatação
npm run lint:prettier:fix      # Corrige formatação automaticamente
npm run format                 # Formata o código com Prettier

# Testes
npm run test                   # Executa testes
npm run test:watch             # Executa testes em modo watch

# Produção
npm run build                  # Build para produção
npm run start                  # Inicia servidor de produção

Contribuição

Contribuições são sempre bem-vindas! Para contribuir:

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/nova-feature)
  3. Commit suas mudanças (git commit -m 'Adiciona nova feature')
  4. Push para a branch (git push origin feature/nova-feature)
  5. Abra um Pull Request

Padrões de Commit

O projeto utiliza o padrão Conventional Commits:

feat: adiciona nova funcionalidade
fix: corrige bug
docs: atualiza documentação
style: mudanças de formatação
refactor: refatoração de código
test: adiciona ou modifica testes
chore: tarefas de manutenção

Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

Autor

Desenvolvido por atalhox

Aproveite seu forró!