—
Software Requirements
Specification
for
PDF-Editor
Version 1.0 approved, Production
Prepared by Dipankar Das
09-10-2022 (LAST UPDATED)
https://pdf-web-editor.azurewebsites.net/
Table of Contents
Changelog 3
Introduction 4
Purpose 4
Project Scope 4
Intended Audience and reading suggestions 4
Illustrations 4
Detailed Network traffic * 5
Control Flow diagram of the “Merger” 5
Control Flow diagram of the “Rotator” 6
CI/CD Workflow diagram 6
Functional Requirements 6
1. Merge 2 PDFs 6
1.1 Open your browser 6
1.2 Go to the Merger page 6
1.3 Attaches PDFs 7
2. Rotate PDF 7
2.1 Open your browser 7
2.2 Go to Rotator page 7
2.3 Select a PDF 7
Non-Functional Requirements 7
1. Platform 7
2. Web-Support 7
3. Security 8
4. Availability 8
Data Flow Diagram (DFD) 8
Constraints 9
Life Cycle Model used 9
Agile SDLC 9
Current Used Technologies 9
Changelog
Name | Date | Remarks | Status | Version |
Init build | 01/4/22 | - Ability to Merge 2 PDFs
- can also download the Merged PDF for docker image: `dipugodocker/pdf-editor:0.1v`
| ✅ | 0.1v |
Simple web app with frontend and backend | 26/4/22 | - Test cases, simple frontend provided
- Added K8s, Terraform, ArgoCD, Helm, Kustomize, Docker-compose
| ✅ | 0.5v |
Microservice arch. achieved | 7/6/22 | - Divided frontend and backend into separate docker container
- Added monitoring tools
| ✅ | 0.6v |
New UI/UX for Frontend | 21/7/22 | - Express js with bootstrap for Frontend
- Unexposed the backend
| ✅ | 0.7v |
UX Overhaul | 27/8/22 | - Added options for rotating the PDF
- Minimum steps to merged pdf
- Removed the need to manually clear data
- Modern UX
| ✅ | 0.8v |
Observability Improvement | 9/10/22 | - Added Skaffold for improved development velocity
- Enhanced the source code
- Metrics addition to all the containers
| 🚀 | 1.0v |
Introduction
Purpose
PDF-Editor is meant to Edit PDFs* in a fast and easy way possible, bypassing any unnecessary steps that may delay the user’s experience.
* Currently only the Merge and Rotate feature is provided
Project Scope
To provide a web-based application having day-to-day pdf tools like merging, rotation, and more. It eliminates the need for installing applications on your computer, thus it works on any device be it mobile or laptop.
This project also helps in understanding microservice applications and how they communicate with each other in Docker and Kubernetes.
Github Repo link
Intended Audience and reading suggestions
It is useful for the analyst(s) and programmer(s) that will write and subsequently implement the requirements stated on this file, as well as to people that may happen to join the team midway development.
Illustrations
Detailed Network traffic *

* subjected to change
Control Flow diagram of the “Merger”

Control Flow diagram of the “Rotator”

CI/CD Workflow diagram

Functional Requirements
Merge 2 PDFs
1.1 Open your browser
- Description - open browser and visit the above mentioned URL
- Input - type or copy paste the url
- Output - pdf-web-editor homepage comes up
1.2 Go to the Merger page
- Description - To merge the PDFs and get the Merged PDF
- Input - Click on Merge from the Navbar
- Output - Merger homePage
1.3 Attaches PDFs
- Description - Attach the PDFs for merging into the selected option
- Input - 2 PDFs are selected from the file selector and click merge & download button
- Output - Merged PDF is available for download
Rotate PDF
2.1 Open your browser
- Description - open browser and visit the above mentioned URL
- Input - type or copy paste the url
- Output - pdf-web-editor homepage comes up
2.2 Go to Rotator page
- Description - To rotate the PDF
- Input - Click on Rotate from the Navbar
- Output - Rotator homePage
2.3 Select a PDF
- Description - Attach the PDF for rotating into the selected option
- Input - 1 PDF is selected from the file selector and pages are to be given for rotation, click Rotate & download button
- Output - Rotated PDF is available for download
Non-Functional Requirements
Platform
- Used Linux, Docker containers on top, for orchestrations used docker-compose and Kubernetes
- Azure Web apps with the free tier of S1 Compute
- Amazon t2.micro EC2 instance as staging server as well as Jenkins server
Web-Support
It is available in all modern web browsers (Chrome, Brave, Firefox)
Security
No PDF(s) of one user be made available to another user (s)
Availability
Cold starts can take time for the website to load, once up and running it should have < 1s response time
Data Flow Diagram (DFD)

Constraints
- Minimum of AWS t2.micro EC2 instance for running
- NoSQL DB is required to store the PDFs rather than OS
- Each PDF must be <= 10MB
- Only PDF must be allowed to the backend
Life Cycle Model used
- Continuous Integration with Continuous Staging(current beta) and manual Delivery to the production
- Agile Approach is used every code changes is tested and pushed to DockerHub
Agile SDLC

Code using Go and Javascript
Test using Jest and go standard library
Hosting Azure Web apps, AWS EC2 server
Continuous Testing, Integration, Staging and deployment using canary rollouts
Development Cycle = approx 1-month
Current Used Technologies
- Go for the backend
- Javascript for the frontend
- Docker for container management
- Kubernetes for container orchestration
- AWS EC2 for the latest application (main branch)
- Azure Web app for the deployment of production
- ArgoCD & Rollouts for Continuous Delivery
- Prometheus, Grafana for monitoring
- Terraform for the EC2 IAC
- Tracing using Jaeger