Skip to main content

Overview

The Settings page allows you to manage integrations with external services and configure your Arre account. Currently, the primary feature is Google Tasks integration, which enables bidirectional sync between Arre and your Google Tasks lists.
Access Settings by clicking the Settings icon in the sidebar navigation.

Google Tasks integration

Connect your Google Tasks account to sync tasks between Arre and Google Tasks. This integration uses OAuth 2.0 for secure authentication and proxies requests through Firebase Cloud Functions.
Arre does not store your Google Tasks data. All requests are proxied directly to Google’s API, ensuring your data remains private.

How to connect

1

Open Settings

Navigate to Settings from the sidebar menu.
2

Click Connect Google Tasks

In the Integrations section, click the Connect Google Tasks button.You’ll be redirected to Google’s OAuth consent screen.
3

Grant permissions

Authorize Arre to access your Google Tasks:
  • View tasks: Read your task lists and tasks
  • Manage tasks: Create, update, and complete tasks
  • View task lists: Access all your task lists
Arre requires these permissions to sync tasks bidirectionally. Without them, the integration cannot function.
4

Confirm connection

After authorization, you’ll be redirected back to Settings. The button will change to Disconnect, confirming a successful connection.

What gets synced

The Google Tasks integration provides access to:

Task Lists

Fetch all your Google Tasks lists (e.g., “My Tasks”, “Work”, “Personal”)

Tasks

Read tasks from any list, including completed and hidden tasks

Task Updates

Update task status, title, notes, and due dates

Real-time Sync

Changes made in Arre are immediately reflected in Google Tasks
The integration does not automatically import Google Tasks into Arre. It provides API access for you to manually fetch and sync tasks as needed.

Available Cloud Functions

Once connected, three Cloud Functions become available:

getGoogleTaskLists

Fetches all task lists for the authenticated user.
import { getFunctions, httpsCallable } from 'firebase/functions';

const functions = getFunctions();
const getTaskLists = httpsCallable(functions, 'getGoogleTaskLists');

const response = await getTaskLists();
const { lists } = response.data;
lists
TaskList[]
Array of Google Tasks lists:
[
  {
    "id": "MTIzNDU2Nzg5MDEyMzQ1Njc4OTA",
    "title": "My Tasks",
    "updated": "2026-03-04T10:30:00.000Z"
  }
]

getGoogleTasks

Fetches tasks from a specific list.
const getTasks = httpsCallable(functions, 'getGoogleTasks');

const response = await getTasks({
  listId: 'MTIzNDU2Nzg5MDEyMzQ1Njc4OTA',
  showCompleted: true,
  showHidden: true
});

const { tasks } = response.data;
listId
string
required
Google Tasks list ID
showCompleted
boolean
default:true
Include completed tasks in results
showHidden
boolean
default:true
Include hidden tasks in results

updateGoogleTask

Updates a task’s properties.
const updateTask = httpsCallable(functions, 'updateGoogleTask');

const response = await updateTask({
  listId: 'MTIzNDU2Nzg5MDEyMzQ1Njc4OTA',
  taskId: 'MDk4NzY1NDMyMTEyMzQ1Njc4OTA',
  taskPayload: {
    title: 'Updated task title',
    status: 'completed',
    notes: 'Task notes'
  }
});
listId
string
required
Google Tasks list ID
taskId
string
required
Task ID to update
taskPayload
object
required
Partial task object with fields to update:
  • title - Task title
  • status - “needsAction” or “completed”
  • notes - Task description
  • due - Due date in RFC 3339 format

How to disconnect

If you want to revoke Arre’s access to Google Tasks:
1

Open Settings

Navigate to Settings from the sidebar.
2

Click Disconnect

In the Google Tasks integration card, click Disconnect.Your OAuth tokens will be removed from Firestore.
3

Revoke permissions (optional)

To completely revoke access, visit Google Account Permissions and remove Arre from the list of connected apps.

Data privacy

Important: Arre stores OAuth tokens in Firestore under users/{uid}/integrations/googleTasks. These tokens are used to authenticate API requests on your behalf.
What’s stored:
  • OAuth access token (encrypted by Firebase)
  • OAuth refresh token (encrypted by Firebase)
  • Token expiration timestamp
What’s NOT stored:
  • Your Google Tasks data (tasks, lists, notes)
  • Task completion history
  • Google account password
All task data is fetched in real-time from Google’s API and never persisted in Arre’s database.

Troubleshooting

Possible causes:
  • Google OAuth secrets not configured in Firebase Secret Manager
  • Invalid redirect URI in Google Cloud Console
  • Insufficient permissions granted during OAuth flow
Solution:
  • Verify GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET are set in Firebase
  • Ensure redirect URI matches your Firebase Auth domain
  • Try disconnecting and reconnecting to re-authorize
Possible causes:
  • OAuth token expired (tokens are valid for 1 hour)
  • Google Tasks API not enabled in Google Cloud Console
  • Network connectivity issues
Solution:
  • Disconnect and reconnect to refresh tokens
  • Enable Google Tasks API in your Google Cloud project
  • Check browser console for detailed error messages
The Settings page architecture supports multiple integrations. To add a new service:
  1. Create Cloud Functions for the new API
  2. Add OAuth flow in AuthContext.tsx
  3. Add integration card to Settings.tsx
  4. Update Firestore security rules for the new collection
See Cloud Functions documentation for examples.

Technical implementation

The Settings feature uses:
  • Frontend: src/pages/Settings.tsx - React component
  • Auth Context: src/lib/auth/AuthContext.tsx - OAuth methods
  • Cloud Functions: functions/index.js - getGoogleTaskLists, getGoogleTasks, updateGoogleTask
  • Firestore: users/{uid}/integrations/googleTasks - Token storage
For developer details, see:

See also

Themes

Switch between light and dark mode

Cloud Functions

Technical details on integration APIs

Firebase Setup

Configure OAuth secrets

Security Rules

Firestore access control

Build docs developers (and LLMs) love