{"id":30594766,"url":"https://github.com/yurilopesm/gym-management","last_synced_at":"2025-10-09T14:34:20.152Z","repository":{"id":302074200,"uuid":"1010675677","full_name":"YuriLopesM/gym-management","owner":"YuriLopesM","description":"Desafio técnico da Next Fit para desenvolvedor Front-end pleno ","archived":false,"fork":false,"pushed_at":"2025-06-30T14:08:35.000Z","size":3949,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-29T20:48:47.995Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gym-management-navy.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YuriLopesM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-29T15:21:48.000Z","updated_at":"2025-06-30T14:08:38.000Z","dependencies_parsed_at":"2025-06-30T12:54:42.150Z","dependency_job_id":null,"html_url":"https://github.com/YuriLopesM/gym-management","commit_stats":null,"previous_names":["yurilopesm/gym-management"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/YuriLopesM/gym-management","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuriLopesM%2Fgym-management","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuriLopesM%2Fgym-management/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuriLopesM%2Fgym-management/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuriLopesM%2Fgym-management/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YuriLopesM","download_url":"https://codeload.github.com/YuriLopesM/gym-management/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuriLopesM%2Fgym-management/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001531,"owners_count":26083119,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-29T20:08:22.974Z","updated_at":"2025-10-09T14:34:20.127Z","avatar_url":"https://github.com/YuriLopesM.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏋️ Gym Management\n\n**Gym Management** é uma aplicação desenvolvida com foco em gestão de academias, construída como parte de um desafio técnico proposto pela **Next Fit**.\n\n---\n\n## 📚 Instalação e Execução\n\nPara rodar o projeto localmente, siga os passos abaixo:\n\n1. **Clone o repositório:**\n\n   ```bash\n   git clone\n   ```\n\n2. **Instale as dependências:**\n\n   ```bash\n    cd gym-management\n    npm install\n   ```\n\n3. **Inicie o servidor de desenvolvimento:**\n\n   ```bash\n    npm run dev\n   ```\n\n## 🚀 Tecnologias e Ferramentas\n\n| Categoria    | Ferramenta/Lib              | Justificativa                                                   |\n| ------------ | --------------------------- | --------------------------------------------------------------- |\n| Framework    | **Next.js 15 (App Router)** | Uso da versão mais recente como desafio adicional e base sólida |\n| Linguagem    | **TypeScript**              | Tipagem estática para evitar bugs e facilitar manutenção        |\n| UI Kit       | **Material UI (MUI)**       | Compatível com o design da empresa e já utilizado no Figma      |\n| Formulários  | **React Hook Form + Zod**   | Performance e validação baseada em schema                       |\n| Datas        | **Day.js**                  | Leve, performático e com boa API                                |\n| Code Quality | **ESLint + Prettier**       | Padronização automática de código                               |\n| Git Hooks    | **Husky**                   | Lint, formatação e testes antes do commit                       |\n| Compilador   | **React Compiler**          | Experimental, diminuir a necessidade de memos                   |\n| CI/CD        | **Vercel**                  | Integração direta com a plataforma                              |\n\n---\n\n## 🧠 Processo Criativo \u0026 Desenvolvimento\n\n### 1. Modelagem de Dados\n\nAntes da interface, a base de dados foi modelada para facilitar:\n\n- Criação de `mocks` realistas para simular APIs\n- Geração de tipagens estáticas no front\n\n### 2. UX \u0026 Design\n\n- **Heurísticas de Nielsen** e **Moodboard** para base conceitual\n- Criação de protótipos no **Figma**, com bibliotecas do MUI\n- Abordagem **mobile-first**\n\n### 3. Frontend\n\nOs principais desafios nessa etapa:\n\n- Depois de muito tempo utilizando o Ant Design, se adaptar ao MUI e suas convenções foi um desafio interessante, que envolveu:\n  - Entender como o MUI lida com temas e estilos\n  - Aprender a usar os componentes de forma eficiente\n  - Sintaxe e convenções diferentes\n  - Maneiras diferentes de lidar com responsividade\n- Nova versão do Next.js (15), nunca tinha trabalhado com o App Router e as novas apis, como `useRouter`, `useSearchParams`, `useParams`, etc.\n\n---\n\n## 🚀 Melhorias Futuras\n\n- Implementar um backend real, e utilizar:\n  - **TanStack Query** para gerenciamento de estado e cache, melhorando a performance\n  - **Axios** para requisições HTTP\n  - Adotar, tanto no back quanto no front, padrões de paginação com `limit` e `offset`, para evitar problemas de performance com grandes volumes de dados\n  - Utilizar como base a modelagem de Staff, Member e Coach para criar uma Role Based Access Control (RBAC) no backend, juntamente com JWT e Cookies para autenticação e autorização\n  - Pode ser feito, a fim de teste, no próprio Next.js, utilizando o `app/api` para simular um backend\n- Adicionar testes unitários com **Jest** e **React Testing Library**\n- Implementar todas as telas e funcionalidades previstas pela modelagem, que por uma questão de tempo não foram implementadas\n- Melhorias gerais:\n  - Adicionar `ErrouBoundary` para capturar erros de renderização\n  - Adicionar telas de 404 e 500\n  - Adicionar animações com a biblioteca **Motion** (antiga Framer Motion)\n  - Aproveitar mais os recursos de SSR do Next.js e dos React Server Components\n  - Atualizar a modelagem para não utilizar o nome `Class`, que é uma palavra reservada do JavaScript\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyurilopesm%2Fgym-management","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyurilopesm%2Fgym-management","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyurilopesm%2Fgym-management/lists"}