DEV Community

Caper B
Caper B

Posted on

How I Automate My Freelance Workflow with Python

How I Automate My Freelance Workflow with Python

As a freelance developer, I've learned that streamlining my workflow is crucial to increasing productivity and delivering high-quality work to clients. In this article, I'll share how I use Python to automate my freelance workflow, from project management to invoicing, and how it has helped me boost my earnings.

Project Management Automation

I use the github library in Python to automate my project management workflow. Specifically, I use it to create new repositories, add collaborators, and assign tasks. Here's an example of how I create a new repository using Python:

import github

# Initialize the GitHub API
g = github.Github("your-github-token")

# Create a new repository
repo = g.get_user().create_repo(
    name="new-project",
    description="A new project",
    private=True
)

print(f"Repository created: {repo.name}")
Enter fullscreen mode Exit fullscreen mode

This code creates a new private repository with the name "new-project" and a description "A new project". I can then use the repo object to add collaborators and assign tasks.

Time Tracking Automation

I use the pyautogui library to automate my time tracking workflow. Specifically, I use it to track the time spent on each project and generate reports. Here's an example of how I track time spent on a project using Python:

import pyautogui
import time

# Define the project name and the time interval
project_name = "new-project"
interval = 60  # minutes

while True:
    # Take a screenshot of the current window
    screenshot = pyautogui.screenshot()

    # Save the screenshot to a file
    screenshot.save(f"{project_name}-{time.time()}.png")

    # Wait for the interval
    time.sleep(interval * 60)
Enter fullscreen mode Exit fullscreen mode

This code takes a screenshot of the current window every 60 minutes and saves it to a file. I can then use these screenshots to generate reports and track the time spent on each project.

Invoicing Automation

I use the python-docx library to automate my invoicing workflow. Specifically, I use it to generate invoices based on the time spent on each project. Here's an example of how I generate an invoice using Python:

import docx
from docx.shared import Inches

# Define the invoice details
invoice_number = "INV001"
date = "2023-03-01"
client_name = "John Doe"
project_name = "new-project"
hours_worked = 10
hourly_rate = 100

# Create a new document
document = docx.Document()

# Add a header
header = document.add_heading("Invoice", 0)
header.alignment = docx.enum.text.WD_ALIGN_PARAGRAPH.CENTER

# Add the invoice details
document.add_paragraph(f"Invoice Number: {invoice_number}")
document.add_paragraph(f"Date: {date}")
document.add_paragraph(f"Client Name: {client_name}")
document.add_paragraph(f"Project Name: {project_name}")
document.add_paragraph(f"Hours Worked: {hours_worked}")
document.add_paragraph(f"Hourly Rate: ${hourly_rate}")

# Add a table
table = document.add_table(rows=1, cols=3, style="Table Grid")
table.cell(0, 0).text = "Description"
table.cell(0, 1).text = "Hours"
table.cell(0, 2).text = "Amount"

# Add the invoice items
table.add_row()
table.cell(1, 0).text = "Development"
table.cell(1, 1).text = str(hours_worked)
table.cell(1, 2).text = f"${hours_worked * hourly_rate}"

# Save the document
document.save("invoice.docx")
Enter fullscreen mode Exit fullscreen mode

This code generates an invoice based on

Top comments (0)