CoatiQuati é uma rede social de compartilhamento de conhecimento, onde você pode compartilhar seus conhecimentos com o mundo e aprender com a comunidade.
A ideia do CoatiQuati é ser uma ferramenta de aprendizado com trilhas e tópicos de estudo criados por professores que servem como administradores da plataforma.
Futuramente pretendo adicionar funcionalidades que dão ainda mais liberadade aos estudantes, como a possibilidade de criar trilhas de estudo e tópicos de estudo sem a necessidade de ser um professor.
Tudo por aqui é gratuito, sem anúncios e sem rastreamento de dados. Apesar que talvez eu adicione alguma forma de analytics para saber como as pessoas estão utilizando a plataforma, mas pretendo ser transparente sobre isso e procurar uma plataforma de analytics que respeite a privacidade dos usuários.
-
Clone o repositório
git clone https://github.com/devlulcas/coatiquati.git
-
Instale as dependências
pnpm install
-
Crie um arquivo
.env.local
na raiz do projeto e adicione as seguintes variáveis de ambientecp .env.example .env.local
-
Altere as variáveis de ambiente no arquivo
.env.local
com as suas credenciais da AWS, banco de dados e etc.
- AWS_ACCESS_KEY_ID = Chave de acesso de um usuário IAM com permissões de acesso ao S3 e SES da AWS
- AWS_SECRET_ACCESS_KEY = Chave secreta de um usuário IAM com permissões de acesso ao S3 e SES da AWS
- AWS_REGION = Região da AWS
- AWS_BUCKET_NAME = Nome do bucket do S3 ({prod|dev|staging}-{domaintld}-{version}-{nanoid})
- DATABASE_URL = URL de conexão com o banco de dados (libsql://{database}-{user}.turso.io ou http://127.0.0.1:8080)
- DATABASE_AUTH_TOKEN = Token de conexão com o banco de dados (Não é necessário para o banco de dados local)
Para gerar o banco de dados local instale a CLI do Turso e execute
turso dev --db-file dev.db
ou simplesmentepnpm db:summon
-
Execute as migrations
pnpm run db:migrate
-
Inicie o servidor
pnpm dev
-
Acesse o servidor em
http://localhost:3000
pnpm cli:manage
- Inicia o gerenciador do CoatiQuati
Atualmente o gerenciador do CoatiQuati só suporta a criação de contas e alteração de privilégios de usuário.
pnpm db:summon
- Inicia o banco de dados localpnpm db:destroy
- Destrói o banco de dados localpnpm db:generate
- Cria uma nova migrationpnpm db:migrate
- Executa as migrationspnpm db:push
- Altera o banco de dados sem criar migrations, usar somente em devpnpm db:pull
- Puxa a estrutura do banco de dados
-
Altere o arquivo
src/env.ts
e remova as checagens das variáveis de ambienteAWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
eAWS_REGION
(ou mantenha as variáveis de ambiente e altere o valor delas para as credenciais do serviço de envio de e-mails que você deseja utilizar se ele for compatível com o SES, talvez seja necessário mantê-las caso vá usar o S3 da AWS) -
Altere o arquivo
/src/modules/email/lib/mail.ts
e crie uma nova função que seja compatível com a interfaceMailTransporterFactory
e altere a condiçãoexport const mailer
para retornar a função que você criou
Desde que sua implementação seja compatível com a interface MailTransporterFactory
você pode usar qualquer serviço de envio de e-mails que desejar.
Warning
O serviço de armazenamento de arquivos deve ser compatível com o S3 da AWS. Se você deseja usar um serviço de armazenamento de arquivos que não seja compatível com o S3 da AWS você deve alterar o código fonte do projeto para que ele seja compatível com o serviço de armazenamento de arquivos que você deseja utilizar.
Essa seção ainda não está pronta, alterações serão feitas em breve após o código ser refatorado para ser compatível com outros serviços de armazenamento de arquivos.
Para isso talvez seja necessário alterar o código fonte do projeto, pois o projeto atualmente só suporta login com e-mail, usuário e senha.
Você provavelmente terá que alterar o banco de dados também.
Para implementar essa funcionalidade você pode acessar a documentação da biblioteca de autenticacão que o projeto utiliza Lucia e ver um exemplo no github
MIT License
Seja livre colega! 🚀
Lucas Alves Rego no Linkedin lucasrego.tech no meu site
- Adicionar login com redes sociais
- Adicionar suporte a outros serviços de armazenamento de arquivos
- Suporte a criação de contas de administrador via CLI
- Suporte a criação de conteúdo com markdown, além do WYSIWYG
- Suporte a upload de LaTeX para papéis científicos
- Suporte a upload de arquivos de áudio para micro-podcasts
- Suporte a upload de arquivos PDF para artigos científicos e livros (com visualizador de PDF)
- Sistema de tags para categorizar conteúdo
- Feed de amigos (seguindo e seguidores)
- Feed "Para você" com base no seu histórico de leitura, tags favoritas, upvotes, downvotes e comentários
- Sinalizar conteúdo inapropriado para remoção
O algoritmo de recomendação de conteúdo para o feed "Para você" será baseado em um sistema de recomendação colaborativo com filtragem colaborativa baseada em itens.
Ainda preciso estudar mais sobre a implementação desse algoritmo, mas a ideia é que a sua rede de amigos, tags favoritas, upvotes, downvotes e comentários sejam usados para recomendar conteúdo para você.
TensorFlow.js parece ser uma boa opção para implementar esse algoritmo.