# Agorium: Aprendizado Gamificado e Colaborativo
Um aplicativo educacional que visa transformar a experiência de aprendizado.
## Introdução
### Apresentação do Agorium
>Descreva brevemente o que é o Agorium, seus objetivos e público-alvo (estudantes, professores, etc.).
Inspirado pela palavra "ágora", o Agorium conecta estudantes em tempo real, permitindo que façam perguntas, compartilhem conhecimento e interajam em um ambiente gamificado. Com um sistema de posts vinculados a disciplinas e um ranking que premia o engajamento, o Agorium torna o aprendizado uma experiência social e interativa.
O nome Agorium deriva da palavra "agora", remetendo à ideia de imediatismo e conexão em tempo real. Tal como o antigo "ágora" grego, onde as pessoas se reuniam para discutir e compartilhar conhecimentos, o Agorium busca criar um espaço virtual onde os estudantes possam colaborar de maneira dinâmica. Ao promover uma cultura de troca de informações e aprendizagem ativa, o nome reflete a missão do aplicativo de unir a comunidade estudantil em um ambiente de interação constante e fluida.
### Contexto e Problema
Explique a motivação para criar um aplicativo clone do Reddit no ambiente acadêmico. Exemplifique problemas que Agorium pretende resolver, como a necessidade de uma plataforma de troca de conhecimento no contexto educacional.
### Propósito do Artigo
Defina o propósito do artigo, que é documentar o processo de desenvolvimento e os desafios técnicos enfrentados.
## Análise de Requisitos
### Funcionalidades do Agorium
Descreva as principais funcionalidades do aplicativo (criação de postagens, comentários, votação, etc.).
Relacione a gamificação como diferencial, explicando como ela foi incorporada ao sistema para engajar os usuários.
Requisitos Técnicos:
Explique as necessidades técnicas, como escalabilidade, segurança (uso de JWT para autenticação), envio de emails com PHPMailer, e integração com bancos de dados (MySQL).
Conexão e Colaboração: Os alunos podem se conectar uns com os outros, fazer perguntas e receber respostas de forma rápida e eficiente.
Sistema de Ranking: Um sistema de gamificação que recompensa os alunos pelo engajamento com posts e respostas, tornando a experiência de aprendizado competitiva e divertida.
Posts Vinculados a Disciplinas: Os tópicos são organizados por matérias, facilitando o foco no conteúdo específico e a busca de conhecimento relevante.
```mermaid
erDiagram
User {
int id PK
string username
string email
string passwordHash
string fullName
string avatar
datetime createdAt
datetime updatedAt
}
Post {
int id PK
string title
text content
datetime createdAt
datetime updatedAt
int user_id FK
int category_id FK
int favorite_comment_id FK
}
Category {
int id PK
string name
text description
}
Tag {
int id PK
string name
}
PostTag {
int id PK
int post_id FK
int tag_id FK
}
Comment {
int id PK
text content
datetime createdAt
datetime updatedAt
int post_id FK
int user_id FK
int parent_comment_id FK
}
Vote {
int id PK
string voteType
datetime createdAt
int user_id FK
int post_id FK
int comment_id FK
}
%% Relationships
Post ||--o| User: "belongs to"
Post ||--o| Category: "belongs to"
Post ||--o{ PostTag: "has many"
PostTag ||--o| Tag: "belongs to"
Comment ||--o| Post: "belongs to"
Comment ||--o| User: "belongs to"
Comment ||--o| Comment: "parent comment"
Vote ||--o| User: "belongs to"
Vote ||--o| Post: "optional (post)"
Vote ||--o| Comment: "optional (comment)"
```
## Arquitetura e Tecnologias
Front-End
O front-end do Agorium é desenvolvido utilizando tecnologias modernas como:
React: Um framework de JavaScript para a criação de interfaces dinâmicas e responsivas.
TypeScript: Para garantir maior segurança no código, utilizando tipagem estática.
Vite: Ferramenta de build que oferece uma experiência de desenvolvimento extremamente rápida.
Radix: Um conjunto de componentes acessíveis para React.
TailwindCSS: Um framework de CSS utilitário que facilita o design responsivo.
Back-End
O back-end do Agorium é robusto e escalável, utilizando as seguintes tecnologias:
PHP (Slim Framework): Um microframework ágil para construir APIs de forma eficiente.
Doctrine ORM: Ferramenta de mapeamento objeto-relacional para trabalhar com banco de dados de forma simplificada.
MySQL: Banco de dados relacional amplamente utilizado.
JWT (JSON Web Token): Para autenticação segura e baseada em tokens.
PHPMailer: Para o envio de e-mails, automatizando notificações e comunicações entre os usuários.
Ambiente de Desenvolvimento
Para facilitar o desenvolvimento colaborativo e garantir consistência entre os ambientes, o Agorium utiliza o Docker para configurar e gerenciar os serviços necessários. Abaixo está uma visão geral da configuração do ambiente:
Configuração com Docker
devcontainer.json: Arquivo que define o ambiente de desenvolvimento utilizando o Visual Studio Code e Docker. Ele garante que todos os desenvolvedores utilizem a mesma configuração de extensão e editor.
docker-compose.yml: Configura vários serviços, como o Nginx, MySQL, Mailhog e Swagger, necessários para o funcionamento completo do ambiente de desenvolvimento.
O Docker garante que o ambiente de desenvolvimento seja replicável e escalável, permitindo que a equipe de desenvolvimento trabalhe de maneira eficiente e integrada.
Detalhes dos Serviços
Nginx: Servidor web utilizado para rotear as requisições entre os diferentes serviços, incluindo a interface com o Mailhog para testar envio de e-mails e o Swagger para documentar a API.
MySQL: Banco de dados responsável por armazenar informações de usuários, posts e interações dentro do aplicativo.
Mailhog: Serviço de teste de envio de e-mails.
Swagger: Ferramenta para documentação interativa da API.
O Agorium é construído com uma arquitetura moderna, dividida em dois componentes principais: o front-end e o back-end.
### Frontend
Descreva o uso de React, TypeScript, Vite, Radix, e TailwindCSS. Explique a escolha dessas tecnologias para garantir performance e boa experiência do usuário.
### Backend
Detalhe a implementação usando PHP Slim Framework, Doctrine ORM, MySQL, e JWT para autenticação. Inclua os motivos para a escolha dessas ferramentas e como elas se integram no projeto.
Comunicação entre Frontend e Backend:
Descreva como o front-end comunica-se com o back-end via REST API, e os padrões de arquitetura que você seguiu (como MVC, por exemplo).
4. Funcionalidades Específicas
Postagens e Comentários:
Explique como foi implementado o CRUD de postagens e comentários. Relacione a lógica de votos e a funcionalidade de respostas.
Gamificação:
Descreva como a gamificação foi integrada na plataforma (sistema de pontos, conquistas, rankings, etc.), incluindo as tecnologias ou bibliotecas utilizadas.
Filas para Envio de Emails:
Explique a implementação da fila para o envio de emails utilizando o PHP (caso tenha implementado) ou como planeja essa parte.
5. Desafios Enfrentados
Problemas Técnicos:
Discuta alguns dos principais desafios técnicos, como integração entre sistemas, performance, segurança, ou escalabilidade.
Soluções Implementadas:
Detalhe as soluções desenvolvidas para superar esses desafios.
6. Resultados
## Protótipo Funcional
Apresente o estágio atual do desenvolvimento. Inclua screenshots ou exemplos de telas do aplicativo funcionando.
Avaliação de Performance:
Discuta a performance do aplicativo e como ele se comporta em termos de responsividade e escalabilidade.
## Conclusão e Próximos Passos
### Conclusões
Resuma o impacto esperado do Agorium na educação e como ele poderá contribuir para o ambiente acadêmico.
O Agorium busca revolucionar a maneira como os alunos aprendem e interagem, utilizando a gamificação como ferramenta para promover o engajamento e a colaboração. Com uma arquitetura tecnológica moderna e uma missão clara de conectar estudantes, o aplicativo visa proporcionar uma experiência de aprendizado divertida e eficiente. Ao unir o agora com o espaço colaborativo de conhecimento, o Agorium se posiciona como uma plataforma educacional dinâmica e inovadora.
### Futuras Implementações
Discuta as funcionalidades que ainda podem ser adicionadas no futuro e como o aplicativo pode evoluir, como integração com IA para respostas automáticas ou mais elementos de gamificação.
Logos







VEM KO PAI