Raybilhelp commited on
Commit
ff2364a
·
verified ·
1 Parent(s): c77b760

Update server.js

Browse files
Files changed (1) hide show
  1. server.js +10 -14
server.js CHANGED
@@ -1,22 +1,25 @@
1
  require('dotenv').config();
2
  const express = require('express');
 
3
  const admin = require('firebase-admin');
4
  const Groq = require('groq-sdk');
5
  const { Octokit } = require('@octokit/rest');
6
 
7
- const app = report = express();
 
 
 
8
 
9
  // Hugging Face-এর জন্য রিকোয়েস্ট সাইজ অপ্টিমাইজেশন
10
  app.use(express.json({ limit: '10mb' }));
11
  app.use(express.urlencoded({ extended: true, limit: '10mb' }));
12
 
13
- // ১. ফায়ারবেস অ্যাডমিন এসডিকে ইনিশিয়ালিলাইজেশন (এনভায়রনমেন্ট ভেরিয়েবল থেকে)
14
  try {
15
  if (!process.env.FIREBASE_ADMIN_API) {
16
  throw new Error("FIREBASE_ADMIN_API এনভায়রনমেন্ট ভেরিয়েবলটি পাওয়া যায়নি!");
17
  }
18
 
19
- // সেটিংসের সিক্রেট থেকে সম্পূর্ণ JSON স্ট্রিংটি অবজেক্টে কনভার্ট করা হচ্ছে
20
  const serviceAccount = JSON.parse(process.env.FIREBASE_ADMIN_API);
21
 
22
  admin.initializeApp({
@@ -37,7 +40,7 @@ const octokit = new Octokit({ auth: process.env.GITHUB_API_TOKEN });
37
  const REPO_OWNER = 'chaingroupworld-rgb';
38
  const REPO_NAME = 'Website-visit-1';
39
 
40
- // ৩. চ্যাট এপিআই (Dynamic Model Selection লজিক)
41
  app.post('/api/chat', async (req, res) => {
42
  const { userId, message } = req.body;
43
 
@@ -46,14 +49,12 @@ app.post('/api/chat', async (req, res) => {
46
  }
47
 
48
  try {
49
- // ডায়নামিক মডেল ট্রিক: টেক্সট ৩০০ ক্যারেক্টারের বেশি হলে ১৭ বিলিয়ন (Llama 4 Scout), কম হলে ইনস্ট্যান্ট
50
  let selectedModel = "llama-3.1-8b-instant";
51
 
52
  if (message.length > 300) {
53
  selectedModel = "meta-llama/llama-4-scout-17b-16e-instruct";
54
  }
55
 
56
- // Groq এপিআই কল
57
  const chatCompletion = await groq.chat.completions.create({
58
  messages: [{ role: "user", content: message }],
59
  model: selectedModel,
@@ -61,7 +62,6 @@ app.post('/api/chat', async (req, res) => {
61
 
62
  const aiResponse = chatCompletion.choices[0]?.message?.content || "";
63
 
64
- // ফায়ারবেস রিয়েলটাইম ডাটাবেজে ইউজার ও এআই কথোপকথন সেভ
65
  const chatRef = db.ref(`chats/${userId}`).push();
66
  await chatRef.set({
67
  userMessage: message,
@@ -82,7 +82,7 @@ app.post('/api/chat', async (req, res) => {
82
  }
83
  });
84
 
85
- // ৪. গিটহাব ফাইল পুশ এপিআই (ফ্রন্টএন্ড ফাইল আপলোডের জন্য)
86
  app.post('/api/github/push', async (req, res) => {
87
  const { filePath, fileContent, commitMessage } = req.body;
88
 
@@ -92,7 +92,6 @@ app.post('/api/github/push', async (req, res) => {
92
 
93
  try {
94
  let sha;
95
- // ফাইল আগে থেকে আছে কিনা চেক করা (আপডেটের জন্য SHA কোড দরকার হয়)
96
  try {
97
  const { data } = await octokit.repos.getContent({
98
  owner: REPO_OWNER,
@@ -101,13 +100,11 @@ app.post('/api/github/push', async (req, res) => {
101
  });
102
  sha = data.sha;
103
  } catch (e) {
104
- sha = undefined; // ফাইল নতুন হলে SHA থাকবে না
105
  }
106
 
107
- // ফাইল ডেটাকে Base64 ফরম্যাটে রূপান্তর
108
  const base64Content = Buffer.from(fileContent).toString('base64');
109
 
110
- // গিটহাবে পুশ বা আপডেট করা
111
  const response = await octokit.repos.createOrUpdateFileContents({
112
  owner: REPO_OWNER,
113
  repo: REPO_NAME,
@@ -129,12 +126,11 @@ app.post('/api/github/push', async (req, res) => {
129
  }
130
  });
131
 
132
- // ৫. বেসিক রুট (Hugging Face Spaces হেলথ চেকের জন্য জরুরি)
133
  app.get('/', (req, res) => {
134
  res.status(200).send('Hugging Face Free Space Backend Engine is Active!');
135
  });
136
 
137
- // Hugging Face ফ্রি স্পেসের ডিফল্ট পোর্ট ৭৮৬০ রিড করা
138
  const PORT = process.env.PORT || 7860;
139
  app.listen(PORT, () => {
140
  console.log(`Server is running smoothly on port ${PORT}`);
 
1
  require('dotenv').config();
2
  const express = require('express');
3
+ const cors = require('cors'); // 👈 ১. এখানে cors ইমপোর্ট করা হয়েছে
4
  const admin = require('firebase-admin');
5
  const Groq = require('groq-sdk');
6
  const { Octokit } = require('@octokit/rest');
7
 
8
+ const app = express();
9
+
10
+ // 👈 ২. সব অরিজিন বা ফ্রন্টএন্ড থেকে রিকোয়েস্ট এক্সেপ্ট করার জন্য এটি যুক্ত করা হয়েছে
11
+ app.use(cors({ origin: '*' }));
12
 
13
  // Hugging Face-এর জন্য রিকোয়েস্ট সাইজ অপ্টিমাইজেশন
14
  app.use(express.json({ limit: '10mb' }));
15
  app.use(express.urlencoded({ extended: true, limit: '10mb' }));
16
 
17
+ // ১. ফায়ারবেস অ্যাডমিন এসডিকে ইনিশিয়ালিলাইজেশন
18
  try {
19
  if (!process.env.FIREBASE_ADMIN_API) {
20
  throw new Error("FIREBASE_ADMIN_API এনভায়রনমেন্ট ভেরিয়েবলটি পাওয়া যায়নি!");
21
  }
22
 
 
23
  const serviceAccount = JSON.parse(process.env.FIREBASE_ADMIN_API);
24
 
25
  admin.initializeApp({
 
40
  const REPO_OWNER = 'chaingroupworld-rgb';
41
  const REPO_NAME = 'Website-visit-1';
42
 
43
+ // ৩. চ্যাট এপিআই (Dynamic Model Selection)
44
  app.post('/api/chat', async (req, res) => {
45
  const { userId, message } = req.body;
46
 
 
49
  }
50
 
51
  try {
 
52
  let selectedModel = "llama-3.1-8b-instant";
53
 
54
  if (message.length > 300) {
55
  selectedModel = "meta-llama/llama-4-scout-17b-16e-instruct";
56
  }
57
 
 
58
  const chatCompletion = await groq.chat.completions.create({
59
  messages: [{ role: "user", content: message }],
60
  model: selectedModel,
 
62
 
63
  const aiResponse = chatCompletion.choices[0]?.message?.content || "";
64
 
 
65
  const chatRef = db.ref(`chats/${userId}`).push();
66
  await chatRef.set({
67
  userMessage: message,
 
82
  }
83
  });
84
 
85
+ // ৪. গিটহাব ফাইল পুশ এপিআই
86
  app.post('/api/github/push', async (req, res) => {
87
  const { filePath, fileContent, commitMessage } = req.body;
88
 
 
92
 
93
  try {
94
  let sha;
 
95
  try {
96
  const { data } = await octokit.repos.getContent({
97
  owner: REPO_OWNER,
 
100
  });
101
  sha = data.sha;
102
  } catch (e) {
103
+ sha = undefined;
104
  }
105
 
 
106
  const base64Content = Buffer.from(fileContent).toString('base64');
107
 
 
108
  const response = await octokit.repos.createOrUpdateFileContents({
109
  owner: REPO_OWNER,
110
  repo: REPO_NAME,
 
126
  }
127
  });
128
 
129
+ // ৫. বেসিক রুট
130
  app.get('/', (req, res) => {
131
  res.status(200).send('Hugging Face Free Space Backend Engine is Active!');
132
  });
133
 
 
134
  const PORT = process.env.PORT || 7860;
135
  app.listen(PORT, () => {
136
  console.log(`Server is running smoothly on port ${PORT}`);