Skip to content

eduardo-borges-goncalves/Raro-Class

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Raro Class - English

Raro Class is a web application built with React that provides online classes and educational resources to students. This repository contains the frontend codebase for the application.

Features

The application includes the following features:

  • User authentication and authorization
  • Course listing and filtering
  • Video lessons playback
  • Discussion forum for each course
  • Quizzes with multiple-choice questions
  • Leaderboards to show top performers

Installation

To run the application locally, follow these steps:

  1. Clone the repository:

    git clone https://github.com/eduardo-borges-goncalves/Raro-Class.git
    
  2. Install the dependencies:

    npm install
    
  3. Start the development server:

    npm start
    

The application should now be running on http://localhost:3000.

Technologies Used

The following technologies were used to build the application:

  • React
  • React Router
  • Redux
  • Axios
  • Bootstrap
  • Font Awesome

Contributing

Contributions are welcome! If you find any bugs or have suggestions for new features, please open an issue or submit a pull request.

License

This project is licensed under the MIT License.

Raro Class - Português 🎓

Introdução 📝


Este projeto foi criado visando permitir aos alunos dos cursos da Raro Academy poderem assistir as gravações das aulas, além de disponibilizar para toda comunidade aulões públicos.

Vamos Começar ✅


Para começar, baixe o projeto para sua máquina utilizando o git. Caso não tenha o git instalado, baixe aqui 🔗

git clone https://github.com/rarolabs/raro-academy-react-grupo-4.git 

Por conseguinte, caso ainda não tenha o node instalado, baixe primeiro o programa aqui 🔗. Após a instalação, abra a pasta em que você baixou o projeto no terminal e baixe as dependências com o seguinte comando:

npm install

Se tudo correu bem, é hora de rodar o projeto, digite no terminal o seguinte comando:

npm start

Novamente, se tudo deu certo, você já pode começar a se divertir! 🎉


Estrutura


    📁 Public


    📁 Src


    🔧 Configurações


    📘 Documentação
  • README.md

Arquitetura e Bibliotecas 📐


A priori, esse sistema foi construído com React, e, por isso, tem uma estrutura flexível, sendo implementada de acordo com as boas práticas vigentes e à medida que foi sendo percebida a necessidade de determinadas pastas. Por conseguinte, ele usa algumas bibliotecas para facilitar seu desenvolvimento, entre elas: react router, styled components, js-cookies, axios, zustand, além de claro, react-dom. Assim,

  • O roteamento é feito pelo React-Router, usando a tag BrowserRouter na raíz do projeto, o que permite a divisão em rotas com as tags Routes, Route e Links.

  • Os estados globais são configurados na pasta Context, usando Context.

  • A conexão com a API é realizada por meio do Axios, que é configurado na pasta services, em api-client.ts. Essa configuração permite deixar o código mais legível.

  • O estilo é feito com as bibliotecas Styled Components e Material UI, que permite a edição de CSS em arquivos JS/TS, facilitando a reutilização de componentes.

  • A linguagem usada é o TypeScript.

  • A autenticação é realizada com Cookies, por meio da lib Js-Cookies.


Public e Src 📂


A pasta public contém os assets necessários ao sistema, ou seja, imagens, logos e coisas do tipo, além de possuir o único arquivo html em que será renderizada toda a aplicação. Foco especial na div id="root" , que é capturada pelo index.tsx, document.getElementById('root'), sendo esta a raíz do nosso sistema.

Já a pasta src contém toda a parte lógica do projeto, além da estilização.


Rotas 🚩


As Rotas são configuradas no app.tsx e no index.tsx, passando as páginas por meio de suas propriedades element.


Estilo 🎨


O Estilo é configurado globalmente na pasta Styles e individualmente em cada pasta dos componentes. Utilizamos também a lib Material UI, nos inputs e icons do projeto.


Componentes e Pages


A aplicação é divida em Componentes, para facilitar sua legibilidade e manutenção. As páginas estão intuitivamente na pasta Pages, ao passo que seus componentes menores e reaproveitáveis estão contidos na pasta Components.


Hooks 🚧


Nesta pasta, temos hooks próprios da aplicação, como o useLogin, que é aproveitado em mais de uma página.


Types


A pasta Types contém os tipos criados e reutilizados na aplicação.


Outros


O arquivo .gitignore é voltado às configurações do Git, sendo bastante útil para conseguir ignorar alguns arquivos como o node_modules na hora de enviar o projeto para GitHub :octocat: , por exemplo.

Os arquivos index.d.ts e tsconfig.json servem guardam as configurações do TypesScript. O arquivo index.d.ts tem a finalidade de declarar tipos para aplicações ou bibliotecas originalmente feitas em JavaScript.

Os arquivos package são configurações do projeto.


Páginas 📃


A aplicação conta com cinco páginas, a saber:

  1. Login
  2. Register
  3. Recovery Password
  4. **Home **
  5. Video

🔐 Login


Utiliza o hook useLogin para autenticar o usuário na API, guardar o token e o id do usuário nos cookies por meio da função handleAuthUser. Esta, segue o padrão de nomenclatura da comunidade react, em que as funções chamadas por um usuário iniciam-se pelo termo handle. Além disso, recebe o evento criado pelo clique no botão de entrar, e passa à API os valores guardados nos estados de email e senha.


🔒 Register


O RegisterPassword, ou SignUp possui uma função para validação dos dados do usuário, exigindo que o nome e a senha possuam no mínimo 3 e 6 caracteres respectivamente. Por conseguinte, confirma se as duas senhas são iguais e chama a função responsável por cadastrar o usuário, registerUser(). Essa passa nome, email, senha e código de acesso para a API, além de alterar o texto do botão para "cadastrando". Em caso de erro, é alterado o estado de erro e mostrado na tela para o usuário.


🔑 Recovery Password


Esta página serve para o usuário criar uma nova senha, caso tenha esquecido a sua. É realizado envio de um código para o email cadastrado pelo usuário, para que a partir da validação deste código, o usuário possa redefinir sua senha.


🏠 Home


Esta é a página principal do site, que exibe a lista de vídeos públicos (caso usuário não esteja logado), e a lista completa de todos os vídeos, organizados em sessões, contendo seu tempo de duração e a opção de favoritar o vídeo, facilitando a navegação do usuário.



📼 Video


A página de detalhe do vídeo é o local onde o usuário vai conseguir assistir os vídeos, receber sugestões de vídeos para assistir em sequência, ler os comentários dos outros usuários, reagir aos mesmos e deixar seus próprios comentários. Vale lembrar que essas funcionalidades somente são exibidas se o usuário estiver logado. Caso contrário, só poderá assistir aos vídeos públicos.




👥 Colaboradores


-Bernardo Andrade

-Eduardo Borges

-Jonathan Marvin Chu

-Luciana Moreira

-Marlon Lamartine


©️ À espera do sextou (grupo 4)

About

Sistema de vídeo-aulas

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages