Skip to content

Commit 2db9081

Browse files
Merge pull request #61 from Agbasimere/main
feat: implement Encrypted IPFS Lease Storage Service #11
2 parents e901971 + de3f010 commit 2db9081

File tree

9 files changed

+1800
-5
lines changed

9 files changed

+1800
-5
lines changed

.env.example

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
# Server Config
2+
PORT=3000
3+
4+
# IPFS Config (Example using Infura)
5+
IPFS_HOST=ipfs.infura.io
6+
IPFS_PORT=5001
7+
IPFS_PROTOCOL=https
8+
IPFS_PROJECT_ID=your_infura_project_id
9+
IPFS_PROJECT_SECRET=your_infura_project_secret
10+
11+
# Stellar Config
12+
CONTRACT_ID=CAEGD57WVTVQSYWYB23AISBW334QO7WNA5XQ56S45GH6BP3D2AVHKUG4
113
PORT=3000
214

315
# Auth configuration

index.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
require('dotenv').config();
2+
const express = require('express');
3+
const cors = require('cors');
4+
const leaseRoutes = require('./src/routes/leaseRoutes');
5+
6+
const app = express();
7+
const port = process.env.PORT || 3000;
28

39
const cors = require('cors');
410
const express = require('express');
@@ -55,7 +61,25 @@ const storage = multer.diskStorage({
5561
});
5662
const upload = multer({ storage });
5763

64+
// Middleware
5865
app.use(cors());
66+
app.use(express.json({ limit: '50mb' }));
67+
app.use(express.urlencoded({ extended: true, limit: '50mb' }));
68+
69+
// Routes
70+
app.use('/api/leases', leaseRoutes);
71+
72+
app.get('/', (req, res) => {
73+
res.json({
74+
project: 'LeaseFlow Protocol Backend',
75+
description: 'Secure Lease Indexer and Storage Facilitator',
76+
status: 'Operational',
77+
version: '1.0.0',
78+
contract_id: process.env.CONTRACT_ID || 'CAEGD57WVTVQSYWYB23AISBW334QO7WNA5XQ56S45GH6BP3D2AVHKUG4',
79+
endpoints: {
80+
upload_lease: 'POST /api/leases/upload',
81+
view_lease_handshake: 'GET /api/leases/:leaseCID/handshake'
82+
}
5983
app.use(express.json());
6084
app.use('/uploads', express.static(path.join(__dirname, 'uploads')));
6185
const {
@@ -414,6 +438,12 @@ app.get('/api/asset/:id/availability', async (req, res) => {
414438
}
415439
});
416440

441+
// Error handling
442+
app.use((err, req, res, next) => {
443+
console.error('[App] Unhandled Error:', err);
444+
res.status(500).json({ error: 'Internal server error.', details: err.message });
445+
});
446+
417447
app.get('/api/assets/availability', async (req, res) => {
418448
try {
419449
const { ids } = req.query;
@@ -927,6 +957,9 @@ if (require.main === module) {
927957
}
928958

929959
app.listen(port, () => {
960+
console.log(`LeaseFlow Backend running at http://localhost:${port}`);
961+
console.log(`Lease Encryption Service: Active`);
962+
console.log(`IPFS Storage Service: Initialized (Host: ${process.env.IPFS_HOST || 'ipfs.infura.io'})`);
930963
console.log(`LeaseFlow Backend listening at http://localhost:${port}`);
931964
if (scheduler) {
932965
console.log(`Lease renewal scheduler running every ${config.jobs.intervalMs}ms`);

0 commit comments

Comments
 (0)