import datetime from flask import Flask, jsonify from flask_cors import CORS import resend from flask import request from supabase import create_client, Client import requests from openai import OpenAI app = Flask(__name__) CORS(app, resources={ r"/*": { "origins": ["*"], "methods": ["GET", "POST", "OPTIONS"], "allow_headers": ["Content-Type"] } }) SUPABASE_URL = "https://supabase-core.dev3vds1.link/" SUPABASE_KEY = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTc0NTk0MzYwMCwiZXhwIjo0OTAxNjE3MjAwLCJyb2xlIjoiYW5vbiJ9.28hFArcAFQ3mYTYL2n7nno4nHu5ZszkOO0dkAURR6Yg" supabase: Client = create_client(SUPABASE_URL, SUPABASE_KEY) resend.api_key = "re_XvLrRZMH_3mumWA531UugMk1X7A67fhH7" DISCORD_WEBHOOK_URL = "https://discord.com/api/webhooks/1368244147139383416/zSzsjOPTkU0olKinUnMOPeKj9vsmMXRw18iPQgxL4fiLXAoWo5e9KqBgtJ9Mkqo9LLh-" DISCORD_ROLE_ID = "1368244786632593500" DEEPINFRA_API_KEY = "V2Kvmyuu6qfSryHdwHmwAP0nXDJ1H6ik" MODEL = "Qwen/Qwen3-235B-A22B" openai = OpenAI( api_key=DEEPINFRA_API_KEY, base_url="https://api.deepinfra.com/v1/openai", ) SYSTEM_PROMPT ="""You are the assistant for VertexGPU, a decentralized GPU rental platform connecting idle GPUs worldwide through a secure P2P network for AI, rendering, and HPC tasks. Key Features: - GridLink: Decentralized GPU discovery & connection - EdgeNode: Lightweight client for GPU sharing - Adaptive Smart Contracts: Auto-managed pricing & performance - HiveMind: AI-based task orchestration - QRE + ICL: Quantum-secure, isolated computation - PredictAMI, EcoFlow, Compression: Maintenance, energy, and speed optimizations Manifesto: - Democratize compute access - Monetize idle hardware - Enable sustainable, fair innovation Tokenomics: - 95% Circulating - 2% Team (vested) - 2% Treasury - 1% Marketing GPU Pricing: - NVIDIA K80: $0.15/hr ($110/mo) - NVIDIA T1000: $0.16/hr ($119/mo) - NVIDIA RTX A4000: $0.17/hr ($125/mo) - NVIDIA RTX A5000: $0.22/hr ($162/mo) - NVIDIA V100: $0.23/hr ($170/mo) - NVIDIA Tesla P100: $0.27/hr ($196/mo) - 4x NVIDIA RTX 4090: $0.32/hr ($228/mo) - NVIDIA L4 Ada: $0.44/hr ($316/mo) - NVIDIA RTX A6000: $0.45/hr ($323/mo) - NVIDIA L40S Ada: $1.04/hr ($756/mo) - NVIDIA A100 PCIe: $1.36/hr ($991/mo) - NVIDIA H100 NVL: $2.85/hr ($2,048/mo) - NVIDIA H100 SXM: $3.06/hr ($2,203/mo) Buy GPU: Instruct users to click “Rent a GPU” on [vertexgpu.com](https://vertexgpu.com) CA Token: Instruct users to get the address only from the official website Response Style: Be short, concise, clear, and helpful. Emphasize decentralization, security, and community benefit. """ @app.route('/chat', methods=['POST']) def chat(): try: data = request.get_json() if not data or 'message' not in data: return jsonify({'status': 'error', 'message': 'Invalid request'}), 400 chat_completion = openai.chat.completions.create( model=MODEL, messages=[ { 'role': 'system', 'content': SYSTEM_PROMPT }, { 'role': 'user', 'content': data['message'] } ], stream=False, ) print(chat_completion) response = str(chat_completion.choices[0].message.content) # if the response contains tag, split the response if "" in response: response = response.split("\n\n")[1] print("======================") print(response) # remove any spaces and new lines of the first return jsonify({'status': 'success', 'response': response}), 200 except Exception as e: return jsonify({'status': 'error', 'message': str(e)}), 500 @app.route('/send_email', methods=['POST']) def send_email(): try: data = request.get_json() email = data.get('email', 'with.reihan@gmail.com') if not email: return jsonify({'status': 'error', 'message': 'Email is required'}), 400 # Check if the email is valid if not isinstance(email, str) or '@' not in email: return jsonify({'status': 'error', 'message': 'Invalid email format'}), 400 username = email.split('@')[0] date = str(datetime.datetime.now().date()) product = data.get('product', 'NVIDIA-686') price_hour = data.get('price_hour', '2.00') price = data.get('price', '147.00') html = f""" VertexGPU Invoice
VertexGPU
Date Issued: {date} Client ID: VX-CLIENT-686
User: {username}
Description Amount
{product}
1 Month ${price_hour}/hour
${price}
Priority Support Package
1 Month Free
$00.00
Subtotal: ${price}
Network Fee: $0.00
Total Due: ${price}

GPU Status Update

Your GPU instance is being initialized and will be ready for access within the next 2 hours. Once configuration is complete, we'll send your authentication credentials to your registered email address.

For any assistance, our support team is available 24/7. Thank you for choosing our service.

""" # Send email using Resend params: resend.Emails.SendParams = { "from": "Vertex (no-reply) ", "to": [email], "subject": "Thanks for purchasing our product!", "html": html, } resend.Emails.send(params) # Fetch user details from the database cred = supabase.table('vertexgpu-cred').select('username, password').eq('taken', False).eq('gpu', product).order('id').execute() if cred.data: usernamedb = cred.data[0]['username'] password = cred.data[0]['password'] # Update the credential as taken supabase.table('vertexgpu-cred').update({'taken': True}).eq('username', usernamedb).execute() else: message = f"User {email} tried to purchase {product} but not available." message = f"<@&{DISCORD_ROLE_ID}> {message}" requests.post(DISCORD_WEBHOOK_URL, json={"content": message}) return jsonify({'status': 'error', 'message': 'No available credentials'}), 404 htmltwo = f""" VertexGPU Invoice
VertexGPU
User: {username} Client ID: VX-CLIENT-686
https://gpu.vertexgpu.com
Username: {usernamedb}
Password: {password}

Quick start

  1. Connect to your GPU instance using the provided credentials.
  2. Go to Settings -> Connections (pop-up menu at the top right).
  3. Change your password.
  4. Go back to Home and run your GPU instance!

Your GPU instance is ready to use. You can access it via your browser.

Sincerely,

The VertexGPU Team

For any assistance, our support team is available 24/7. Thank you for choosing our service.

""" params: resend.Emails.SendParams = { "from": "Vertex Console (no-reply) ", "to": [email], "subject": "Your new GPU instance is ready!!", "html": htmltwo, } resend.Emails.send(params) return jsonify({'status': 'success', 'message': 'email sent'}) except Exception as e: message = f"Error: {e}" print(message) return jsonify({'status': 'error', 'message': message}), 500 @app.route('/health') def health(): return jsonify({'status': 'success', 'message': 'ok'}) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)