// enhanced-server.js
import express from "express";
import cors from "cors";
import { FlatfileClient } from "@flatfile/api";
import dotenv from "dotenv";
dotenv.config();
const app = express();
const flatfile = new FlatfileClient({
token: process.env.FLATFILE_API_KEY,
});
app.use(
cors({
origin: process.env.BASE_URL || "http://localhost:3000",
})
);
app.use(express.json());
// Get space by ID
app.get("/api/spaces/:spaceId", async (req, res) => {
try {
const { spaceId } = req.params;
const space = await flatfile.spaces.get(spaceId);
res.json({
success: true,
data: {
id: space.data.id,
name: space.data.name,
accessToken: space.data.accessToken,
},
});
} catch (error) {
res.status(500).json({
success: false,
error: "Failed to retrieve space",
});
}
});
// List available spaces
app.get("/api/spaces", async (req, res) => {
try {
const spaces = await flatfile.spaces.list();
res.json({
success: true,
data: spaces.data.map((space) => ({
id: space.id,
name: space.name,
createdAt: space.createdAt,
})),
});
} catch (error) {
res.status(500).json({
success: false,
error: "Failed to list spaces",
});
}
});
// Create new space (optional)
app.post("/api/spaces", async (req, res) => {
try {
const { name, environmentId } = req.body;
const space = await flatfile.spaces.create({
name,
environmentId,
// Additional space configuration
});
res.json({
success: true,
data: {
id: space.data.id,
name: space.data.name,
accessToken: space.data.accessToken,
},
});
} catch (error) {
res.status(500).json({
success: false,
error: "Failed to create space",
});
}
});
const PORT = process.env.PORT || 3001;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});