Skip to content

Open source

Yours to run, read and change

Taskivities is MIT licensed and has no hosted version to sign up for: you run it on your own Cloudflare account. One codebase serves as many teams as you like, each with its own address, database and files.

What it's made of

Cloudflare Workers + Hono

The API, sign-in and the app, on Cloudflare's edge. No servers to patch.

D1

A SQLite database per team, with an append-only history enforced by database triggers.

R2 (optional)

Attachments, served through the app so every download checks access.

MCP server

A remote MCP server with OAuth, so Claude and other assistants connect as each person.

React 19 + zustand

A small, fast single-page app with optimistic updates and live sync.

TypeScript + Vite

One language across the Worker and the app, sharing the same rules.

Deploy a team in about ten minutes

You need a Cloudflare account and a Google Cloud project for sign-in. Each team ("instance") is described by one small file that stays out of git.

  1. 1

    Get the code

    Clone the repository and install its dependencies.

    $ git clone https://github.com/taskivities/taskivities-app
    $ cd taskivities-app && npm install
    
  2. 2

    Sign in to Cloudflare

    Wrangler opens your browser once. If you manage several Cloudflare accounts, each team can use its own login profile.

    $ npx wrangler login
    
  3. 3

    Create a team

    Creates the team's D1 database, its key-value store for assistant sign-ins and, if R2 is turned on for the account, a bucket for attachments. Then it writes tenants/acme.env with their IDs.

    $ npm run tenant -- create acme --tz Europe/London
    
  4. 4

    Add Google sign-in

    In Google Cloud Console, create an OAuth client (Web application) with the redirect URI https://<worker>.<your-subdomain>.workers.dev/auth/callback, then store its ID and secret on the team's Worker.

    $ npm run tenant -- secret acme GOOGLE_CLIENT_ID
    $ npm run tenant -- secret acme GOOGLE_CLIENT_SECRET
    
  5. 5

    Deploy

    Applies any database migrations first, then builds and deploys the app to the team's Worker.

    $ npm run deploy -- acme
    
  6. 6

    Sign in first

    On a new team, the first person to sign in becomes the admin. Add your team on the Team page, then upload your logo and app icon in Settings.

Questions

Is it really free?

Yes. The software is MIT licensed. You pay Cloudflare only for what you use, and a small team usually fits in the free and low-cost tiers. Attachments need R2, which asks for a payment method on the account even within its free allowance.

Can I run it for several teams or clients?

Yes. Each team is one file in tenants/ and gets its own Worker, database and address. npm run tenant -- create <name> sets a new one up, and npm run deploy -- <name> updates it.

Where does my data live?

In your own Cloudflare account: tasks and history in D1, files in R2. Sign-in goes through Google. If an admin connects Gmail for invite emails, Taskivities can send email from that address but never read it.

Can AI assistants see everything?

No. An assistant acts as the person who connected it, sees only their projects and follows the same rules. Everything it changes is marked with its name in the task's history, and a connection ends when that person loses access.

Can tasks be deleted?

Tasks are archived instead: they disappear from every list and can be restored from the project's page. The history is permanent by design.

Does it work offline?

It needs a connection; you see a short "you're offline" page until you're back. It installs to your phone's home screen and opens like an app.