🍴 Site de receitas chamado Foodfy 🍴
Foodfy é um site de receitas completo, que conta com parte de visita ao público e parte administrativa. Nele é possível cadastrar usuários, chefs e, claro, receitas! Foi desenvolvido com JavaScript em toda stack e utiliza o banco de dados relacional PostgreSQL. O escopo e as orientações para realização deste projeto são do Bootcamp LaunchBase, da Rocketseat.
- NodeJS
- Express
- Express Session
- Method Override
- Multer
- PG
- Connect PG Simple
- Bcrypt
- Nodemailer
- Nunjucks
- Faker
- Controle de sessão (login e logout)
- Cadastro de usuários
- Edição de usuários
- Remoção de usuários
- Listagem de usuários
- Recuperação de senha
- Cadastro de chefs
- Edição de chefs
- Remoção de chefs
- Listagem de chefs
- Cadastro de receitas
- Edição de receitas
- Remoção de receitas
- Listagem de receitas
- Pesquisa de receitas
Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git e Node.js. Para trabalhar com o código, é recomendável o uso de um bom editor, como o VSCode.
# Clone este repositório
$ git clone https://github.com/emanuelmassafera/foodfy.git
# Acesse a pasta do projeto pelo terminal/cmd
$ cd foodfy
# Instale as dependências
$ npm install
Instale em seu computador o PostgreSQL e o Postbird. Finalizando as instalações, ligue o PostgreSQL.
No Windows, o processo para ligá-lo segue os seguintes passos:
# Abra o Powershell como administrador, e navegue até a pasta de instalação
$ cd "C:\Program Files\PostgreSQL\12\bin\"
# Inicie o postgres com o comando abaixo
$ .\pg_ctl.exe -D "C:\Program Files\PostgreSQL\12\data" start
# Após o uso, o comando para desligá-lo é
$ .\pg_ctl.exe -D "C:\Program Files\PostgreSQL\12\data" stop
Depois de ligar o PostgreSQL, acesse o Postbird e crie um banco de dados com o nome de foodfy. Feito isso, clique na opção de importar um arquivo .sql e importe o arquivo foodfydb.sql presente neste respositório. Você pode checar se o banco foi importado verificando suas tabelas. Se tudo deu certo até aqui, o seu banco de dados já está criado.
Você deverá indicar suas informações de usuário e senha do postgres no arquivo db.js.
Para popular o banco de dados com informações fakes e geradas automaticamente, abra o terminal no diretório do projeto e execute o comando:
$ node seeds.js
O Mailtrap será responsável por simular uma caixa de e-mails para as funcionalidades de criar um usuário (a senha de acesso será enviada por e-mail) e de recuperar a senha.
Entre no site do Mailtrap e faça seu cadastro. Quando já estiver cadastrado, acesse a aba Inboxes, crie uma nova inbox com o nome de foodfy, entre no seção SMTP Settings e mude Integrations para Nodemailer. Agora copie o código gerado, cole no arquivo mailer.js e faça algumas pequenas alterações para que fique semelhante a este:
const nodemailer = require("nodemailer");
module.exports = nodemailer.createTransport({
host: "smtp.mailtrap.io",
port: 2525,
auth: {
user: "64c928ef98456a",
pass: "b296d458814028"
}
});
É importante que o código preenchido no aquivo mailer.js seja o gerado em sua conta do Mailtrap, caso contrário você não receberá os e-mails corretamente.
Finalizando todos os passos descritos acima com sucesso, agora podemos executar o projeto.
# Acesse a pasta do projeto pelo terminal/cmd
$ cd foodfy
# Execute a aplicação
$ npm start
# O servidor inciará na porta:3000 - acesse http://localhost:3000
Ao acessar localhost:3000 você estará na seção pública do foodfy. Para ter acesso ao setor administrativo entre em localhost:3000/admin. O administrador padrão do sitema tem o email admin@admin.com e senha admin. Os outros usuários que são gerados automaticamente possuem e-mails aleatórios e senha 1234.
Pode ser que ao deletar um dos registros gerados automaticamente com o seeds, a imagem de referência de todos os outros seja perdida. Caso isto ocorra, crie outra imagem com o nome de placeholder.png na pasta public/images.
Emanuel Massafera
Esse repositório está licenciado pela MIT LICENSE. Para informações detalhadas, leia o arquivo LICENSE.
Made with ♥ by Emanuel Massafera 👋 Get in touch!