| const express = require('express'); |
| const fs = require('fs'); |
| const path = require('path'); |
| const cors = require('cors'); |
|
|
| const app = express(); |
| app.use(cors()); |
| app.use(express.json()); |
|
|
| const dataDir = path.join(__dirname, 'data'); |
| if (!fs.existsSync(dataDir)) fs.mkdirSync(dataDir, { recursive: true }); |
|
|
| const contactsFile = path.join(dataDir, 'contacts.json'); |
| if (!fs.existsSync(contactsFile)) fs.writeFileSync(contactsFile, '[]'); |
|
|
| app.get('/data/contacts', (req, res) => { |
| try { |
| const raw = fs.readFileSync(contactsFile, 'utf8'); |
| const json = JSON.parse(raw || '[]'); |
| res.json(json); |
| } catch (err) { |
| console.error(err); |
| res.status(500).json({ error: 'failed to read contacts' }); |
| } |
| }); |
|
|
| app.post('/data/contacts', (req, res) => { |
| try { |
| const body = req.body || {}; |
| const entry = { |
| name: body.name || '', |
| email: body.email || '', |
| subject: body.subject || '', |
| message: body.message || '', |
| createdAt: new Date().toISOString(), |
| }; |
| const raw = fs.readFileSync(contactsFile, 'utf8'); |
| const arr = JSON.parse(raw || '[]'); |
| arr.unshift(entry); |
| fs.writeFileSync(contactsFile, JSON.stringify(arr, null, 2)); |
| res.status(201).json(entry); |
| } catch (err) { |
| console.error(err); |
| res.status(500).json({ error: 'failed to save contact' }); |
| } |
| }); |
|
|
| const port = process.env.PORT || 5173; |
| app.listen(port, () => console.log(`Data server listening on http://localhost:${port}`)); |
|
|