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.