KeiPai is a web application as a social networking site for game developers and influencers.
The idea behind this app was to mimic platforms such as Keymailer, Lurkit and Woovit.
This repository contains both server and client related files, which should let you host your own instance of this application.
- Add games to your library
- Manage keys to each game
- Start promotial campaigns for your games
- Select between manual and automatic key distribution system
- Set start-date and end-date
- Set minimum requeirements for each social media platform
- Add a description with markdown support
- Set key limit for each game platform
- Accept or decline incoming requests
- Monitor your campaign statistics
- Visit influencer profiles and check their YouTube videos and Twitch streams
- Review influencers you worked with
- Send private messages between other developers and influencers
- Connect your YouTube and Twitch accounts
- Browse available campaigns and filter them by:
- Tags
- Platforms
- Send requests to join campaigns
- System automatically detects if you uploaded video or livestream onto selected platform
- Visit developer profiles and check uploaded games and running campaigns
- Send private messages between other influencers and developers
- User verification with OAuth 2.0
- Accurate content data with the official YouTube and Twitch APIs
- JWT stored safely in cookies
- File storage with Azure Blob Storage
- Real-time communication with Twitch servers via webhooks
Server: .NET 8.0, Entity Framework Core
Database: MS SQL, Azure Blob Storage
Client: Angular 18, Tailwind CSS, daisyUI
For the app to work properly you need to generate both YouTube and Twitch OAuth Client Credentials. You also need Azure Blob Storage connection string to store images. If you also want to test out Twitch functionality locally you need to create a ngrok account and generate a static domain.
Twitch OAuth Client Credentials
- Create an account and login on Twitch Developers
- Click on
Your Consolebutton in the upper right corner - Click on the
Register Your Applicationbutton - Fill out form with following informations:
- Name -- can be anything e.g. KeiPai
- OAuth redirect URI -- http://localhost:4200/twitch-success
- Category -- Website Integration
- Client Type -- confidential
- Submit form and click on the generated application
- Copy generated Client ID and Client Secret
YouTube OAuth Client Credentials
- Create an account and login on Google Cloud
- Click on
Consolebutton in the upper right corner - Create a new Project, you can name it anyway you want
- After project gets created select it
- From navigation menu choose
APIs & Services - Navigate to
Libraryand search forYouTube Data API v3, then select and enable it - Go back and and select
OAuth consent screen - Click on the
Get Startedbutton - Fill out the form with following informations:
- App name -- can be anything e.g. KeiPai
- User support email -- select your email
- Audience -- External
- Contact Information -- enter your own email address
- Submit form
- Select
Audiencetab and add your email as a test user - Select
Data Accesstab and click on theAdd Or Remove Scopes - From list select scopes:
.../auth/userinfo.emailand../auth/youtube.readonly - Update changes
- Select
Clientstab and click on theCreate Clientbutton - Fill out the form with these informations:
- Application type -- Web application
- Name -- can be anything e.g. KeiPai
- Authorized JavaScript origins -- http://localhost:4200
- Authorized redirect URIs -- http://localhost:4200/youtube-success
- Submit form and click on the download icon on the generated client
- Copy generated Client ID and Client Secret
Azure Blob Storage Connection String
- Create an account and login on Microsoft Azure
- Click on
Create a resourcebutton - Select from categories
Storageand click onCreateunderStorage account - Fill out the form with following informations:
- Subscription -- choose any available
- Resource group -- can be anything e.g. KeiPai
- Storage account name -- can be anything e.g. keipaistorage
- Region -- best to choose recommended one
- Primary service -- Azure Blob Storage or Azure Data Lake Storage Gen 2
- Performance -- Standard
- Redundancy -- Locally-redundant storage (LRS)
- Leave all the remaining fields as they are and complete the setup
- After finishing deployment click on
Go to resourcebutton - Under the properties section click on
Blob servicetext - Click on the
Containerbutton and name the new containerimages - Go back to Resource and from the list on the left side of the screen select
Security + networkingandAccess keys - Copy one of the available Connection Strings
ngrok static domain
This step is only required if you are going to test out locally Twitch integration
- Create an account and login on https://ngrok.com
- In the dashboard choose option
Domainsunder theUniversal Gatewaysection - Click on the
New Domainbutton - Copy created domain
1. Install .NET 8 SDK
- Download and install the .NET 8 SDK from the official .NET download page
2. (Optionally) Install Visual Studio 2022
- Download and install Visual Studio 2022 from the official Visual Studio download page
- During installation ensure you select the following workloads:
- ASP.NET and web development
- .NET desktop development
3. Install SQL Server
- Download and install SQL Server from the official SQL Server download page
4. Install SQL Server Management Studio (SSMS) for easier database management
- Download and install SSMS from the official SQL Server Management Studio download page
5. Install Node.js
- Download and install Node.js from the official Node.js download page
6. (Optionally) Install ngrok
- Download, install and configure ngrok from the official ngrok download page
1. Download or clone this repository
git clone https://github.com/ptkr0/KeiPai.git2. Navigate to server directory
cd <KeiPai/server>3. Install all the NuGet Packages
- Restore the NuGet packages by running:
dotnet restore- (Alternatively) Open solution file (
.sln) in Visual Studio 2022 - Restore the NuGet packages by right-clicking on the solution in the Solution Explorer and selecting "Restore NuGet Packages"
4. Set up the database
- Open SSMS and connect to your SQL Server instance
- In Object Explorer, right-click on
Databasesand selectNew Databaseoption - Enter your database name e.g. keipai
- Click
OK - Right-click on created database and select
Propertiesoption - Copy
NameandOwner(copy only machine name e.g. DESKTOP-38EFFIN) values
5. Set up the appsettings.json
- Inside KeiPai/server directory create a new file called
appsettings.json - Using
appsettings - example.jsonfile as an example and fill with necessary data created in previous steps
6. Apply the migration
- Apply migrations and create the database by running:
dotnet ef database update- If operation fails, try installing
dotnet eftool by running:
dotnet tool install --global dotnet-ef --version 8.0.07. Navigate to client directory
cd <KeiPai/client>8. Install the required npm packages
- Install all the necessary packages by running:
npm install9. Configure client environment file
- Navigate to the environments directory
cd <KeiPai/src/client/environments>- Create a new file called
environment.development.ts - Using
environment.development - examplefile as an example and fill with necessary data created in previous steps
- Start the server by running the following command with terminal inside the server directory:
dotnet run- Server should start running on
https://localhost:7157-- if it runs on different port be sure to updateenvironment.development.tsaccordingly - (Alternatively) Open solution file (
.sln) from the server directory in Visual Studio 2022 - Press F5 to start the project
- Start the client by running the following command with terminal inside the client directory:
npm start- Client should start running on
localhost:4200-- if it runs on different port be sure to updateappsettings.jsonaccordingly
- (Optionally) Start ngrok by running:
ngrok http --url=<generated-domain> <https://localhost:7157>![]() |
|---|
| Welcome page |
![]() |
|---|
| Login |
![]() |
|---|
| Register dialog option |
![]() |
|---|
| Register as developer |
![]() |
|---|
| Register as influencer |
![]() |
|---|
| Game list |
![]() |
|---|
| Add game |
![]() |
|---|
| Game page |
![]() |
|---|
| Game keys page |
![]() |
|---|
| Add keys |
![]() |
|---|
| Campaign list |
![]() |
|---|
| Add campaign |
![]() |
|---|
| Campaign page |
![]() |
|---|
| Pending requests list |
![]() |
|---|
| Campaign statistics |
![]() |
|---|
| Review dialog |
![]() |
|---|
| Available campaigns |
![]() |
|---|
| Settings page |
![]() |
|---|
| Settings page |
![]() |
|---|
| Send request dialog |
![]() |
|---|
| Pending requests |
![]() |
|---|
| Accepted requests |
![]() |
|---|
| Completed requests |
![]() |
|---|
| Developer profile |
![]() |
|---|
| Influencer profile |
![]() |
|---|
| Private messages |
Piotr Radziszewski
MyPHPoL™ 2024-2025

























