Skip to content

Repository files navigation

Playdeck logo

Playdeck

License: MIT TanStack Start React TypeScript Tailwind CSS

Doomscrolling, except every card is a game you can win.

32 small games in an endless vertical feed. Swipe, play a thirty-second run, level up. No sign-up, works offline.

Try it live


Features

  • Endless feed — swipe, scroll, arrow keys or Space. One card per flick.
  • Levels — every game remembers your level and gets harder as you win.
  • Combos — win streaks multiply your score, up to ×3.
  • Unlocks — 8 games free, 4 more every 250 points.
  • Daily challenge — 3 games, the same for everyone, with a streak and a shareable card.
  • Offline — installable PWA. Progress lives in your browser, not a server.

How It Works

The feed renders the deck three times over and keeps you in the middle copy, hopping back a copy once scrolling settles — so it never reaches an end.

Only the visible card and its neighbours are mounted, so at most three games hold timers at once. Starting a run freezes the feed and hands the game your keys and taps.

Games are single files in src/games. Drop one in and it shows up; delete it and it's gone.

Tech Stack

Area Tools
App TanStack Start · React · TypeScript
Styling Tailwind CSS
Games Canvas 2D · Web Audio
Testing Vitest
Tooling Vite · Biome

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development purposes.

Requirements

To install and run this project you need:

Installation

To set up everything on your local machine, follow these steps:

  1. Clone this repo and then change directory to the playdeck folder:
git clone https://github.com/kaushalmeena/playdeck.git
cd playdeck
  1. Install project dependencies using npm:
npm install

Running

To run the project simply run:

npm run dev

Your app should now be running on localhost:5173.

Testing

To run the unit tests:

npm test

To lint and format-check the project:

npm run check

Building

To create a production build:

npm run build

Every route is prerendered to static HTML, so nothing needs a server. The deployable site is dist/client.

Deployment

Every push to main is tested, built and deployed to GitHub Pages by the deploy workflow. A project site is served from /<repo>/, so the workflow builds with BASE_PATH set from the repository name.

Documentation

Full documentation is available in the /docs directory.

Contributing a Game:

  • Adding a Game — the one-file contract, the run lifecycle, and the kit helpers.
  • The Games — all 32 games and how each one scales.

Under the Hood:

  • Architecture — the feed, wheel paging, scoring, and what's unit-tested.

Contributing

Contributions are welcome! If you find a bug or have a feature request, please open an issue first to discuss it. For code changes, fork the repository, create a branch, and open a pull request.

New games are especially welcome — see Adding a Game.

License

This project is licensed under the MIT License — see the LICENSE file for details.

About

A deck of 32 bite-sized browser games in an endless vertical feed — swipe, play a 30-second run, level up. No sign-up, works offline.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages