Skip to content

Commit 1fb9336

Browse files
committed
init
1 parent 9a4a8ec commit 1fb9336

File tree

4,018 files changed

+966137
-254
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

4,018 files changed

+966137
-254
lines changed

api-gateway/.env

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
PORT=8001
2+
FRONTEND_URL=http://localhost:3000
3+
4+
QUESTION_SERVICE_URL=http://localhost:4001
5+
AUTH_SERVICE_URL=http://localhost:3001/api/v1
6+
MATCHING_SERVICE_URL=http://localhost:5001/api/v1
7+
8+
JWT_SECRET="01zWaHku91RQPaP0s68s7Xd1J1hGOn"

api-gateway/combined.log

Lines changed: 308 additions & 0 deletions
Large diffs are not rendered by default.

api-gateway/dist/app.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
"use strict";
2+
var __importDefault = (this && this.__importDefault) || function (mod) {
3+
return (mod && mod.__esModule) ? mod : { "default": mod };
4+
};
5+
Object.defineProperty(exports, "__esModule", { value: true });
6+
const express_1 = __importDefault(require("express"));
7+
const cors_1 = __importDefault(require("cors"));
8+
const routes_1 = __importDefault(require("./routes"));
9+
const errorHandler_1 = require("./middleware/errorHandler");
10+
const config_1 = __importDefault(require("./config"));
11+
const logger_1 = __importDefault(require("./utils/logger"));
12+
const app = (0, express_1.default)();
13+
// Middleware
14+
app.use((0, cors_1.default)(config_1.default.corsOptions));
15+
app.use(express_1.default.json());
16+
// Logging middleware
17+
app.use((req, res, next) => {
18+
logger_1.default.info(`Incoming request: ${req.method} ${req.originalUrl}`);
19+
next();
20+
});
21+
// Routes
22+
app.use('/api', routes_1.default);
23+
// Error handling
24+
app.use(errorHandler_1.errorHandler);
25+
// Start server
26+
const startServer = () => {
27+
app.listen(config_1.default.port, () => {
28+
logger_1.default.info(`API Gateway running on port ${config_1.default.port}`);
29+
});
30+
};
31+
if (require.main === module) {
32+
startServer();
33+
}
34+
exports.default = app;

api-gateway/dist/config/index.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
"use strict";
2+
var __importDefault = (this && this.__importDefault) || function (mod) {
3+
return (mod && mod.__esModule) ? mod : { "default": mod };
4+
};
5+
Object.defineProperty(exports, "__esModule", { value: true });
6+
const dotenv_1 = __importDefault(require("dotenv"));
7+
dotenv_1.default.config();
8+
exports.default = {
9+
port: process.env.PORT || 8001,
10+
corsOptions: {
11+
origin: process.env.FRONTEND_URL || 'http://localhost:3000',
12+
credentials: true,
13+
},
14+
services: {
15+
question: process.env.QUESTION_SERVICE_URL || 'http://localhost:4001',
16+
auth: process.env.AUTH_SERVICE_URL || 'http://localhost:3001',
17+
matching: process.env.MATCHING_SERVICE_URL || 'http://localhost:5001',
18+
},
19+
jwtSecret: process.env.JWT_SECRET || 'your-secret-key',
20+
};
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"use strict";
2+
var __importDefault = (this && this.__importDefault) || function (mod) {
3+
return (mod && mod.__esModule) ? mod : { "default": mod };
4+
};
5+
Object.defineProperty(exports, "__esModule", { value: true });
6+
exports.authMiddleware = void 0;
7+
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
8+
const config_1 = __importDefault(require("../config"));
9+
const authMiddleware = (req, res, next) => {
10+
var _a;
11+
const token = (_a = req.headers.authorization) === null || _a === void 0 ? void 0 : _a.split(' ')[1];
12+
if (!token) {
13+
return res.status(401).json({ message: 'No token provided' });
14+
}
15+
try {
16+
const decoded = jsonwebtoken_1.default.verify(token, config_1.default.jwtSecret);
17+
req.user = decoded;
18+
next();
19+
}
20+
catch (error) {
21+
return res.status(401).json({ message: 'Invalid token' });
22+
}
23+
};
24+
exports.authMiddleware = authMiddleware;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"use strict";
2+
var __importDefault = (this && this.__importDefault) || function (mod) {
3+
return (mod && mod.__esModule) ? mod : { "default": mod };
4+
};
5+
Object.defineProperty(exports, "__esModule", { value: true });
6+
exports.errorHandler = void 0;
7+
const logger_1 = __importDefault(require("../utils/logger"));
8+
const errorHandler = (err, req, res, next) => {
9+
logger_1.default.error(err.stack);
10+
res.status(500).json({
11+
message: 'Internal Server Error',
12+
error: process.env.NODE_ENV === 'production' ? {} : err,
13+
});
14+
};
15+
exports.errorHandler = errorHandler;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
"use strict";
2+
var __importDefault = (this && this.__importDefault) || function (mod) {
3+
return (mod && mod.__esModule) ? mod : { "default": mod };
4+
};
5+
Object.defineProperty(exports, "__esModule", { value: true });
6+
const express_1 = __importDefault(require("express"));
7+
const http_proxy_middleware_1 = require("http-proxy-middleware");
8+
const config_1 = __importDefault(require("../config"));
9+
const router = express_1.default.Router();
10+
const authServiceProxy = (0, http_proxy_middleware_1.createProxyMiddleware)({
11+
target: config_1.default.services.auth,
12+
changeOrigin: true,
13+
pathRewrite: {
14+
'^/api/auth': '',
15+
},
16+
});
17+
router.use('/', authServiceProxy);
18+
exports.default = router;

