Camwhores.v
export default StreamPage;
// routes/purchases.js const express = require('express'); const router = express.Router(); const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY); const requireAuth = require('../middleware/auth'); const Stream, Purchase = require('../models'); camwhores.v
res.json( checkoutUrl: session.url ); ); export default StreamPage; // routes/purchases
( ?session_id=... )
-- Users table (both viewers and models) CREATE TABLE users ( id BIGSERIAL PRIMARY KEY, email VARCHAR(255) UNIQUE NOT NULL, password_hash VARCHAR(255) NOT NULL, role VARCHAR(20) CHECK (role IN ('viewer','model')) NOT NULL, created_at TIMESTAMP DEFAULT NOW() ); export default StreamPage
router.post('/:streamId', requireAuth, async (req, res) => !stream.is_premium) return res.status(400).json( error: 'Stream not purchasable.' );
load(); , [id]);