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 🙏

© 2024 – Pkg Stats / Ryan Hefner

wickeyappstore

v2.20.6

Published

The first AppStore for Progressive WebApps.

Downloads

97

Readme

WickeyAppStore

The first AppStore for Progressive WebApps.

Build Status npm version npm Dependency Status

Docs, Demo, & Developer Portal

DOCS: https://wickeyware.github.io/wickeyappstore/

DEMO APP: https://wickeyappstore.com/app/airhorn and corresponding repo: https://github.com/wickeyware/was-tutorial/

DEV PORTAL: https://wickeyappstore.com/app/developer-portal

App Store

WickeyAppStore

Progressive Web App Store

WickeyAppStore is the first App Store for PWA web-apps. A PWA makes use of new Web and JavaScript API to deliver an experience similar to a native app on the web. Reach the next One Billion users with lightweight, platform independant, full featured, web-apps.

Apps on the WickeyAppStore must meet quality and security requirements:

  • Safety - must be served via HTTPS to ensure that the real content has not been tampered.
  • Responsive - can fit all resolutions like desktop, tablet and mobile.
  • Progressive- work in all modern browsers because they use progressive enhancement concepts.
  • Connectivity independent - need to work on any type of connection, including offline.
  • Engageable - using push notifications, "add to home" feature to be more app-like.

Benefits

  • Trust - each app is vetted and approved manually. Only high quality apps are featured on the WickeyAppStore.
  • Single Sign On - you do not need to sign into apps you do not know or trust. Your WickeyAppStore SSO is all you need.
  • Monetization - we provide monetization tools including in-app purchases and ads.
  • Traffic - we feature unique and cool apps, and all apps benefit from being under one umbrella.

Submit your app

Create your app in the dev portal and use it to add meta data, in-app purchases, and so on. Here's a link to get started: Developer Portal

QuickStart (Angular)

Prerequisite: nodejs needs to be installed on your pc.

Clone our starter project Airhorn.

Where mywasapp is the name of your app, replace with whatever is desired.

git clone https://github.com/wickeyware/was-tutorial.git mywasapp

Change to that directory

cd mywasapp/

Install project dependencies and run.

with npm.

NOTE: npm will already be installed if node is already installed.

npm install
npm run build:lib
npm run start

with yarn

yarn
yarn run build:lib
yarn run start

Now visit localhost:4204

To build your app in preparation for deployment to the WickeyAppStore.

npm run build
yarn run build

The output dist/ directory is what will be selected to deploy on: developer.wickeyappstore.com

QuickStart (Manual Angular Integration)

To install this library, run: (NOTE: Install all dependencies)

npm install wickeyappstore --save

Import Material theme in global styles.css

@import "~@angular/material/prebuilt-themes/indigo-pink.css";

and then from your Angular AppModule:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
// Import Wickey AppStore
import { WickeyAppStoreModule } from 'wickeyappstore';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    RouterModule,
    FormsModule,
    // Specify as an import
    WickeyAppStoreModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Once WickeyAppStoreModule is imported, you can use its components, directives and pipes in your Angular application:

<!-- Add the Wickey Appstore to top of the bootstrapped component -->
<wickey-appstore></wickey-appstore>

<!--Now your app. Thats it.-->
<div class="myapp">
  <h1>Welcome to my app!</h1>
</div>

QuickStart Other (JS)

Example index.html: NOTE: Make sure to add the dependencies to the header, then add the tag and the wickeyappstore.js script in the body.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Custom WAS Test Page</title>
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="src/favicon.ico">

  <!-- WickeyAppStore css -->
  <link rel="stylesheet" href="elements/styles.css">
</head>
<body>
  <wickey-appstore></wickey-appstore>
  <script type="text/javascript" src="elements/wickeyappstore.js"></script>
  <script>
    const wickeyappstore = document.querySelector('wickey-appstore');
    wickeyappstore.addEventListener('open', (event) => {
      console.log('WAS button opened');  // can pause game here.
    });
    // https://wickeyware.github.io/wickeyappstore/injectables/UserService.html
    const userService = window.WAS.userService;
    // https://wickeyware.github.io/wickeyappstore/injectables/WasDataService.html
    const dataService = window.WAS.dataService;
    userService.user.subscribe(usr => {
      console.log('userServiceOut user.subscribe', usr);
    });
    userService.loginChange.subscribe((_isLogged) => {
      console.log('loginChange: loggedin: ', _isLogged);
      // This is a good place to call dataService.restore again, to get the logged in user's data.
    });
    // Check if purchased (where 10 is your purchase item id).
    userService.checkIfPurchased(10).subscribe(isPurch => {
      console.log('checkIfPurchased', isPurch);
      if (!isPurch) {
        // Check if purchased (where 10 is your purchase item id).
        const _inapp = userService.getInapp(10);
        userService.openpayjs(_inapp).subscribe(isSuccessful => {
          if (isSuccessful === true) {
            console.log('purchase was successful');
          } else if (isSuccessful === false) {
            console.log('purchase was NOT successful');
          } else {
            console.log('purchase was canceled');
          }
        });
      }
    });

    // Opens review popup, if logged in, else first logs in.
    // userService.leavereviewjs();

    // Example of how to pass in own save conflict mapping function.
    // Default mapping will choose the newest save.
    function onSaveConflict(localSave, cloudSave) {
      let keepSave = localSave;
      if (localSave && cloudSave) {
        if (cloudSave.highScore > localSave.highScore) {
          keepSave = cloudSave;
        }
      }
      return keepSave;
    }
    dataService.restore(onSaveConflict).subscribe(mydata => {
      console.log('wasDataService.restore', mydata);
      // // WasDataService is now loaded and restored (ready for use).
      // dataService.get('highScore');
      // dataService.save('highScore', 3000);
      // // Then after the session (or game level), persist to cloud
      // dataService.persist();

      // // Show leaderboard
      // userService.showLeaderboardjs();

      // // Add score to leaderboard
      // userService.addToLeaderboardjs(this.highScore);
    });
  </script>
</body>
</html>

License

MIT © WickeyWare, LLC