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.

Project Management Automation

I use the github library in Python to automate my project management workflow. I've created a script that automatically creates a new GitHub repository for each new project, sets up the necessary folders and files, and invites clients to collaborate.

import github

# GitHub API credentials
github_username = 'your_username'
github_password = 'your_password'

# Create a new GitHub repository
def create_repository(project_name):
    g = github.Github(github_username, github_password)
    repo = g.get_user().create_repo(project_name)
    return repo

# Create a new project repository
project_name = 'my_new_project'
repo = create_repository(project_name)
print(f'Repository created: {repo.name}')
Enter fullscreen mode Exit fullscreen mode

This script saves me time and ensures that all my projects are set up consistently.

Time Tracking Automation

I use the toggl library in Python to automate my time tracking workflow. I've created a script that automatically starts and stops the Toggl timer based on my GitHub commit history.

import toggl

# Toggl API credentials
toggl_api_token = 'your_api_token'
toggl_workspace_id = 'your_workspace_id'

# Start the Toggl timer
def start_timer(project_name):
    t = toggl.Toggl(toggl_api_token)
    project = t.get_projects(workspace_id=toggl_workspace_id, name=project_name)[0]
    task = t.create_task(project_id=project['id'], description='Development')
    t.start_timer(task_id=task['id'])
    return task

# Stop the Toggl timer
def stop_timer(task_id):
    t = toggl.Toggl(toggl_api_token)
    t.stop_timer(task_id)

# Start the timer when I commit code
project_name = 'my_new_project'
task = start_timer(project_name)
print(f'Timer started: {task["description"]}')
Enter fullscreen mode Exit fullscreen mode

This script ensures that I accurately track my time spent on each project.

Invoicing and Payment Tracking Automation

I use the stripe library in Python to automate my invoicing and payment tracking workflow. I've created a script that automatically generates invoices for my clients and sends them payment reminders.

import stripe

# Stripe API credentials
stripe_api_key = 'your_api_key'

# Create a new Stripe customer
def create_customer(client_name, client_email):
    stripe.api_key = stripe_api_key
    customer = stripe.Customer.create(name=client_name, email=client_email)
    return customer

# Create a new Stripe invoice
def create_invoice(customer_id, project_name, amount):
    stripe.api_key = stripe_api_key
    invoice = stripe.Invoice.create(customer=customer_id, description=project_name, amount=amount)
    return invoice

# Send a payment reminder
def send_payment_reminder(invoice_id):
    stripe.api_key = stripe_api_key
    invoice = stripe.Invoice.retrieve(invoice_id)
    print(f'Payment reminder sent: {invoice["description"]}')

# Create a new customer and invoice
client_name = 'John Doe'
client_email = 'john.doe@example.com'
customer = create_customer(client_name, client_email)
project_name = 'my_new_project'
amount = 1000
invoice = create_invoice(customer.id, project_name, amount)
print(f'Invoice created: {invoice["description"]}')
Enter fullscreen mode Exit fullscreen mode

This script saves me time and ensures that I get paid on time.

Monetization Angle

By automating my freelance workflow with Python, I've been able to increase my productivity and efficiency, which

Top comments (0)