diff --git a/packages/api/.gitignore b/packages/api/.gitignore
index 4c9265bc..2c25047a 100644
--- a/packages/api/.gitignore
+++ b/packages/api/.gitignore
@@ -1,5 +1,5 @@
# dependencies
node_modules/
-./dist
-./target
\ No newline at end of file
+dist/
+target/
\ No newline at end of file
diff --git a/packages/api/index.html b/packages/api/index.html
new file mode 100644
index 00000000..6bb86fdc
--- /dev/null
+++ b/packages/api/index.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Transcribe
+
+
+
+
+
+
+
+
diff --git a/packages/api/index.ts b/packages/api/index.ts
index e2dbeeab..9b022aac 100644
--- a/packages/api/index.ts
+++ b/packages/api/index.ts
@@ -1,73 +1,60 @@
-// import {
-// APIGatewayProxyEvent,
-// APIGatewayEventRequestContext,
-// APIGatewayProxyCallback,
-// APIGatewayProxyStructuredResultV2,
-// } from 'aws-lambda';
import express from 'express';
-import asyncHandler from "express-async-handler";
-import serverlessExpress from "@codegenie/serverless-express";
+import asyncHandler from 'express-async-handler';
+import serverlessExpress from '@codegenie/serverless-express';
import bodyParser from 'body-parser';
-
-// export const handler = (
-// event: APIGatewayProxyEvent,
-// context: APIGatewayEventRequestContext,
-// callback: APIGatewayProxyCallback,
-// ): Promise => {
-// const message = 'Hello World!';
-// console.log(message);
-// console.log(event.body, context.accountId, callback.name);
-// const result = {
-// "isBase64Encoded": true,
-// "statusCode": 200,
-// "headers": { },
-// "body": message
-// }
-// return Promise.resolve(result);
-// };
+import path from 'path';
const getApp = async () => {
const app = express();
const apiRouter = express.Router();
- app.use(bodyParser.json({ limit: "40mb" }));
+ app.use(bodyParser.json({ limit: '40mb' }));
apiRouter.get(
- "/healthcheck",
+ '/healthcheck',
asyncHandler(async (req, res) => {
- res.send("It lives!")
- })
+ res.send('It lives!');
+ }),
);
- app.use("/api", apiRouter);
+ app.use('/api', apiRouter);
+
+ if (process.env['AWS_EXECUTION_ENV'] !== undefined) {
+ app.use(express.static('frontend'));
+ app.get('/*', (req, res) => {
+ res.sendFile(path.resolve(__dirname, 'frontend', 'index.html'));
+ });
+ }
return app;
-}
+};
let api;
-if (process.env["AWS_EXECUTION_ENV"] !== undefined){
- console.log("Running on lambda")
+if (process.env['AWS_EXECUTION_ENV'] !== undefined) {
+ console.log('Running on lambda');
// eslint-disable-next-line @typescript-eslint/no-explicit-any
- let serverlessExpressHandler: any
- const serverlessHandler = getApp().then((app) => (serverlessExpressHandler = serverlessExpress({ app }).handler));
+ let serverlessExpressHandler: any;
+ const serverlessHandler = getApp().then(
+ (app) => (serverlessExpressHandler = serverlessExpress({ app }).handler),
+ );
// eslint-disable-next-line @typescript-eslint/no-explicit-any
api = async (event: any, context: any) => {
if (!serverlessExpressHandler) {
await serverlessHandler;
}
- return serverlessExpressHandler(event, context)
- }
+ return serverlessExpressHandler(event, context);
+ };
} else {
- console.log("running locally");
+ console.log('running locally');
// Running locally. Start Express ourselves
- const port = 9103
+ const port = 9103;
getApp().then((app) => {
app.listen(port, () => {
- console.log(`Server now listening on port: ${port}`)
- })
- })
+ console.log(`Server now listening on port: ${port}`);
+ });
+ });
}
-export { api }
\ No newline at end of file
+export { api };
diff --git a/packages/api/package.json b/packages/api/package.json
index 1a0d4213..c68e6f87 100644
--- a/packages/api/package.json
+++ b/packages/api/package.json
@@ -5,6 +5,7 @@
"main": "index.js",
"scripts": {
"build": "esbuild --bundle --platform=node --target=node20 --outfile=dist/index.js index.ts",
+ "build-frontend": "mkdir -p dist/frontend; cp index.html dist/frontend/index.html",
"package": "cd dist; mkdir -p ../target; zip -qr ../target/api.zip ./*"
},
"keywords": [],
diff --git a/packages/cdk/lib/transcription-service.ts b/packages/cdk/lib/transcription-service.ts
index 58a5533b..ef792c67 100644
--- a/packages/cdk/lib/transcription-service.ts
+++ b/packages/cdk/lib/transcription-service.ts
@@ -13,7 +13,7 @@ export class TranscriptionService extends GuStack {
new GuApiLambda(this, "transcription-service-api", {
fileName: "api.zip",
- handler: "index.api",
+ handler: "api/index.api",
runtime: Runtime.NODEJS_20_X,
monitoringConfiguration: {
noMonitoring: true,