Menambahkan ulang Koneksi Service sebagai folder biasa

This commit is contained in:
Fajar 2025-07-04 10:29:07 +07:00
parent df0dde0d46
commit b9fc19646f
6 changed files with 2724 additions and 0 deletions

3
Koneksi Service/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
node_modules/
.env
serviceAccountKey.json

View File

@ -0,0 +1,57 @@
require("dotenv").config(); // load .env
const express = require("express");
const admin = require("firebase-admin");
const cors = require("cors");
const app = express();
app.use(cors());
app.use(express.json());
// Parsing JSON dari env
const serviceAccount = JSON.parse(process.env.FIREBASE_CONFIG);
// Inisialisasi Firebase Admin
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
const db = admin.firestore();
// Format tanggal
function formatTanggalUTC(timeString) {
const date = new Date(timeString);
const tgl = String(date.getUTCDate()).padStart(2, "0");
const bln = String(date.getUTCMonth() + 1).padStart(2, "0");
const thn = date.getUTCFullYear();
const jam = String(date.getUTCHours()).padStart(2, "0");
const menit = String(date.getUTCMinutes()).padStart(2, "0");
return `${tgl}/${bln}/${thn} . ${jam}:${menit}`;
}
// Endpoint kirim data
app.post("/api/kirim-data", async (req, res) => {
try {
const { uid, activity, time } = req.body;
if (!uid || !activity || !time) {
return res.status(400).json({ success: false, message: "Data tidak lengkap" });
}
const formattedTime = formatTanggalUTC(time);
await db.collection("history_parkir").add({
uid,
activity,
time: formattedTime
});
return res.status(200).json({ success: true, message: "Data berhasil dikirim ke Firestore" });
} catch (error) {
console.error(error);
res.status(500).json({ success: false, message: error.message });
}
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`🚀 Server is running on port ${PORT}`);
});

2575
Koneksi Service/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,18 @@
{
"name": "esp32-firebase-service",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"cors": "^2.8.5",
"dotenv": "^16.5.0",
"express": "^5.1.0",
"firebase-admin": "^13.2.0"
}
}

56
Koneksi Service/server.js Normal file
View File

@ -0,0 +1,56 @@
const express = require("express");
const admin = require("firebase-admin");
const cors = require("cors");
const app = express();
app.use(cors());
app.use(express.json());
const serviceAccount = require("./serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
const db = admin.firestore();
// Fungsi bantu buat format tanggal ke 'dd/MM/yyyy . HH:mm'
function formatTanggalUTC(timeString) {
const date = new Date(timeString);
const tgl = String(date.getUTCDate()).padStart(2, "0");
const bln = String(date.getUTCMonth() + 1).padStart(2, "0");
const thn = date.getUTCFullYear();
const jam = String(date.getUTCHours()).padStart(2, "0");
const menit = String(date.getUTCMinutes()).padStart(2, "0");
return `${tgl}/${bln}/${thn} . ${jam}:${menit}`;
}
app.post("/api/kirim-data", async (req, res) => {
try {
console.log("Data diterima:", req.body);
const { uid, activity, time } = req.body;
if (!uid || !activity || !time) {
return res.status(400).json({ success: false, message: "Data tidak lengkap" });
}
const formattedTime = formatTanggalUTC(time);
await db.collection("history_parkir").add({
uid,
activity,
time: formattedTime
});
return res.status(200).json({ success: true, message: "Data berhasil dikirim ke Firestore" });
} catch (error) {
console.error(error);
res.status(500).json({ success: false, message: error.message });
}
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`🚀 Server is running on port ${PORT}`);
});

View File

@ -0,0 +1,15 @@
{
"version": 2,
"builds": [
{
"src": "api/kirimdata.js",
"use": "@vercel/node"
}
],
"routes": [
{
"src": "/api/(.*)",
"dest": "api/kirimdata.js"
}
]
}