Sistema de Devocionais Diários
Sistema de devocionais diários e estudos bíblicos
"A tua palavra é lâmpada para os meus pés e luz para o meu caminho"
Salmos 119:105
O módulo de Devocionais oferece uma plataforma completa para criação, publicação e compartilhamento de devocionais diários, estudos bíblicos e reflexões espirituais. Permite crescimento espiritual contínuo dos membros da igreja.
Editor rico para criar devocionais
Devocionais programados por data
Sistema de favoritos e compartilhamento
Editor rico para criação de devocionais com formatação avançada.
Sistema de programação e publicação automática de devocionais.
Sistema de categorização e tags para organização dos devocionais.
Sistema de favoritos e compartilhamento de devocionais.
Sistema de busca e filtros para encontrar devocionais rapidamente.
Interface responsiva para acesso em dispositivos móveis.
CREATE TABLE devocionais (
id BIGINT PRIMARY KEY,
titulo VARCHAR(255) NOT NULL,
subtitulo VARCHAR(255),
conteudo TEXT NOT NULL,
autor_id BIGINT,
categoria VARCHAR(100),
tags JSON,
data_publicacao DATE,
data_programada DATE,
status ENUM('rascunho', 'publicado', 'programado', 'arquivado'),
visualizacoes INT DEFAULT 0,
created_at TIMESTAMP,
updated_at TIMESTAMP
);
CREATE TABLE devocional_favoritos (
id BIGINT PRIMARY KEY,
devocional_id BIGINT,
user_id BIGINT,
data_favorito DATETIME,
created_at TIMESTAMP,
updated_at TIMESTAMP
);
CREATE TABLE devocional_visualizacoes (
id BIGINT PRIMARY KEY,
devocional_id BIGINT,
user_id BIGINT NULL,
ip_address VARCHAR(45),
user_agent TEXT,
data_visualizacao DATETIME,
created_at TIMESTAMP,
updated_at TIMESTAMP
);
CREATE TABLE devocional_categorias (
id BIGINT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
descricao TEXT,
cor VARCHAR(7),
ativo BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP,
updated_at TIMESTAMP
);
// Rotas Admin
Route::prefix('admin/devotionals')->name('admin.devotionals.')->middleware(['auth', 'admin'])->group(function () {
Route::get('/', [DevocionalController::class, 'index'])->name('index');
Route::resource('devotionals', DevocionalController::class);
Route::resource('categories', DevocionalCategoriaController::class);
Route::get('reports', [DevocionalRelatorioController::class, 'index'])->name('reports');
});
// Rotas Member
Route::prefix('member/devotionals')->name('member.devotionals.')->middleware(['auth'])->group(function () {
Route::get('/', [DevocionalMemberController::class, 'index'])->name('index');
Route::get('favorites', [DevocionalFavoritoController::class, 'index'])->name('favorites');
Route::post('favorite/{devocional}', [DevocionalFavoritoController::class, 'toggle'])->name('favorite');
Route::get('history', [DevocionalMemberController::class, 'history'])->name('history');
});
// DevocionalController.php
public function store(Request $request)
{
$request->validate([
'titulo' => 'required|string|max:255',
'subtitulo' => 'nullable|string|max:255',
'conteudo' => 'required|string',
'categoria' => 'nullable|string|max:100',
'tags' => 'nullable|array',
'data_publicacao' => 'nullable|date',
'status' => 'required|in:rascunho,publicado,programado'
]);
$devocional = Devocional::create([
'titulo' => $request->titulo,
'subtitulo' => $request->subtitulo,
'conteudo' => $request->conteudo,
'autor_id' => auth()->id(),
'categoria' => $request->categoria,
'tags' => $request->tags,
'data_publicacao' => $request->data_publicacao ?? now(),
'status' => $request->status
]);
return redirect()->route('admin.devotionals.index')
->with('success', 'Devocional criado com sucesso!');
}
// DevocionalFavoritoController.php
public function toggle(Devocional $devocional)
{
$favorito = DevocionalFavorito::where('devocional_id', $devocional->id)
->where('user_id', auth()->id())
->first();
if ($favorito) {
$favorito->delete();
$message = 'Removido dos favoritos';
} else {
DevocionalFavorito::create([
'devocional_id' => $devocional->id,
'user_id' => auth()->id(),
'data_favorito' => now()
]);
$message = 'Adicionado aos favoritos';
}
return response()->json([
'success' => true,
'message' => $message,
'is_favorite' => !$favorito
]);
}
// DevocionalMemberController.php
public function search(Request $request)
{
$query = Devocional::where('status', 'publicado');
if ($request->filled('search')) {
$search = $request->search;
$query->where(function($q) use ($search) {
$q->where('titulo', 'like', "%{$search}%")
->orWhere('subtitulo', 'like', "%{$search}%")
->orWhere('conteudo', 'like', "%{$search}%");
});
}
if ($request->filled('categoria')) {
$query->where('categoria', $request->categoria);
}
if ($request->filled('autor')) {
$query->where('autor_id', $request->autor);
}
$devocionais = $query->with(['autor', 'favoritos'])
->orderBy('data_publicacao', 'desc')
->paginate(12);
return view('member.devotionals.index', compact('devocionais'));
}
Análise de visualizações e engajamento dos devocionais.
Análise de favoritos e preferências dos usuários.
Análise de performance dos autores de devocionais.
Análise de categorias e temas mais populares.
Integração com o sistema de gestão de membros para autores e leitores.
Notificações automáticas para novos devocionais e lembretes.
Integração com o sistema de Bíblia digital para referências.
Relatórios consolidados sobre crescimento espiritual.