Gerenciador de links de tecnologia desenvolvido como teste para o processo seletivo do programa de trainee da Devnology.
O projeto foi desenvolvido utilizando MERN Stack
(MongoDB, Express.js, React.js e Node.js), com Bootstrap
para estilização, JWT
para autenticação de usuários, mongoose
para a criação dos modelos e puppeteer
para web scraping.
O primeiro passo foi desenvolver a API
de gerenciamento dos links, etabelecendo o modelo para o banco de dados e as suas rotas.
Em seguida foi criado o client com create-react-app
para a interface de gerenciamento, com uma página inicial de exibição dos artigos salvos (possibilitando edição e exclusão) e páginas de formulário para criação/edição dos links.
O terceiro passo foi a implementação da autenticação de usuários utilizando JWT
, com a criação do modelo (e os métodos estáticos de login e cadastro) e a implementação de suas rotas no servidor. Também foram criadas as interfaces de login e de cadastro e implementado o gerenciamento da autenticação utilizando Context API.
Posteriomente, foi implementado o scraper
de artigos do blog devGo, que também possui um endpoint na API e é exibido no front possibilitando que o usuário salve qualquer link de artigo do blog com apenas um click.
Finalmente, tanto o server
, quanto o client
foram hospedados no Render.
É necessário ter Node.js e npm, além do Git instalados na sua máquina.
# clonar esse repositório
$ git clone <https://github.com/plhrsl/devnology-trainee-test>
# entrar no diretório do servidor
$ cd server
No diretório do servidor, crie um arquivo .env
com as variáveis indicadas em .env.example
. Primeiramente, crie um cluster com o MongoDB Atlas e atribua a URI de conexão a MONGO_URI
. Além disso, atribua uma senha forte a JWT_SECRET
.
# instalar as dependências do servidor
$ npm install
# iniciar o servidor em modo de desenvolvimento
$ npm run dev
# o servidor vai iniciar em localhost:5000
# entrar no diretório do client
$ cd web
# instalar as dependências do client
$ npm install
# iniciar o client em modo de desenvolvimento
$ npm start
# o client vai iniciar em localhost:3000