Infrastructure

All infrastructure runs in the PhD Advantage client AWS account (735234196709) in us-east-1.

AWS Resources

S3

Resource Value
Bucket name dissertation-editor-uploads-dev
Purpose Stores uploaded dissertation documents (.docx)
CORS Allowed origins for presigned URL uploads
Lifecycle - Glacier transition 90 days
Lifecycle - Expiration 365 days

S3 (Examples)

Resource Value
Bucket name dissertation-editor-examples-dev
Purpose Secure storage for example dissertation files used in automated testing
Encryption AWS KMS (server-side, bucket key enabled)
Public access All blocked (BlockPublicAcls, BlockPublicPolicy, IgnorePublicAcls, RestrictPublicBuckets)
CORS Allowed origins for presigned URL uploads (Amplify + localhost)

DynamoDB

Table Partition Key Purpose
submissions-dev submissionId (String) Stores intake submissions, document analysis, and generated quotes
config-dev configKey (String) Stores rate schedule and system configuration
examples-dev fileId (String) Metadata for example dissertation files (name, size, upload date, uploader)

API Gateway

Resource Value
API ID jwfqmc0638
Base URL https://jwfqmc0638.execute-api.us-east-1.amazonaws.com
Stage dev
Type REST API

Lambda Functions

All functions are deployed via Serverless Framework with the service name dissertation-editor-backend. Function names follow the pattern dissertation-editor-backend-dev-<functionName>.

Function Runtime Timeout Memory
getPresignedUrl Node.js 20.x 10s 256 MB
submitIntake Node.js 20.x 10s 256 MB
processSubmission Node.js 20.x 60s 512 MB
documentAnalyzer Node.js 20.x 30s 512 MB
quoteCalculator Node.js 20.x 10s 256 MB
pipedriveClient Node.js 20.x 15s 256 MB
getSubmission Node.js 20.x 10s 256 MB
tokenGenerator Node.js 20.x 10s 256 MB
webhookHandler Node.js 20.x 10s 256 MB
examplesPresignedUrl Node.js 20.x 10s 256 MB
examplesSaveMetadata Node.js 20.x 10s 256 MB
examplesListFiles Node.js 20.x 10s 256 MB
examplesDeleteFile Node.js 20.x 10s 256 MB

EC2 (LiveKit Server)

Resource Value
Instance ID i-0a25a2bdec066d084
Elastic IP 3.93.221.174
Instance type t3.medium
Purpose Self-hosted LiveKit video conferencing server
Security Group sg-02dae563ae475c9a9
Pending DNS meet.dissertation-editor.com

Security Group Rules (sg-02dae563ae475c9a9)

Direction Port Protocol Source Purpose
Inbound 22 TCP Your IP SSH access
Inbound 443 TCP 0.0.0.0/0 HTTPS / WSS
Inbound 7880 TCP 0.0.0.0/0 LiveKit API
Inbound 7881 TCP 0.0.0.0/0 LiveKit RTC
Inbound 50000-60000 UDP 0.0.0.0/0 LiveKit WebRTC media
Outbound All All 0.0.0.0/0 All outbound

SSM Parameters

All secrets and configuration are stored in AWS Systems Manager Parameter Store.

Parameter Path Type Purpose
/dissertation-editor/pipedrive/api-token SecureString Pipedrive API authentication token
/dissertation-editor/livekit/api-key SecureString LiveKit server API key
/dissertation-editor/livekit/api-secret SecureString LiveKit server API secret
/dissertation-editor/livekit/url String LiveKit server WebSocket URL

AWS Amplify

Resource Value
App ID d1vpp3bmermmyp
Framework Next.js (SSR)
Staging branch staging (auto-deploy)
Production branch main (auto-deploy)

Infrastructure as Code

The backend infrastructure is defined in platform/backend/serverless.yml. This includes:

  • Lambda function definitions and IAM roles
  • API Gateway endpoints and CORS configuration
  • DynamoDB table definitions
  • S3 bucket configuration
  • SSM parameter references (read-only; secrets are created manually)

The EC2 instance for LiveKit was provisioned manually and is not managed by Serverless Framework.