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

node-producthunt-api

v1.3.0

Published

Unofficial Node.js wrapper for the Product Hunt Graphql API V2

Downloads

34

Readme

Product Hunt API V2 Node.js Library

The Product Hunt Node.js library provides convenient access to the Product Hunt Graphql V2 API from Node.js applications.

⚠️ Important note: this library is meant for server-side usage only, as using it in client-side browser code will expose your secret API key. See here for more details.

Installation

npm install node-producthunt-api

Usage

The library needs to be configured with your account's secret key, which is available in your Product Hunt account page. We recommend setting it as an environment variable. Here's an example of initializing the library with the API key loaded from an environment variable and creating a completion:

Init client

You can use your app dev token directly:

const { Configuration, ProductHuntAPI } = require("node-producthunt-api");

const configuration = new Configuration({
        apiKey: process.env.PRODUCT_HUNT_DEV_TOKEN,
})

or use your Oauth credentials If you have no token created:

const { Configuration, ProductHuntAPI } = require("node-producthunt-api");

const configuration = new Configuration({
        clientId: process.env.PRODUCT_HUNT_CLIENT_ID,
        clientSecret: process.env.PRODUCT_HUNT_CLIENT_SECRET,
        grantType: "client_credentials",
})
const { ProductHuntAPI } = require("node-producthunt-api");

const productHuntAPI = new ProductHuntAPI(configuration)

const { data } = await productHuntAPI
  .GetPosts({
    variables: {
      first: 20,
      order: "VOTES",
      postedAfter: new Date("2022/12/01"),
      after: "NjA",
      topic: "web3"
    }
  })
console.log(data.data.posts.edges)

Check out the full API documentation for examples of all the available functions.

Request options

All of the available API request functions additionally contain an optional final parameter where you can pass custom axios request options, for example:

const completion = await productHuntAPI
  .GetPosts(
    {
      variables: {
        first: 20,
        order: "VOTES"
      }
    },
    {
      timeout: 1000,
      headers: {
        "Example-Header": "example",
      },
    }
  );

CommonJs and ESModules Support

const { Configuration, ProductHuntAPI } = require("node-producthunt-api");
import { Configuration, ProductHuntAPI } from "node-producthunt-api"

Error handling

API requests can potentially return errors due to invalid inputs or other issues. These errors can be handled with a try...catch statement, and the error details can be found in either error.response or error.message:

try {
  const { data } = await productHuntAPI
  .GetPosts({
      variables: {
        first: 20,
        order: "VOTES"
      }
  });
  console.log(data.data.posts.edges);
} catch (error) {
  if (error.response) {
    console.log(error.response.status);
    console.log(error.response.data);
  } else {
    console.log(error.message);
  }
}

Roadmap

  • [x] Support Typescript typing
  • [x] Support for Oauth token middleware
  • [x] Add GetPosts query
  • [x] Add GetTopics query
  • [x] Add GetPost query
  • [x] Support dev token
  • [ ] Add GetTopic query
  • [ ] Add GetCollection/s query
  • [ ] Add GetViewer/s query
  • [ ] Add GetUser/s query
  • [ ] Add GetMakerGroup/s query
  • [ ] Add GetGoal/s query
  • [ ] Add GetComment/s query
  • [ ] Add mutation/s support