ruilopesm / educatium

Educational Resources Management Platform
3 stars 0 forks source link
ecto education elixir phoenix-framework phoenix-liveview postgresql

Educatium

Plataforma de Gestão de Recursos Educativos

Instalação

A plataforma depende de vários serviços para funcionar corretamente - uma web app feita em Elixir com Phoenix e uma base de dados em PostgreSQL.

Como tal, o grupo decidiu criar um setup com recurso a Docker e Docker Compose.

[!NOTE] Caso pretenda utilizar a autenticação via Google, é necessária a criação de uma aplicação no Google Developers.

Docker

cp .env.dev.sample .env.dev # Copiar o ficheiro de configuração (poderá ser necessário alterar localhost para db em DB_HOST)
docker-compose -f docker-compose.dev.yml -f {linux,darwin,windows}.yml up

Atenção na escolha do segundo ficheiro, pois o mesmo é dependente do sistema operativo que está a ser utilizado.

É, ainda possível, levantar apenas um container com a base de dados, utilizando a web app em modo local.

docker-compose -f docker-compose.dev.yml -f {linux,darwin,windows}.yml up db

Local

cp .env.dev.sample .env.dev # Copiar o ficheiro de configuração
mix setup # Instalar as dependências
mix ecto.create # Cria a base de dados
mix ecto.migrate # Cria as tabelas
mix ecto.seed # Preenche a base de dados com dados de exemplo
mix phx.server # Iniciar a web app

Funcionalidades

Utilizadores e Níveis de Acesso

Estrutura do modelo de um utilizador:

User: {
  email: string
  hashed_password: string
  avatar: string
  handle: string
  first_name :string
  last_name: string
  course: string
  university: string
  role: string
  confirmed_at :datetime
  active: boolean
}

Daqui depreende-se que um utilizador tem um email, uma password, um avatar, um handle, um primeiro nome, um último nome, um curso, uma universidade, um papel, uma data de confirmação e um estado de ativação.

Esta data de confirmação é utilizada para verificar se o utilizador confirmou o seu email.

O estado de ativação é utilizado para verificar se o utilizador está ativo ou não. Inicialmente, para verificar se o mesmo já terminou o seu registo, preenchendo campos como o primeiro nome, o último nome, o curso e a universidade, etc.

Screenshots

Profile page
Página de perfil de um utilizador
Settings page
Página de definições de um utilizador
Tab Settings Dev
Aba 'Dev' da página de definições de um utilizador

Feed

Screenshots

Feed
Feed principal da aplicação

Recursos Educativos

Estrutura do modelo de um recurso educativo:

Resource: {
  title: string
  description: string
  type: string (book | article | notes | code | worksheet ...)
  date: date
  visibility: string (public | private)
  root_directory_id: uuid
  ... # outros relacionamentos
}

Daqui depreende-se que um recurso educativo tem um título, uma descrição, um tipo, uma data, uma visibilidade e uma diretoria raiz. Esta diretoria é uploaded pelo utilizador aquando da criação do recurso educativo. Foi criado, também, um mapeamento na base de dados para diretorias e ficheiros de um recurso, de forma que seja possível fazer uma listagem dos mesmos.

Para além da criação simples, através de um formulário, de um recurso, é também possível a criação de múltiplos recursos através do uso de um ficheiro .json.

Um recurso
Criação de um único recurso
Vários recursos
Criação de múltiplos recursos
Página de um recurso
Página de um recurso

Anúncios

Estrutura do modelo de um anúncio:

Announcement: {
  title: string
  body: string
}

Screenshots

Anúncios
Página de um anúncio

Admin dashboard

Screenshots

Admin dashboard
Página de gestão de utilizadores da plataforma
Admin dashboard
Página de gestão de recursos educativos da plataforma
Admin dashboard
Página de gestão de anúncios da plataforma
Admin dashboard
Página de gestão de posts da plataforma
Admin dashboard
Página de gestão de tags da plataforma

API REST

O grupo decidiu criar uma API REST para a plataforma, de forma que seja possível a integração com outras aplicações. Esta API é acessível com recurso a uma chave que pode ser gerada na página de definições de um utilizador.

Endpoints

Headers necessários:

Authorization: <token>

Este token pode ser obtido a partir das definições do utilizador na página de desenvolvimento.

Endpoints para Administrador

Todos estes endpoints só estão disponíveis caso o utilizador associado ao token seja um administrador.

Exportar

Tradução