/reward-system

Reward System - Indie Creators

Primary LanguageTypeScriptMIT LicenseMIT

Reward System

Introducing the perfect companion for your Discord community! πŸ’»πŸš€ This reward calculation bot is the ultimate tool for those seeking recognition for their contributions. From small code tweaks to large collaborative projects, this bot is equipped to calculate and display the rewards deserved for each contribution. βš™οΈπŸ’° With its precision and speed, this bot will make your creators feel valued and motivated to keep working in the community. Don't wait any longer to add it to your Discord server and give your members the gratification they deserve! πŸ’―πŸ’ͺ

Table of Contents

Getting Started

Pre-requisites

Before you start, make sure you have the following:

Project File Tree

.github
  └─ workflows
        └─ CI with pnpm cache setup
.vscode
  └─ Recommended extensions and settings for VSCode users
apps
  β”œβ”€ bot
  |   β”œβ”€ Node
  |   β”œβ”€ Discord JS
  |   β”œβ”€ tRPC Client
  |   └─ TypeScript
  └─ next.js
      β”œβ”€ Next.js 13
      β”œβ”€ React 18
      β”œβ”€ Tailwind CSS
      └─ E2E Typesafe API Server & Client
packages
 β”œβ”€ api
 |   └─ tRPC v10 router definition
 β”œβ”€ auth
     └─ authentication using next-auth. NOTE: Only with Discord
 └─ db
     └─ typesafe db-calls using Prisma

[ ↑ to top ↑ ]

Installation

As the project uses Turborepo, you could run the following commands on the root, and it will run every inner same command.

Note Ensure you have set the enviorimental variables before running the project

Run the Main Project

  1. Install the project dependencies by running pnpm install.
  2. Build the project by running pnpm build.
  3. Start the project by running pnpm dev.

Note pnpm dev will run discord and nextjs project

Example:

installation

[ ↑ to top ↑ ]

Usage

To get it running, follow the steps below:

Setup .ENV

You will find a .env.example file in your project's root directory. Use it as a template for your own .env.

Explanation of Required Environment Variables for Database, Discord OAuth2 and Bot Authentication

These are environment variables that you need to set in order to use Discord's OAuth2 API and to authenticate your bot with Discord.

DATABASE_URL: This is the URL for your database. You need to replace it with the actual URL for your database.

database-url


NEXTAUTH_SECRET: This is a secret key used by NextAuth.js for secure session cookies and CSRF protection. You should generate a new secret key and replace it with the placeholder.

nextauth-secret


NEXTAUTH_URL: When deploying to production, set the NEXTAUTH_URL environment variable to the canonical URL of your site. if you are working locally, replace with "http://localhost:3000"

image


DISCORD_CLIENT_ID: This is the client ID of your Discord application. You can get it from the Discord Developer Portal.

Discord-client-ID


DISCORD_CLIENT_SECRET: This is the client secret of your Discord application. You can get it from the Discord Developer Portal.

discord-client-secret


DISCORD_SERVER_ID: This is the Discord server ID. You can get it from your own Discord server.

discord-server-id


DISCORD_BOT_TOKEN: This is the bot token for your Discord bot. You need to create a bot in the Discord Developer Portal and get the token from there.

discord-bot-token


DISCORD_WEBHOOK_URL: This is the webhook URL for your Discord server. You can create a webhook in your server settings and get the URL from there.

discord-webhook-url


.env example

image

Once you have set these environment variables in your .env file, you are ready to run the project.

Configure DB (SUPABASE)

To use Supabase as your database provider, you'll need to create a new project in Supabase and obtain your connection string URI. Here's how:

  1. Create a new project in Supabase.
  2. In your project, go to Settings -> Database.
  3. Under the "Connection" tab, copy the Connection string (URI).
  4. In your project, create a .env.local file at the root of the project folder.
  5. In the .env.local file, set the DATABASE_URL variable to your Supabase connection string URI.

For more details on setting up your Supabase database, check out the Supabase documentation.

Configure DISCORD BOT

  1. Go to the Discord Developer Portal.
2. Create a New Application.

Application

3. Your next step is to go over the menu on the left side of the screen and click β€œBot”.

Bot

4. Now you want to click the blue β€œAdd Bot” button.

Add Bot

  1. Click the β€œYes, do it!” button…
6. You’ll also see a β€œToken” and a blue link you can click called β€œCopy”.

Token

DISCORD_BOT_TOKEN="YOUR_TOKEN"

  1. Add Your Bot to a Discord Server
8. In order to add your bot to your Discord Server, you’ll need to navigate back to the β€œOAuth2” "URL GENERATOR" tab.

Token


9. In the β€œScopes” section, you’ll want to select the β€œbot” checkbox.

Token


10. β€œBot Permissions” section. This is where you choose what permissions to give your bot, and what it can and can’t do. If this is a Bot to test new features o commmands, you could assign the "Administrator" permission.

permissions


11. After you’ve selected your permissions, scroll down to the bottom and look at the URL that was generated.

Screenshot 2023-04-03 at 9 44 10 PM


12. Click the blue β€œCopy” button on the right side. This is the URL you’ll navigate to in order to add your bot to a server.

add-bot-to-server


Configure DISCORD KEYS

To configure your Discord keys and enable your application to access the Discord API, follow the steps below:

1. Navigate to the "OAuth2" section in the Discord Developer Portal and select your bot name.

firefox_mppRClcVUZ

Client ID: DISCORD_CLIENT_ID="your_client_id_here"
2. Under the "CLIENT ID" section, copy the client ID.

firefox_LveLM7Di8L

Client Secret: DISCORD_CLIENT_SECRET="your_client_secret_here"
3. Click the blue β€œReset Secret” button.

firefox_BgpIxRB20C

  1. Click β€œYES” button.

  2. You’ll also see a β€œToken” and a blue link you can click called β€œCopy”.

If you need additional help, consult the Discord Developer Documentation.

Configure Discord WEBHOOKS

  1. Go to your Discord server where you want to add the webhook.
2. Click on the channel where you want to send the webhook messages.

channel-webhook

3. Click on the settings icon and select "Integrations".

Discord_MkqQdiBzb7

4. Click the "Create Webhook" button and enter the webhook name and select the channel you want to send messages to.

webook

  1. Copy the webhook URL and set it as an environment variable in your project:

  2. DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/your_webhook_id/your_webhook_token"

  3. Save the changes and restart your server to make the changes take effect.

[ ↑ to top ↑ ]

How can I contribute?

We welcome contributions from anyone who would like to help improve our project. Whether you're an experienced developer or just starting out, there are plenty of ways to get involved.

Support

If you need help using our project, please visit our SUPPORT.md file. This document provides information on how to get help from the community, how to report issues, and where to find additional resources.

Join Our Community

Join our Discord community to connect with other contributors and get help from the maintainers. This is a great place to ask questions, get feedback on your ideas, and collaborate with others on the project.

Read the Contribution Guidelines

Before you start contributing, please read our CONTRIBUTING.md file. This outlines the contribution guidelines and provides instructions for setting up your development environment, submitting pull requests, and more.

We appreciate all contributions, big and small. Thank you for helping to make our project better!

Security

We take the security of our project seriously. If you discover a security vulnerability, please let us know right away. We will investigate all legitimate reports and do our best to quickly address any issues.

To learn more about our security practices, please read our SECURITY.md file.

License

MIT License

References

The stack originates from create-t3-app.

A blog post where I wrote how to migrate a T3 app into this

Test the Github GraphQL schema here


Contributors

Made with contrib.rocks.

[ ↑ to top ↑ ]


Folow us at