Task: Build a Resume Builder and Storage Service (TypeScript)
ou are tasked with creating a backend service that allows users to create a dynamic resume by
Y
submitting their details. The system will generate aPDF resumebased on the user’s input and store
the resume in a cloud storage system (e.g., AWS S3 or Google Cloud Storage). The service will also
allow the user to retrieve the link to download their generated resume.
Core Features
. Resume Data Input
1
The user will submit their personal information, education, and work experience, which will be used to
generate the resume. The following fields should be included in the resume:
P
● ersonal Information: name, email, phone, address
● Education: List of degrees, institutions, and yearsattended.
● Work Experience: Job titles, companies, and yearsworked.
. PDF Resume Generation
2
The system must generate aPDF resumebased on theprovided data. Example structure:
● Personal Information:
● Name: John Doe
● Email:
[email protected]
● Phone: 1234567890
● Address: 123 Main St, City, Country
● Education:
● Degree: BSc Computer Science
● Institution: XYZ University
● Year: 2020–2024
● Work Experience:
● Job Title: Software Developer
● Company: ABC Corp
● Years: 2022–Present
● Use a PDF generation library; e.g.,Puppeter, pdfkit or jsPDF
3. API to Generate Resume
● Implement an API endpoint that accepts the resume data and generates a PDF.
● Endpoint: POST /generate-resume
● Request Body: json
● Example:
● {
● "name": "John Doe",
● "email": "[email protected]",
● "phone": "1234567890",
● "address": "123 Main St, City, Country",
● "education": [
● {
● "degree": "BSc Computer Science",
● "institution": "XYZ University",
● "year": "2018–2022"
● }
● ],
● "workExperience": [
● {
● "jobTitle": "Software Developer",
● "company": "ABC Corp",
● "years": "2022–Present"
● }
● ]
● }
● R
esponse: The system should return a URL to download the PDF once it is generated and
stored.
● {
"message": "Resume generated successfully.",
●
● "downloadUrl": "https://your-cloud-storage.com/path/to/generated-resume.pdf"
● }
●
4. Store User Data in Database
● A fter generating the PDF,store the user’s data(personal information, education,
work experience) in a database (e.g., MongoDB).
● Create a collection called users or resumes with the following fields:
● userId (unique identifier)
● name, email, phone, address
● education (array of degrees, institutions, and years)
● workExperience (array of job titles, companies, and years)
● resumeUrl (URL to the stored PDF in cloud storage)
● 5. Cloud Storage Integration
● After generating the PDF,upload the resume PDF tocloud storage(AWS S3 or
Google Cloud Storage).
● Store the file with a unique name (e.g., userId_resume.pdf).
● Provide a public URL for the user to download the resume.
6. Retrieve Resume Link
●
● Provide an endpoint for the user to retrieve the generated resume link.
● Endpoint: GET /resume/{userId}
● Response: json
● {
● "downloadUrl":
"https://your-cloud-storage.com/path/to/generated-resume.pdf"
● }
Technical Requirements
1. PDF Generation Library
● Use Puppeter, pdfkit or jsPDF to generate the PDF resume dynamically.
2. Cloud Storage Integration
● Use AWS S3 or Google Cloud Storage to store the generated PDF resume.
● Ensure the file is uploaded with a unique name based on the user ID (e.g.,
userId_resume.pdf).
3. API Design
● Provide clear and simple API endpoints to generate the resume PDF and
retrieve its URL.
4. Error Handling
● Handle errors gracefully, such as:
i. Validate fields in the request body.
ii. Cloud storage upload failure.
5. Tech stack
● NodeJs, Express, MongoDb, TypeScript
Bonus Features
1. Download PDF with Customization
● Allow users to customize the layout (e.g., choose a theme or add a photo).
2. Email Notification
● Send an email to the user with the resume download link once it’s generated.
●
Deadline: Before December 10th.
Submission:
1. Codebase
● A GitHub repository with a single codebase
● A README.md file with instructions for setting up the project.
2. API Documentation
● Provide documentation for the POST /generate-resume and GET
/resume/{userId} endpoints using Swagger/OpenAPI, Postman or githubdocs.
● T
his simplified resume builder task focuses on generating a PDF resume and storing it
in cloud storage, which covers key backend skills like PDF generation, API
development, and cloud storage integration, all within a manageable scope.
● F
or every point, you will earn a score. Try to cover all the points to achieve an
awesome score.