|
|
import express from "express"; |
|
|
import axios from "axios"; |
|
|
import cors from "cors"; |
|
|
import bodyParser from "body-parser"; |
|
|
|
|
|
const app = express(); |
|
|
app.use(cors()); |
|
|
app.use(bodyParser.json()); |
|
|
|
|
|
const GEMINI_API_KEY = process.env.GEMINI_API_KEY; |
|
|
const FIRECRAWL_API_KEY = process.env.FIRECRAWL_API_KEY; |
|
|
|
|
|
app.post("/lovable", async (req, res) => { |
|
|
try { |
|
|
const { prompt } = req.body; |
|
|
|
|
|
|
|
|
const crawl = await axios.post( |
|
|
"https://api.firecrawl.dev/v1/scrape", |
|
|
{ prompt }, |
|
|
{ headers: { Authorization: `Bearer ${FIRECRAWL_API_KEY}` } } |
|
|
); |
|
|
|
|
|
|
|
|
const gemini = await axios.post( |
|
|
"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=" + GEMINI_API_KEY, |
|
|
{ |
|
|
contents: [{ |
|
|
parts: [{ text: prompt + "\n\nWeb Data:\n" + JSON.stringify(crawl.data) }] |
|
|
}] |
|
|
} |
|
|
); |
|
|
|
|
|
res.json({ reply: gemini.data.candidates[0].outputText }); |
|
|
} catch (e) { |
|
|
res.json({ error: e.message }); |
|
|
} |
|
|
}); |
|
|
|
|
|
app.get("/", (req, res) => { |
|
|
res.send("π Open-Lovable HF Space is Running"); |
|
|
}); |
|
|
|
|
|
app.listen(7860, () => console.log("Server running on 7860")); |