Este projeto é uma aplicação web de blog desenvolvida como parte do Desafio Técnico Mainô. A aplicação permite que usuários publiquem, editem e comentem posts. Além disso, oferece funcionalidades de autenticação, recuperação de senha e paginação de posts. O projeto foi desenvolvido utilizando Ruby on Rails, HTML, CSS, JavaScript e PostgreSQL.
- 📄 Visualizar posts publicados por todos os usuários, ordenados do mais novo para o mais antigo.
- 📑 Paginação dos posts, exibindo até 3 posts por página.
- 💬 Fazer comentários anônimos.
- 📝 Cadastrar um novo usuário.
- 🔑 Fazer login com um usuário cadastrado.
- 🔄 Recuperar a senha do usuário.
- ✍️ Redigir e publicar um post.
- ✏️ Editar e apagar posts publicados pelo próprio usuário.
- 💬 Fazer comentários identificados através do login.
- 🛠️ Editar o cadastro do usuário.
- 🔄 Alterar a senha do usuário logado.
- ✅ Testes automatizados simples.
- 🌐 Internacionalização.
- 🏷️ Adicionar tags aos posts e filtrar posts por tags.
- 📂 Upload de arquivo TXT para criação de posts ou múltiplas tags, utilizando Sidekiq para processamento assíncrono.
-devise
: Para autenticação de usuários.
-kaminari
: Para paginação dos posts.
-sidekiq
: Para processamento assíncrono de uploads de arquivos.
-rails-i18n
e devise-i18n
: Para internacionalização.
-simplecov
: Para cobertura de testes.
-rubocop-rails-omakase
: Para análise estática de código.
-bootsnap
: Para acelerar o boot da aplicação.
-solid_cache
, solid_queue
, solid_cable
: Para cache, filas e WebSockets.
-Modelos: Post
, Comment
, User
, Tag
, PostTag
-Controladores: PostsController
, CommentsController
, Users::SessionsController
, Users::RegistrationsController
, Users::OmniauthCallbacksController
-Views: Utilização de ERB para renderização de templates.
-Jobs: CreatePostsFromFileContentJob
para processamento de uploads de arquivos.
-Configurações: Internacionalização configurada para português e inglês.
- Ruby 3.3.5
- Rails 8.0.1
- PostgreSQL
- Redis (para Sidekiq)
- Clone o repositório:
git clone https://github.com/Lusqinha/maino-rails-blog.git
cd maino_rails_blog
- Instale as dependências:
bundle install
- Configure o banco de dados: Crie um arquivo
.env
na raiz do projeto com as seguintes variáveis:
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_NAME=rails_blog
DB_TEST_NAME=rails_blog_test
DB_SSLMODE=disable
REDIS_URL=redis://default:senha123!@localhost:6379/0
HOST_ADRESS=examaple.com
SMTP_ADDRESS=smtp.example.com
SMTP_PORT=587
SMTP_DOMAIN=example.com
SMTP_USER_NAME=[email protected]
SMTP_PASSWORD=mailer_password
HOST=localhost
PORT=3000
- Prepare o banco de dados:
bin/rails db:setup
- Inicie o Sidekiq:
bundle exec sidekiq
- Inicie o servidor Rails:
bin/rails server
- Acesse a aplicação: Abra o navegador e acesse http://localhost:3000.
Para executar os testes automatizados, utilize o comando:
bin/rails test
A aplicação está configurada para ser implantada em um serviço de hospedagem na nuvem. Certifique-se de configurar as variáveis de ambiente necessárias e seguir as instruções de deploy específicas da plataforma escolhida.
Este projeto foi desenvolvido seguindo as melhores práticas de desenvolvimento em Ruby on Rails, com foco em qualidade de código, legibilidade e aderência ao escopo solicitado. A aplicação está pronta para ser utilizada e pode ser facilmente expandida com novas funcionalidades.