DEV Community

Caper B
Caper B

Posted on

Automating My Freelance Workflow with Python: A Step-by-Step Guide

Automating My Freelance Workflow with Python: A Step-by-Step Guide

As a freelance developer, managing multiple projects and clients can be overwhelming. To streamline my workflow and increase productivity, I've implemented automation using Python. In this article, I'll share my approach and provide practical examples to help you automate your freelance workflow.

Setting up the Environment

To start automating your workflow, you'll need to set up a Python environment on your machine. I recommend using a virtual environment to keep your dependencies organized. You can create a new virtual environment using the following command:

python -m venv freelance-env
Enter fullscreen mode Exit fullscreen mode

Activate the environment:

# On Windows
freelance-env\Scripts\activate

# On macOS/Linux
source freelance-env/bin/activate
Enter fullscreen mode Exit fullscreen mode

Install the required libraries:

pip install schedule pandas openpyxl
Enter fullscreen mode Exit fullscreen mode

Automating Task Management

As a freelancer, you likely use a task management tool like Trello or Asana to keep track of your projects. I'll demonstrate how to automate task management using the Trello API and Python.

First, create a Trello account and obtain an API key:

import requests

# Replace with your Trello API key and token
api_key = "YOUR_API_KEY"
token = "YOUR_TOKEN"

# Set the API endpoint and parameters
url = f"https://api.trello.com/1/boards/?key={api_key}&token={token}"
response = requests.get(url)

# Parse the JSON response
boards = response.json()
Enter fullscreen mode Exit fullscreen mode

Next, create a Python script to automate task creation and assignment:

import schedule
import time

def create_task(board_id, list_id, task_name):
    # Set the API endpoint and parameters
    url = f"https://api.trello.com/1/cards?key={api_key}&token={token}"
    params = {
        "idBoard": board_id,
        "idList": list_id,
        "name": task_name
    }
    response = requests.post(url, params=params)

    # Check if the task was created successfully
    if response.status_code == 200:
        print(f"Task '{task_name}' created successfully")
    else:
        print(f"Error creating task: {response.text}")

# Schedule the task creation
schedule.every().day.at("08:00").do(create_task, "BOARD_ID", "LIST_ID", "Daily Task")

while True:
    schedule.run_pending()
    time.sleep(1)
Enter fullscreen mode Exit fullscreen mode

Automating Time Tracking

Accurate time tracking is crucial for freelancers to bill clients correctly. I'll show you how to automate time tracking using the Toggl API and Python.

First, create a Toggl account and obtain an API token:

import requests

# Replace with your Toggl API token
api_token = "YOUR_API_TOKEN"

# Set the API endpoint and parameters
url = f"https://api.toggl.com/reports/v8/details?user_agent=api_token&workspace_id=YOUR_WORKSPACE_ID&since=2022-01-01&until=2022-01-31&state=active&user_ids=YOUR_USER_ID&project_ids=YOUR_PROJECT_ID&tag_ids=YOUR_TAG_ID&description=YOUR_DESCRIPTION"
headers = {
    "Authorization": f"Basic {api_token}",
    "Content-Type": "application/json"
}
response = requests.get(url, headers=headers)

# Parse the JSON response
time_entries = response.json()
Enter fullscreen mode Exit fullscreen mode

Next, create a Python script to automate time tracking:


python
import schedule
import time

def track_time(project_id, task_name):
    # Set the API endpoint and parameters
    url = f"https://api.toggl.com/reports/v8/details"
    headers = {
        "Authorization": f"Basic {api_token}",

Enter fullscreen mode Exit fullscreen mode

Top comments (0)