Como Criar um Buscador de Versículos Bíblicos com Python e Flask (Passo a Passo)

  Seja muito bem-vindo à Academy Code Christ!

Como-Criar-um-Buscador-de-Versículos-Bíblicos-com- Python-e-Flask-Passo-a-Passo

 

🌍 Este site está disponível em vários idiomas.
Fique à vontade para usar o tradutor no topo da página e aprender no seu idioma.

Aprenda a criar um Buscador de Versículos Bíblicos usando Python com Flask, capaz de encontrar passagens por palavra-chave, tema ou personagem.


Este projeto é uma aplicação real, que simula um sistema inteligente de busca dentro da Bíblia, utilizando lógica de programação para entregar resultados relevantes ao usuário.

🚀 O que vamos construir?

Um sistema web com:

●       🔍 Busca de versículos por palavra-chave (ex: “amor”, “fé”, “esperança”)

●       📚 Retorno dos versículos mais relevantes

●       🧠 Explicação simples baseada no tema

●       👤 Identificação de personagens bíblicos

●       🌐 Interface web com HTML + CSS + JavaScript

●       ⚡ Backend com Python (Flask)

●        

🧰 Tecnologias utilizadas

Tecnologia                 Função

Python              Lógica do sistema

Flask                Servidor web

HTML              Estrutura da página

CSS                  Estilização

JavaScript        Comunicação com o backend

📁 Estrutura do projeto

projeto/

├── app.py

├── biblia_limpa/

├── personagens.txt

├── temas.txt

├── templates/

│   └── index.html

└── static/

    └── style.css

🧹 Como funciona o buscador?

O sistema utiliza algumas técnicas simples, mas poderosas:

●       normalização de texto (remove acentos e padroniza letras)

●       separação de palavras-chave

●       cálculo de relevância (score)

●       ordenação dos melhores resultados

Isso permite encontrar versículos mesmo com buscas simples.

🧠 Lógica principal (Python + Flask)

from flask import Flask, render_template, request, jsonify

import os

import unidecode

 

app = Flask(__name__)

 

def normalizar(texto):

    return unidecode.unidecode(texto.lower())

 

def carregar_biblia(pasta="biblia_limpa"):

    versiculos = []

    for arquivo in os.listdir(pasta):

        if arquivo.endswith(".txt"):

            with open(os.path.join(pasta, arquivo), encoding="utf-8") as f:

                for linha in f:

                    if linha.strip():

                        versiculos.append(linha.strip())

    return versiculos

 

biblia = carregar_biblia()

 

def calcular_score(palavras, verso):

    return sum(1 for p in palavras if p in verso)

 

def buscar_biblia(pergunta):

    p = normalizar(pergunta)

    palavras = p.split()

 

    resultados = []

 

    for v in biblia:

        v_norm = normalizar(v)

        score = calcular_score(palavras, v_norm)

 

        if score > 0:

            resultados.append((score, v))

 

    resultados.sort(reverse=True, key=lambda x: x[0])

 

    return [r[1] for r in resultados[:5]]

 

@app.route("/")

def home():

    return render_template("index.html")

 

@app.route("/perguntar", methods=["POST"])

def perguntar():

    pergunta = request.json.get("pergunta", "")

    versiculos = buscar_biblia(pergunta)

 

    if not versiculos:

        resposta = "Não encontrei resultados."

    else:

        resposta = "\n\n".join(versiculos)

 

    return jsonify({"resposta": resposta})

 

if __name__ == "__main__":

    app.run(debug=True)

 

🌐 Interface (HTML) + JavaScript


<!DOCTYPE html>

<html lang="pt-br">

<head>

    <meta charset="UTF-8">

    <title>IA Bíblica</title>    

    <link rel="stylesheet" href="static/style.css">

</head>

<body>


<div class="chat-container">


    <h1>📖 Buscador Bíblico</h1>


    <div id="chat"></div>


    <div class="input-area">

        <input id="pergunta" placeholder="Pergunte algo da Bíblia...">

        <button onclick="enviar()">Enviar</button>

    </div>


</div>


<script>

function adicionarMensagem(classe, texto) {

    let chat = document.getElementById("chat");


    let div = document.createElement("div");

    div.className = classe;

    div.textContent = texto;


    chat.appendChild(div);


    chat.scrollTop = chat.scrollHeight;

}


async function enviar() {

    let input = document.getElementById("pergunta");

    let texto = input.value.trim();


    if (!texto) return;


    adicionarMensagem("user", "👤 " + texto);


    input.value = "";


    adicionarMensagem("bot", "⏳ Buscando resposta...");


    let res = await fetch("/perguntar", {

        method: "POST",

        headers: {"Content-Type": "application/json"},

        body: JSON.stringify({pergunta: texto})

    });


    let data = await res.json();


    let chat = document.getElementById("chat");

    chat.lastChild.remove();


    adicionarMensagem("bot", "📖 " + data.resposta);

}

</script>


</body>

</html>



🎨 Estilo (CSS)


body {

    background: linear-gradient(135deg, #0f172a, #020617);

    color: white;

    font-family: Arial, sans-serif;


    display: flex;

    justify-content: center;

    align-items: center;


    height: 100vh;

    margin: 0;

}


/* container principal */

.chat-container {

    width: 90%;

    max-width: 700px;


    background: #1e293b;

    padding: 20px;


    border-radius: 16px;


    box-shadow: 0 20px 60px rgba(0,0,0,0.4);

}


/* chat */

#chat {

    height: 400px;

    overflow-y: auto;


    background: #0b1220;

    padding: 12px;


    margin-bottom: 12px;

    border-radius: 10px;


    scroll-behavior: smooth;

}


/* mensagens */

.user {

    color: #38bdf8;

    margin: 8px 0;

    text-align: right;


    background: rgba(56,189,248,0.1);

    padding: 8px;

    border-radius: 8px;

}


.bot {

    color: #22c55e;

    margin: 8px 0;


    background: rgba(34,197,94,0.08);

    padding: 8px;

    border-radius: 8px;

}


/* input */

input {

    width: 70%;

    padding: 12px;


    border: none;

    border-radius: 8px;


    outline: none;

}


/* botão */

button {

    padding: 12px 16px;


    background: #38bdf8;

    border: none;

    border-radius: 8px;


    cursor: pointer;

    font-weight: bold;


    transition: 0.2s;

}


button:hover {

    background: #0ea5e9;

    transform: scale(1.05);

}




✝️ Projeto com propósito

Esse projeto mostra como a programação pode ser usada para criar algo útil e significativo.

Com poucas linhas de código, você construiu uma ferramenta capaz de ajudar pessoas a encontrar mensagens bíblicas de forma rápida e prática.

 

📖 Conclusão

O Buscador de Versículos Bíblicos é um ótimo exemplo de aplicação prática com Python e Flask.

Ele une lógica, estrutura web e um propósito claro e ensinar e compartilhar conhecimento através da tecnologia. 



Este conteúdo faz parte do Academy Code Christ. 

Um projeto criado para ajudar jovens e iniciantes a aprender programação do zero, de forma simples e gratuita.

Nossa missão é compartilhar conhecimento e incentivar mais pessoas a descobrir que também podem aprender tecnologia, criar projetos e desenvolver novas habilidades.
Todo o conteúdo é disponibilizado gratuitamente, de forma clara, prática e 
sem enrolação. 

Você pode apoiar o projeto se quiser 
com um café. 


Post a Comment

Postagem Anterior Próxima Postagem