O mural é um sistema cujo principal objetivo é estreitar a comunicação entre a comunidade da Universidade Federal da Fronteira Sul (UFFS) e o programa Practice. Esse estreitamento visa que ideias e demandas voltadas à melhoria da educação possam ser publicadas, discutidas, discorridas e desenvolvidas.
IMPORTANTE: o Practice Mural está em funcionamento em: practice.uffs.edu.br/mural.
O mural possui um conjunto considerável de features:
- Autenticação a partir do idUFFS;
- Categorias de serviços, com campos dinâmicos para cada;
- Acompanhamento de solicitações;
- Ingragração com Github e Google Drive;
Para executar o projeto, você precisa ter o seguinte instalado (desde sua versão v2
, exige-se php >= 8.0
).:
IMPORTANTE: se sua distribuição linux não tem PHP 8.x disponível, rode
sudo add-apt-repository ppa:ondrej/php
antes de começar.
Você precisa de várias extensões PHP instaladas também:
sudo apt-get update
sudo apt install php8.0-cli php8.0-mbstring php8.0-zip php8.0-xml php8.0-curl php8.0-sqlite3 php8.0-curl
Feito a instalação das dependências, é necessário obter uma cópia do projeto. A forma recomendada é clonar o repositório para a sua máquina.
Para isso, rode:
git clone --recurse-submodules https://github.com/practice-uffs/mural && cd mural
Isso criará e trocará para a pasta mural
com o código do projeto.
Instale as dependências do PHP usando o comando abaixo:
composer install
O banco de dados mais simples para uso é o SQLite. Para criar uma base usando esse SGBD, rode:
touch database/database.sqlite
Instale também as dependências do NodeJS executando:
npm install
Crie o arquivo .env
a partir do arquivo .env.example
gerado automaticamente pelo Laravel:
cp .env.example .env
Criação as tabelas do banco de dados com as migrações esquemas:
php artisan migrate
Rode os seeders (que crias as categorias/serviços padrão):
php artisan db:seed
Gere os recursos JavaScript e CSS:
npm run dev
DICA: enquanto estiver desenvolvendo, rode
npm run watch
para manter os scripts javascript sendo gerados sob demanda quando alterados.
Por fim, garanta que o storage do Laravel está disponível para acesso web:
php artisan storage:link
Como citado anteriormente o Mural possui integração com o Google Drive, mas para que a integração funcione corretamente é necessário gerar e adicionar um arquivo de credenciais na pasta config/google
. Para gerar este arquivo é necessário realizar autenticação com a conta cujo Drive será utilizado neste link e criar um novo projeto. Com o projeto criado basta acessar o Marketplace (presente no menu lateral) e buscar pela "Google Drive API", acessá-la e clicar no botão "ativar".
Depois que a ativação é concluída basta acessar a página da API e clicar em "Credenciais" no menu lateral, em seguida em "Criar credenciais" e "ID do cliente OAuth". Nesse momento pode ser necessário configurar a tela de permissão OAuth, para isso basta seguir o passo a passo inserindo as configurações desejadas. Com a tela de permissão configurada basta criar o ID do cliente OAuth, como URL de redirecionamento é possível utilizar a url https://developers.google.com/oauthplayground/
. Depois de gerar o ID do cliente OAuth é possível fazer o download do JSON com as credenciais por meio da página de credenciais.
Com o JSON em mãos basta salvá-lo na pasta config/google
com o nome credentials.json
. Depois desses passos ao executar o comando php artisan serve
pela primeira vez será solicitado que faça login com a conta do Google utilizada.
Depois de seguir todos os passos de instalação, inicie o servidor do Laravel:
php artisan serve
Após isso a aplicação estará rodando na porta 8081
e poderá ser acessada em localhost:8081.
Se você utilizar a API dessa aplicacão, todos endpoints estarão acessivel em /api
, por exemplo localhost:8081/api. Os endpoints que precisam de uma chave de autenticação devem ser utilizar o seguinte cabeçalho HTTP:
Authorization: Bearer XXX
onde XXX
é o valor da sua chave de acesso (passaporte Practice), por exemplo c08cbbfd6eefc83ac6d23c4c791277e4
.
Abaixo está um exemplo de requisição para o endpoint user
utilizando a chave de acesso acima:
curl -H 'Accept: application/json' -H "Authorization: Bearer c08cbbfd6eefc83ac6d23c4c791277e4" http://localhost:8001/api/user
Sua ajuda é muito bem-vinda, independente da forma! Confira o arquivo CONTRIBUTING.md para conhecer todas as formas de contribuir com o projeto. Por exemplo, sugerir uma nova funcionalidade, reportar um problema/bug, enviar um pull request, ou simplemente utilizar o projeto e comentar sua experiência.
Veja o arquivo ROADMAP.md para ter uma ideia de como o projeto deve evoluir.
Esse projeto é licenciado nos termos da licença open-source MIT e está disponível de graça.
Veja todas as alterações desse projeto no arquivo CHANGELOG.md.
Abaixo está uma lista de links interessantes e projetos similares: