{"id":22808995,"url":"https://github.com/ccuffs/app-horarios-front","last_synced_at":"2026-01-08T07:46:30.645Z","repository":{"id":237308885,"uuid":"794258596","full_name":"ccuffs/app-horarios-front","owner":"ccuffs","description":"Frontend do App de geração de horários","archived":false,"fork":false,"pushed_at":"2024-04-30T19:03:59.000Z","size":2,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-06T00:31:32.302Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ccuffs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-04-30T19:03:59.000Z","updated_at":"2024-04-30T19:04:03.000Z","dependencies_parsed_at":"2024-04-30T20:26:08.467Z","dependency_job_id":"c290ebe5-8c39-4a7a-800b-8a21f74907cc","html_url":"https://github.com/ccuffs/app-horarios-front","commit_stats":null,"previous_names":["ccuffs/app-horarios-front"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccuffs%2Fapp-horarios-front","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccuffs%2Fapp-horarios-front/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccuffs%2Fapp-horarios-front/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccuffs%2Fapp-horarios-front/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ccuffs","download_url":"https://codeload.github.com/ccuffs/app-horarios-front/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246379363,"owners_count":20767696,"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","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":"2024-12-12T11:13:09.713Z","updated_at":"2026-01-08T07:46:30.640Z","avatar_url":"https://github.com/ccuffs.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# App Horários - Frontend\n\nSistema web para gerenciamento de horários acadêmicos da UFFS (Universidade Federal da Fronteira Sul).\n\n## Sobre o Projeto\n\nO App Horários é uma aplicação frontend desenvolvida para facilitar o gerenciamento e visualização de horários de aulas, componentes curriculares (CCRs), cursos, professores e ofertas de disciplinas na UFFS. O sistema conta com autenticação de usuários e controle de permissões granular para diferentes níveis de acesso.\n\n## Funcionalidades\n\n- **Autenticação de Usuários**: Sistema de login com JWT e refresh token\n- **Controle de Permissões**: Gerenciamento baseado em grupos e permissões individuais\n- **Gestão de Horários**: Criação, edição e visualização de horários de aulas\n- **Componentes Curriculares (CCRs)**: Gerenciamento de disciplinas e ementas\n- **Cursos**: Administração de cursos e suas ofertas\n- **Docentes**: Cadastro e gerenciamento de professores\n- **Ofertas**: Controle de ofertas de disciplinas por semestre\n- **Tema Claro/Escuro**: Interface adaptável às preferências do usuário\n- **Design Responsivo**: Interface otimizada para diferentes tamanhos de tela\n\n## Tecnologias\n\n### Core\n- **[React 18](https://react.dev/)** - Biblioteca JavaScript para construção de interfaces\n- **[Vite](https://vitejs.dev/)** - Build tool e bundler de nova geração\n- **[React Router 7](https://reactrouter.com/)** - Roteamento da aplicação\n\n### UI/UX\n- **[Material-UI (MUI) 5](https://mui.com/)** - Biblioteca de componentes React\n- **[MUI X Data Grid](https://mui.com/x/react-data-grid/)** - Tabelas avançadas com funcionalidades de edição\n- **[Material Icons](https://mui.com/material-ui/material-icons/)** - Ícones do Material Design\n- **[React Beautiful DnD](https://github.com/atlassian/react-beautiful-dnd)** - Drag and drop para React\n\n### Comunicação e Estado\n- **[Axios](https://axios-http.com/)** - Cliente HTTP com interceptors\n- **React Context API** - Gerenciamento de estado global\n\n### Ferramentas\n- **[Yarn](https://yarnpkg.com/)** - Gerenciador de pacotes\n\n## Estrutura do Projeto\n\n```\napp-horarios-front/\n├── public/                 # Arquivos estáticos\n├── src/\n│   ├── auth/              # Configuração de autenticação\n│   │   ├── axios.js       # Instância do Axios com interceptors\n│   │   └── publicAxios.js # Instância do Axios para rotas públicas\n│   ├── components/        # Componentes React\n│   │   ├── App.jsx        # Componente principal\n│   │   ├── CCRs.jsx       # Gestão de componentes curriculares\n│   │   ├── Cursos.jsx     # Gestão de cursos\n│   │   ├── Horarios.jsx   # Gestão de horários\n│   │   ├── HorariosView.jsx # Visualização pública de horários\n│   │   ├── Login.jsx      # Página de login\n│   │   ├── Navbar.jsx     # Barra de navegação\n│   │   ├── Ofertas.jsx    # Gestão de ofertas\n│   │   └── Professores.jsx # Gestão de docentes\n│   ├── contexts/          # Contextos React\n│   │   ├── AuthContext.jsx      # Contexto de autenticação\n│   │   ├── PermissionContext.jsx # Contexto de permissões\n│   │   └── ProtectedRoute.jsx   # HOC para rotas protegidas\n│   ├── enums/             # Enumeradores\n│   │   └── permissoes.js  # Definições de permissões do sistema\n│   ├── hooks/             # Custom Hooks\n│   │   └── usePermissions.js # Hook para verificação de permissões\n│   ├── services/          # Serviços de comunicação com API\n│   │   ├── authService.js      # Serviço de autenticação\n│   │   └── permissoesService.js # Serviço de permissões\n│   ├── utils/             # Utilitários\n│   │   └── columnPermissions.js # Gerenciamento de permissões de colunas\n│   ├── catchall.tsx       # Rota catch-all\n│   ├── entry.client.tsx   # Entrada do cliente\n│   ├── root.tsx           # Componente raiz\n│   └── routes.ts          # Configuração de rotas\n├── package.json           # Dependências e scripts\n├── vite.config.js         # Configuração do Vite\n└── react-router.config.ts # Configuração do React Router\n```\n\n## Pré-requisitos\n\nAntes de começar, certifique-se de ter instalado:\n\n- **Node.js** (versão 16 ou superior)\n- **Yarn** (gerenciador de pacotes)\n- **Backend do App Horários** rodando (veja [app-horarios-api](https://github.com/ccuffs/app-horarios-api))\n\n## Instalação\n\n1. Clone o repositório:\n```bash\ngit clone https://github.com/ccuffs/app-horarios-front.git\ncd app-horarios/app-horarios-front\n```\n\n2. Instale as dependências:\n```bash\nyarn install\n```\n\n3. Configure as variáveis de ambiente:\nCrie um arquivo `.env` na raiz do projeto:\n```env\nVITE_APP_API_URL=url_da_api\n```\n\n## Como Usar\n\n### Modo Desenvolvimento\n\nExecute o servidor de desenvolvimento:\n```bash\nyarn start\n```\n\nA aplicação estará disponível em [http://localhost:5173](http://localhost:5173)\n\n### Build para Produção\n\nGere a build otimizada:\n```bash\nyarn build\n```\n\nOs arquivos serão gerados na pasta `build/`\n\n### Visualizar Build de Produção\n\nPara testar a build localmente:\n```bash\nyarn serve\n```\n\n## Sistema de Autenticação\n\nO sistema utiliza autenticação baseada em JWT (JSON Web Tokens) com as seguintes características:\n\n- **Login**: Autenticação via email/usuário e senha\n- **Token de Acesso**: Armazenado no localStorage\n- **Refresh Token**: Renovação automática de token quando expira\n- **Interceptors**: Requisições HTTP incluem automaticamente o token de autenticação\n- **Rotas Protegidas**: Verificação de autenticação e permissões antes de renderizar componentes\n\n## Sistema de Permissões\n\nO controle de acesso é baseado em:\n\n- **Grupos de Usuários**: Usuários podem pertencer a múltiplos grupos\n- **Permissões Granulares**: Controle fino sobre cada funcionalidade\n- **Hierarquia de Permissões**:\n  - Visualizar próprios dados\n  - Visualizar todos os dados\n  - Criar/Editar/Excluir\n\nPrincipais categorias de permissões:\n- `HORARIOS`: Gestão de horários\n- `CCR`: Gestão de componentes curriculares\n- `OFERTAS_CURSO`: Gestão de ofertas\n- `DOCENTES`: Gestão de docentes\n\n## Temas\n\nO sistema suporta temas claro e escuro com:\n- Alternância via switch na interface\n- Persistência da preferência do usuário\n- Cores personalizadas do Material-UI\n- Transições suaves entre temas\n\n## Testes\n\n```bash\nyarn test\n```\n\n## Scripts Disponíveis\n\n- `yarn start` - Inicia o servidor de desenvolvimento\n- `yarn build` - Gera build de produção\n- `yarn serve` - Serve a build de produção localmente\n- `yarn dev` - Inicia em modo de desenvolvimento com React Router Dev\n\n## Contribuindo\n\nContribuições são bem-vindas! Por favor:\n\n1. Faça um fork do projeto\n2. Crie uma branch para sua feature (`git checkout -b feature/MinhaFeature`)\n3. Commit suas mudanças (`git commit -m 'Adiciona MinhaFeature'`)\n4. Push para a branch (`git push origin feature/MinhaFeature`)\n5. Abra um Pull Request\n\n## Licença\n\nEste projeto está sob a licença especificada no arquivo [LICENSE](LICENSE).\n\n## Links Relacionados\n\n- [Backend - App Horários API](https://github.com/ccuffs/app-horarios-api)\n- [Universidade Federal da Fronteira Sul](https://www.uffs.edu.br/)\n- [Material-UI Documentation](https://mui.com/)\n- [React Documentation](https://react.dev/)\n- [Vite Documentation](https://vitejs.dev/)\n\n## Equipe\n\nDesenvolvido pela comunidade CCUFFS e contribuidores.\n\n## Suporte\n\nPara dúvidas ou problemas, abra uma [issue](https://github.com/ccuffs/app-horarios-front/issues) no GitHub.\n\n---\n\nFeito para a UFFS\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccuffs%2Fapp-horarios-front","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccuffs%2Fapp-horarios-front","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccuffs%2Fapp-horarios-front/lists"}