SkillTimeBank — Project Story

Inspiration

A lot of help requests on Reddit are one‑off and transactional—“Can someone review my resume?” or “Help debug this script?” We wanted to turn those moments into a resilient, community‑powered skill economy where time, not money, is the currency. Timebanking makes contribution inclusive and fair: an hour of your time is worth an hour of mine.

What it does

SkillTimeBank runs inside Reddit as an interactive Devvit post:

  • Browse gigs posted by community members with status chips (OPEN, IN PROGRESS, COMPLETED).
  • Navigate tabs (Browse, My Gigs, Post Gig) within a single custom post.
  • Moderators create the post from the subreddit or a post menu item—no external hosting.

We model Time Credits (TC) as time:

  • Inline: $1\,\mathrm{TC} = 60\,\mathrm{minutes}$

  • Aggregation (display):
    $$\mathrm{Total\ TC} = \sum_i \frac{t_i}{60},\quad\text{where } t_i \text{ is minutes contributed.}$$

  • User balance (display):
    $$\mathrm{Balance}_u = \sum \mathrm{earned}_u - \sum \mathrm{spent}_u$$

How we built it

  • Platform: Reddit Devvit (Blocks API) with TypeScript.
  • UI: Devvit JSX primitives (<vstack>, <hstack>, <text>, buttons) + a custom post type.
  • App surfaces:
    • Subreddit menu: “Create SkillTimeBank Post”.
    • Post‑level menu: quick creation during testing.
  • Data & state:
    • Redis enabled via Devvit.configure({ redditAPI: true, redis: true }).
    • Typed state (users, gigs, transactions) with helpers ready for persistence.
  • Tooling: TypeScript, Vitest, Devvit playtest, production install to r/SkillTimeBank.

Challenges we ran into

  • Rendering mode pivot: We started exploring Web Views, then finalized on Blocks. Reconciling config and entry points took care.
  • API evolution: Older samples used Devvit.useState; current code uses useState import—fixing this across components caused types and layout adjustments.
  • Layout constraints: Removed unsupported props (alignment="space-between", wrap, gap="xsmall") and refactored with grow stacks and standard gaps.
  • Inputs: Native text inputs aren’t available in our Devvit version; we re‑scoped Post Gig to a placeholder and planned Devvit Forms for data entry.
  • Windows‑friendly scripts: Adjusted scripts for PowerShell so uploads and playtests are reliable.

Accomplishments that we’re proud of

  • Production‑installed interactive post live on r/SkillTimeBank.
  • Clean, responsive Blocks UI with status chips and tabbed navigation.
  • Redis‑ready architecture and typed domain models.
  • One‑click moderator workflow to create weekly Skill Swap Sprint posts.

What we learned

  • Building directly in Reddit with Devvit reduces friction—no separate hosting or auth flow.
  • Designing within Blocks constraints yields focused, durable UI.
  • Moderator entry points (subreddit/post menus) are powerful for seeding community rituals.

What’s next for SkillTimeBank

  1. Forms & persistence: Replace placeholders with Devvit Forms; wire gig creation/acceptance/completion to Redis.
  2. Balances & ledger: Maintain per‑user TC balances and a transaction history UI.
  3. Moderation tools: Quick dispute resolution, low‑effort filters, banlist integrations.
  4. Weekly automation: Auto‑post a new sprint; archive and summarize last week’s activity.
  5. Insights: Fulfillment rates, top helpers, category trends.
  6. Optional Web View: Rich companion UI for advanced flows where needed.

Built With

Share this project:

Updates