api-gateway/dist/routes/index.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"use strict";
2+
var __importDefault = (this && this.__importDefault) || function (mod) {
3+
return (mod && mod.__esModule) ? mod : { "default": mod };
4+
};
5+
Object.defineProperty(exports, "__esModule", { value: true });
6+
const express_1 = __importDefault(require("express"));
7+
const questionRoutes_1 = __importDefault(require("./questionRoutes"));
8+
const authRoutes_1 = __importDefault(require("./authRoutes"));
9+
const matchingRoutes_1 = __importDefault(require("./matchingRoutes"));
10+
const router = express_1.default.Router();
11+
router.use('/questions', questionRoutes_1.default);
12+
router.use('/auth', authRoutes_1.default);
13+
router.use('/matching', matchingRoutes_1.default);
14+
exports.default = router;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
"use strict";
2+
var __importDefault = (this && this.__importDefault) || function (mod) {
3+
return (mod && mod.__esModule) ? mod : { "default": mod };
4+
};
5+
Object.defineProperty(exports, "__esModule", { value: true });
6+
const express_1 = __importDefault(require("express"));
7+
const http_proxy_middleware_1 = require("http-proxy-middleware");
8+
const config_1 = __importDefault(require("../config"));
9+
const authMiddleware_1 = require("../middleware/authMiddleware");
10+
const router = express_1.default.Router();
11+
const matchingServiceProxy = (0, http_proxy_middleware_1.createProxyMiddleware)({
12+
target: config_1.default.services.matching,
13+
changeOrigin: true,
14+
pathRewrite: {
15+
'^/api/matching': '',
16+
},
17+
});
18+
router.use(authMiddleware_1.authMiddleware);
19+
router.use('/', matchingServiceProxy);
20+
exports.default = router;
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"use strict";
2+
var __importDefault = (this && this.__importDefault) || function (mod) {
3+
return (mod && mod.__esModule) ? mod : { "default": mod };
4+
};
5+
Object.defineProperty(exports, "__esModule", { value: true });
6+
const express_1 = __importDefault(require("express"));
7+
const http_proxy_middleware_1 = require("http-proxy-middleware");
8+
const config_1 = __importDefault(require("../config"));
9+
const logger_1 = __importDefault(require("../utils/logger"));
10+
const router = express_1.default.Router();
11+
const questionServiceProxy = (0, http_proxy_middleware_1.createProxyMiddleware)({
12+
target: config_1.default.services.question,
13+
changeOrigin: true,
14+
pathRewrite: {
15+
'^/api/questions': '/api/v1/questions',
16+
},
17+
});
18+
router.use((req, res, next) => {
19+
logger_1.default.info(`Question route accessed: ${req.method} ${req.originalUrl}`);
20+
next();
21+
});
22+
// Log the proxied request path
23+
router.use((req, res, next) => {
24+
logger_1.default.info(`Proxying request to: ${req.url}`);
25+
next();
26+
});
27+
// router.use(authMiddleware as express.RequestHandler);
28+
router.use('/api/questions', questionServiceProxy);
29+
exports.default = router;

0 commit comments

Comments
 (0)