pezkuwichain 9e3844fd89 ci: deploy each function to the project that actually serves it
The functions in this repo do not all live in the same place, and the deploy
step I added yesterday sent all of them to the self-hosted host on vps3.

telegram-bot and ask are served from the cloud project vbhftvdayqfmcgmzdxfv.
Both Telegram bots reach it by webhook — ?bot=krd is @pezkuwichainBot and
?bot=dks is @DKSKurdistanBot — and news.pex.mom's assistant calls ask there.
Copies of both still sit in the vps3 volume from before that split, holding a
bot token revoked on 2026-07-19, and take no traffic. Deploying to vps3 was
therefore updating a dead copy while the live one kept running old code.

So the self-hosted job now excludes those two, and a second job deploys them to
the cloud project. That closes a real gap: they had been deployed by hand for
months, and git drifted far enough behind that on 2026-07-21 the running
function body had to be extracted from the deployed bundle to recover it.

The host registry records the split too, so the gate cannot be pointed at the
wrong target by accident.
2026-07-30 02:02:28 -07:00
2026-07-29 21:55:01 -07:00
2026-07-29 21:55:01 -07:00

Pezkuwi Telegram Mini App

Telegram Mini App for Pezkuwichain - Forum, Announcements, Rewards, and Wallet integration.

Tech Stack

  • Frontend: React 18 + TypeScript + Vite
  • Styling: Tailwind CSS + shadcn/ui patterns
  • State: TanStack Query (React Query)
  • Backend: Supabase (PostgreSQL + Auth + Edge Functions)
  • Testing: Vitest + Testing Library
  • CI/CD: GitHub Actions

Getting Started

Prerequisites

  • Node.js >= 18
  • npm >= 9
  • Supabase account

Installation

# Clone the repo
git clone https://github.com/pezkuwichain/pezkuwi-telegram-miniapp.git
cd pezkuwi-telegram-miniapp

# Install dependencies
npm install

# Copy environment template
cp .env.example .env

# Add your Supabase credentials to .env

Development

# Start dev server
npm run dev

# Run tests
npm run test

# Type check
npm run typecheck

# Lint
npm run lint

# Format code
npm run format

# Full validation (typecheck + lint + test + build)
npm run validate

Build

npm run build

Output will be in dist/ directory.

Project Structure

src/
├── contexts/       # React contexts (Auth)
├── hooks/          # Custom hooks (Supabase, Telegram)
├── lib/            # Utilities (env, supabase client)
├── sections/       # Main app sections
│   ├── Announcements.tsx
│   ├── Forum.tsx
│   ├── Rewards.tsx
│   └── Wallet.tsx
├── test/           # Test setup
├── types/          # TypeScript types
├── App.tsx         # Main app component
└── main.tsx        # Entry point

Database Schema

Tables (prefixed with tg_ to avoid conflicts):

  • tg_users - Telegram users
  • tg_announcements - Admin announcements
  • tg_announcement_reactions - Like/dislike reactions
  • tg_threads - Forum threads
  • tg_thread_likes - Thread likes
  • tg_replies - Thread replies
  • tg_reply_likes - Reply likes

Environment Variables

Variable Description
VITE_SUPABASE_URL Supabase project URL
VITE_SUPABASE_ANON_KEY Supabase anon/public key

Telegram Setup

  1. Create bot via @BotFather
  2. Enable Mini App in bot settings
  3. Set Mini App URL to deployment URL
  4. Deploy telegram-auth Edge Function to Supabase

License

MIT

S
Description
No description provided
Readme MIT 8.5 MiB
Languages
TypeScript 92.4%
PLpgSQL 2.5%
JavaScript 2.2%
Python 2.2%
HTML 0.4%
Other 0.2%