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 automation is key to increasing productivity and efficiency. In this article, I'll share how I use Python to automate my freelance workflow, from project management to invoicing and payment tracking.

Step 1: Project Management Automation

I use the github library in Python to automate my project management workflow. I create a new repository for each project and use the github API to create issues, assign tasks, and track progress. Here's an example of how I use the github library to create a new issue:

import github

# Create a new issue
def create_issue(repo, title, body):
    issue = repo.create_issue(title, body)
    return issue

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

# Get the repository
repo = g.get_repo("your-repo-name")

# Create a new issue
issue = create_issue(repo, "New Project", "This is a new project")
print(issue.number)
Enter fullscreen mode Exit fullscreen mode

Step 2: Time Tracking Automation

I use the datetime and time libraries in Python to track the time spent on each project. I create a simple script that starts a timer when I start working on a project and stops the timer when I'm done. Here's an example of how I use the datetime and time libraries to track time:

import datetime
import time

# Start the timer
def start_timer():
    start_time = datetime.datetime.now()
    return start_time

# Stop the timer
def stop_timer(start_time):
    end_time = datetime.datetime.now()
    elapsed_time = end_time - start_time
    return elapsed_time

# Start the timer
start_time = start_timer()
print("Timer started")

# Simulate some work
time.sleep(5)

# Stop the timer
elapsed_time = stop_timer(start_time)
print(f"Elapsed time: {elapsed_time}")
Enter fullscreen mode Exit fullscreen mode

Step 3: Invoicing Automation

I use the pdfkit library in Python to generate invoices for my clients. I create a template for the invoice and use the pdfkit library to fill in the details and generate a PDF. Here's an example of how I use the pdfkit library to generate an invoice:

import pdfkit

# Create a template for the invoice
template = """
<html>
  <body>
    <h1>Invoice</h1>
    <p>Client: {{ client }}</p>
    <p>Project: {{ project }}</p>
    <p>Amount: {{ amount }}</p>
  </body>
</html>
"""

# Fill in the details and generate a PDF
def generate_invoice(client, project, amount):
    options = {
        'page-size': 'Letter',
        'margin-top': '0.75in',
        'margin-right': '0.75in',
        'margin-bottom': '0.75in',
        'margin-left': '0.75in',
        'encoding': "UTF-8",
        'quiet': '',
    }
    html = template.replace("{{ client }}", client).replace("{{ project }}", project).replace("{{ amount }}", amount)
    pdfkit.from_string(html, "invoice.pdf", options)

# Generate an invoice
generate_invoice("John Doe", "New Project", "$1000")
Enter fullscreen mode Exit fullscreen mode

Step 4: Payment Tracking Automation

I use the stripe library in Python to track payments from my clients. I create a simple script that checks for new payments and updates the payment status in my database. Here's an example of how I use the stripe library to track payments:


python
import stripe

# Initialize the stripe library
stripe.api_key = "your-stripe-api-key
Enter fullscreen mode Exit fullscreen mode

Top comments (0)