Skip to content

Saurabh6266/CS50P-Final-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

1 Commit
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

RESUME GENERATOR

Description:

Resume Generator is a command-line based Python application designed to help users easily generate professional-looking PDF resumes by answering a series of prompts. This was developed as the final project for the CS50P (CS50โ€™s Introduction to Programming with Python) course. The project utilizes several libraries to handle input validation, formatting, PDF generation, and more, offering a smooth interactive experience.

The project starts by collecting basic personal information such as the userโ€™s name, phone number, and email address. The program uses the phonenumbers and validators libraries to ensure that the data entered is accurate and properly formatted. Optional fields like LinkedIn and GitHub profile URLs are also supported.

Once the personal data is collected, the user can select the sections they wish to include in their resume from a predefined list. These sections include:

  • Career Objective
  • Education
  • Skills
  • Experience
  • Projects
  • Certifications
  • Achievements

Each section is filled interactively. For instance, if the user chooses to add education details, theyโ€™ll be prompted to enter the degree, institution, and graduation year for each entry. Similarly, for skills, a CSV file (skills.csv) provides predefined categories such as Programming Languages, Libraries, Frameworks, Tools, and Soft Skills to make the input process easier and more consistent. Another CSV file (sections_name.csv) lists all available sections and their serial numbers for user selection.

After all data is collected, the resume is rendered using the fpdf library. The layout is clean and structured, with headers, spacing, and indentation carefully handled. Every section is displayed based on the order the user selects them.

Finally, the user is asked to name their PDF file, and the resume is saved with that filename. Upon successful creation, a message rendered using pyfiglet confirms the completion.


๐Ÿ—‚๏ธ Project Structure

  • project.py: The main Python script. It contains all logic to interact with the user, validate input, collect data, and generate the final PDF resume.
  • sections_name.csv: A CSV file containing the list of available resume sections along with serial numbers for user selection.
  • skills.csv: A CSV file with skill categories and options that help guide the user when entering skills.

๐Ÿ” Design Decisions

One key decision was to keep the interface entirely in the command-line to maintain simplicity and cross-platform compatibility. The use of CSV files for sections and skills was intentional โ€” it decouples content from code, making it easier to expand the tool in the future (e.g., adding more skill categories or sections without changing the script).

The resume is generated in PDF using fpdf because it offers sufficient layout control while keeping dependencies minimal. Instead of relying on templates, the code dynamically lays out each section based on user input. The formatting prioritizes clarity and readability over visual complexity.

Error handling was emphasized to ensure a smooth experience. For example, incorrect phone numbers or emails are flagged, and prompts continue until valid data is entered. This ensures that the final resume does not include erroneous information.


๐Ÿ› ๏ธ Future Improvements

Some ideas for future enhancement include:

  • Adding support for saving and re-editing drafts.
  • Creating a graphical interface using tkinter.
  • Providing customizable templates and themes.
  • Exporting to .docx in addition to .pdf.

๐Ÿ“Œ How to Run

  1. Install the required dependencies:
    pip install -r requirements.txt

About

CS50's Introduction to Programming with Python | Final Project | Resume Generator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages