An open API service indexing awesome lists of open source software.

https://github.com/upstash/feedback

Feedback Component for Next.js
https://github.com/upstash/feedback

nextjs reactjs redis

Last synced: 6 months ago
JSON representation

Feedback Component for Next.js

Awesome Lists containing this project

README

          

# Feedback Widget for Next.js

> [!NOTE]
> **This project is a Community Project.**
>
> The project is maintained and supported by the community. Upstash may contribute but does not officially support or assume responsibility for it.

Create a Feedback Widget for your Next.js site with two steps. The submitted message will be sent to your Slack channel.

No backend required! See [the demo](https://upstash-feedback-widget.vercel.app/)

## Install

### 1. Install Package

```bash
yarn add @upstash/feedback
```

### 2. Environment Variables

Then create a `.env` file at the root directory of your application and add your webhook URL (Slack, Discord etc).

```bash
SLACK_WEBHOOK_URL='my-secret-webhook-url'
```

> `SLACK_WEBHOOK_URL` can be found at the Slack integration page
> in https://api.slack.com/messaging/webhooks

### 3. Import CSS and Widget

```js
// pages/_app.js

import "@upstash/feedback/index.css";
import FeedbackWidget from "@upstash/feedback";

export default function MyApp({ Component, pageProps }) {
return (
<>


>
);
}
```

### 4. Create API

```js
// pages/api/feedback.js

import createFeedbackAPI from "@upstash/feedback/api";

export default createFeedbackAPI({
webhooks: [process.env.SLACK_WEBHOOK_URL],
});
```

> You can create multiple webhooks for multiple channels. Seperate them with a comma `[process.env.SLACK1_WEBHOOK_URL, process.env.SLACK2_WEBHOOK_URL, process.env.DISCORD_WEBHOOK_URL]`

## Options

The options can be passed as React props

| key | type | default | accept |
| ---------------- | -------------------------- | -------------- | ---------------------- |
| `user?` | string | | |
| `metadata?` | object | null | |
| `type?` | string | "form" | 'form', 'rate', 'full' |
| `apiPath?` | string | 'api/feedback' | |
| `themeColor?` | string | '#5f6c72' | |
| `textColor?` | string | '#ffffff' | |
| `title` | string, React.ReactElement | | |
| `description` | string, React.ReactElement | | |
| `showOnInitial?` | boolean | false | |

If you already have an id (or email) for the current user, you can pass it to
the component as a parameter, so the feedback will be stored together with the
user's id.

```javascript

```

Also, you can set a user id just to hide email input, so the form can be
submitted anonymously.

```javascript

```