Repository navigation
Expand file tree
/
Copy pathserver.js
More file actions
75 lines (59 loc) · 1.9 KB
/
Copy pathserver.js
File metadata and controls
75 lines (59 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// backend/server.js
require('dotenv').config();
const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');
const helmet = require('helmet');
const { groq } = require('./utils/groqClient');
// *** Note the "./routes/…" paths here ***
const weatherRoutes = require('./routes/weather.js');
const recordRoutes = require('./routes/records.js');
const app = express();
app.use(helmet());
app.use(cors());
app.use(express.json());
app.use('/weather', weatherRoutes);
app.use('/records', recordRoutes);
app.post('/assistant', async (req, res, next) => {
try {
const { locationName, temp, description, lat, lon } = req.body;
// Build the messages array
const messages = [
{
role: "system",
content: "You are a concise AI assistant that gives outfit and safety advice based on current weather."
},
{
role: "user",
content: `
Location: ${locationName} (lat ${lat.toFixed(2)}, lon ${lon.toFixed(2)})
Weather: ${description}, ${Math.round(temp)}°C
Please respond with:
1) What to wear.
2) Any safety or comfort tips (UV, wind, rain, etc).
`.trim()
}
];
// Use groq-sdk to create a chat completion
const completion = await groq.chat.completions.create({
model: "llama-3.3-70b-versatile", // or your granted Groq model
messages,
max_tokens: 150
});
// Extract the assistant’s reply
const advice = completion.choices?.[0]?.message?.content.trim()
|| "Sorry, no advice returned.";
res.json({ advice });
} catch (err) {
next(err);
}
});
const PORT = process.env.PORT || 4000;
// backend/server.js
mongoose
.connect(process.env.MONGODB_URI)
.then(() => {
console.log('🗄️ MongoDB connected');
app.listen(PORT, () => console.log(`🚀 Server on port ${PORT}`));
})
.catch(err => console.error('❌ DB connection error:', err));