npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@dumindalk/blueprint

v1.0.0

Published

Minimal game development blueprint with Phaser 3, TypeScript, and Webpack 5

Downloads

5

Readme

Game Development Blueprint

A minimal, maintainable game development setup with Phaser 3, TypeScript, and Webpack 5.

Features

  • One core codebase for gameplay, UI, and assets
  • Thin platform adapters (web → FBIG → Android → iOS)
  • Small, fast builds with predictable releases
  • Minimal toolchain you can maintain solo

Tech Stack

  • Engine: Phaser 3 (stable)
  • Language: TypeScript
  • Bundler: Webpack 5
  • Package Manager: pnpm (or npm)
  • Lint/Format: ESLint (typescript-eslint), Prettier
  • Art/Audio: TexturePacker (atlases), Aseprite (sprites), Audacity + ffmpeg (audio)

Project Structure

/project
  /src
    /core                # game scenes, logic, UI, assets indices
      /scenes
      /systems
      /ui
      GameConfig.ts
    /platform            # thin adapters
      /web
      /fbig
      /android
      /ios
    /boot                # entry bootstraps per target (no game logic)
      main.web.ts
      main.fb.ts
      main.android.ts
      main.ios.ts
    /services            # interfaces + implementations per platform
      ads/
      iap/
      storage/
      analytics/
      social/
    /assets
      /images
      /audio
      /atlases
      /fonts
  /config
    webpack.web.js
    webpack.fbig.js
    webpack.android.js
    webpack.ios.js
    paths.json           # centralize dist/out paths
    env.example          # documented keys
  /tests
    /e2e
      smoke.spec.ts      # load → show main menu → start level
  /build                 # output (gitignored)
  /scripts               # tiny node scripts for packaging/zip/sign
  .editorconfig
  .eslintrc
  .prettierrc
  README.md

Quick Start

Option 1: Use as NPM Package (Recommended)

# Install the blueprint CLI globally
npm install -g @dumindalk/blueprint

# Create a new game project
bs-play create my-awesome-game --platforms web,android --type puzzle

# Navigate to your project
cd my-awesome-game

# Install dependencies
npm install

# Start development
npm run dev:web

Option 2: Use as Template Repository

  1. Install dependencies:

    pnpm install
    # or
    npm install
  2. Start development server for specific platform:

    pnpm dev:web      # Web platform (port 8080)
    pnpm dev:fbig     # Facebook Instant Games platform (port 8081)
    pnpm dev:android # Android platform (port 8082)
    pnpm dev:ios     # iOS platform (port 8083)
  3. Build for production:

    pnpm build:web
    pnpm build:fbig
    pnpm build:android
    pnpm build:ios
    pnpm build:all    # Build all platforms

Scripts

  • pnpm dev:web - Start web development server
  • pnpm dev:fbig - Start Facebook Instant Games development server
  • pnpm dev:android - Start Android development server
  • pnpm dev:ios - Start iOS development server
  • pnpm build:web - Build web for production
  • pnpm build:fbig - Build Facebook Instant Games for production
  • pnpm build:android - Build Android for production
  • pnpm build:ios - Build iOS for production
  • pnpm build:all - Build all platforms
  • pnpm lint - Run ESLint
  • pnpm lint:fix - Fix ESLint issues
  • pnpm format - Format code with Prettier
  • pnpm clean - Clean build directory
  • pnpm test:e2e - Run end-to-end tests
  • pnpm package:web - Package web build
  • pnpm package:fbig - Package Facebook Instant Games build
  • pnpm package:android - Package Android build
  • pnpm package:ios - Package iOS build

Platform Adapters

The blueprint includes thin platform adapters that abstract platform-specific functionality:

  • Web: Standard web APIs, localStorage, Web Audio API
  • FBIG: Facebook Instant Games APIs, Facebook Analytics
  • Android: Android native APIs, SharedPreferences, Firebase
  • iOS: iOS native APIs, UserDefaults, Firebase

Services

Each platform implements the same service interfaces:

  • Storage: Platform-appropriate storage (localStorage, AsyncStorage, etc.)
  • Analytics: Event tracking and user analytics
  • Ads: Banner, interstitial, and rewarded ads
  • Social: Sharing and social login
  • Input: Touch and keyboard input handling
  • Audio: Sound and music playback
  • Graphics: Screen management and orientation

Development Guidelines

  • Use camelCase for functions and variables
  • Use SCREAMING_SNAKE_CASE for constants
  • Use PascalCase for classes, enums and typedefs
  • Keep platform adapters thin - no game logic
  • Place reusable logic in the core directory
  • Use the service interfaces for platform abstraction