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.
- Redis enabled via
- 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 usesuseStateimport—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
- Forms & persistence: Replace placeholders with Devvit Forms; wire gig creation/acceptance/completion to Redis.
- Balances & ledger: Maintain per‑user TC balances and a transaction history UI.
- Moderation tools: Quick dispute resolution, low‑effort filters, banlist integrations.
- Weekly automation: Auto‑post a new sprint; archive and summarize last week’s activity.
- Insights: Fulfillment rates, top helpers, category trends.
- Optional Web View: Rich companion UI for advanced flows where needed.
Built With
- devvit
- devvitcli
- kiro
- node.js
- typescript
Log in or sign up for Devpost to join the conversation.