quick production test script

This commit is contained in:
Face 2025-05-30 12:24:21 +03:00
parent 735ca3d8c6
commit 1e44c7db7a
7 changed files with 562 additions and 2 deletions

318
README.md Normal file
View file

@ -0,0 +1,318 @@
# Rugplay
A realistic cryptocurrency trading simulation platform built with SvelteKit and Svelte 5, focusing on decentralized exchange mechanics and the inherent risks of "rug pulls."
## Features
- **Coin Creation**: Create simulated cryptocurrencies with customizable parameters
- **Liquidity Pools**: AMM-based trading with realistic price mechanics and slippage
- **Trading**: Buy/sell coins against base currency (*BUSS) with supply/demand pricing
- **Rug Pull Simulation**: Experience realistic market crashes when large holders sell
- **Portfolio Tracking**: Monitor holdings and transaction history
- **Real-time Updates**: WebSocket-powered live price feeds and trade notifications
- **Prediction Markets**: "Hopium" betting system for market predictions
- **Gambling**: Coinflip and slots games
- **Leaderboards**: Track top performers
## Tech Stack
- **Frontend**: SvelteKit + Svelte 5 with runes
- **Backend**: Node.js API routes
- **WebSocket**: Bun-based real-time server
- **Database**: PostgreSQL with Drizzle ORM
- **Cache**: Redis for real-time messaging
- **Storage**: AWS S3/Backblaze B2 compatible
- **Auth**: Better Auth with Google OAuth
- **UI**: ShadCN UI components + Tailwind CSS
## Pre-Deployment Checklist
Before running on your Linux machine, ensure:
- [ ] **Docker & Docker Compose installed**: `docker --version && docker compose version`
- [ ] **Ports available**: 3002, 8081, 5432, 6379 are not in use
- [ ] **Git access**: Repository is cloned with all files
- [ ] **Environment configured**: `website/.env` file created from `website/.env.example`
- [ ] **Permissions set**: `chmod +x build.sh` executed
- [ ] **Minimum system requirements**: 2GB RAM, 10GB disk space
### Essential Environment Variables
The following must be configured in `website/.env`:
```bash
# Required for database connection
DATABASE_URL=postgresql://rugplay_user:your_secure_password@postgres:5432/rugplay
POSTGRES_USER=rugplay_user
POSTGRES_PASSWORD=your_secure_password
POSTGRES_DB=rugplay
# Required for real-time features
REDIS_URL=redis://redis:6379
# Required for authentication (generate a 32+ character random string)
PRIVATE_BETTER_AUTH_SECRET=your_super_secret_auth_key_minimum_32_characters
PUBLIC_BETTER_AUTH_URL=http://localhost:3002
```
## Quick Start
### Prerequisites
- Docker & Docker Compose
- Git
### Installation
1. **Clone the repository**:
```bash
git clone <repository-url>
cd rugplay
```
2. **Configure environment**:
```bash
cp website/.env.example website/.env
# Edit website/.env with your actual values (see Configuration section)
```
3. **Deploy**:
```bash
chmod +x build.sh
./build.sh
```
The application will be available at:
- **Main App**: http://localhost:3002
- **WebSocket**: http://localhost:8081
- **Database**: localhost:5432
- **Redis**: localhost:6379
## Configuration
### Required Environment Variables
Copy `website/.env.example` to `website/.env` and configure:
```bash
# Database Configuration
DATABASE_URL=postgresql://rugplay_user:your_secure_password@postgres:5432/rugplay
POSTGRES_USER=rugplay_user
POSTGRES_PASSWORD=your_secure_password
POSTGRES_DB=rugplay
# Redis Configuration
REDIS_URL=redis://redis:6379
# Authentication
PRIVATE_BETTER_AUTH_SECRET=your_super_secret_auth_key_minimum_32_chars
PUBLIC_BETTER_AUTH_URL=http://localhost:3002
```
### Optional Environment Variables
```bash
# Google OAuth (for social login)
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# AWS S3/Backblaze B2 Storage (for file uploads)
PRIVATE_B2_KEY_ID=your_b2_key_id
PRIVATE_B2_APP_KEY=your_b2_app_key
PUBLIC_B2_BUCKET=your_bucket_name
PUBLIC_B2_ENDPOINT=https://s3.us-west-002.backblazeb2.com
PUBLIC_B2_REGION=us-west-002
# OpenAI (for AI features)
OPENAI_API_KEY=your_openai_api_key
# Application Settings
NODE_ENV=production
PORT=3000
```
## Architecture
### Services
- **app**: Main SvelteKit application (port 3002)
- **websocket**: Bun-based WebSocket server for real-time features (port 8081)
- **postgres**: PostgreSQL database with pgvector extension
- **redis**: Redis for caching and pub/sub messaging
### Key Components
- **AMM Trading**: Automated Market Maker with constant product formula (x*y=k)
- **Real-time Price Updates**: WebSocket broadcasting for live price feeds
- **Comment System**: Real-time coin discussions
- **Prediction Markets**: AI-resolved betting on future events
- **Portfolio Management**: Track holdings across multiple coins
- **Admin Panel**: Manage promo codes and system settings
## Development
### Local Development
```bash
# Start only database and redis
docker compose up -d postgres redis
# Install dependencies and run main app
cd website
npm install
npm run dev
# Run websocket server (in separate terminal)
cd website/websocket
bun install
bun run src/main.ts
```
### Database Management
```bash
# Run migrations
docker compose exec app npm run db:migrate
# Open Drizzle Studio
docker compose exec app npm run db:studio
# Push schema changes
docker compose exec app npm run db:push
```
## Deployment Commands
### Manual Deployment
```bash
# Build and start all services
docker compose build --no-cache
docker compose up -d
# Check service status
docker compose ps
# View logs
docker compose logs -f
# View specific service logs
docker compose logs -f app
docker compose logs -f websocket
```
### Maintenance
```bash
# Restart all services
docker compose restart
# Stop services
docker compose down
# Clean rebuild (removes volumes - WARNING: deletes data)
docker compose down --volumes --remove-orphans
docker compose build --no-cache
docker compose up -d
# Update and redeploy
git pull
./build.sh
```
## Troubleshooting
### Common Issues
1. **Port conflicts**: Ensure ports 3002, 8081, 5432, 6379 are available
2. **Database connection**: Check DATABASE_URL format and postgres service status
3. **WebSocket issues**: Verify REDIS_URL and redis service connectivity
4. **File uploads**: Confirm S3/B2 credentials and bucket permissions
### Health Checks
```bash
# Check all container status
docker compose ps
# Test main app
curl http://localhost:3002
# Test websocket health
curl http://localhost:8081/health
# Check database connectivity
docker compose exec postgres pg_isready -U rugplay_user
# Check redis connectivity
docker compose exec redis redis-cli ping
```
### Log Analysis
```bash
# Follow all logs
docker compose logs -f
# Application errors
docker compose logs app | grep -i error
# WebSocket logs
docker compose logs websocket
# Database logs
docker compose logs postgres
```
## Production Considerations
### Security
- [ ] Change all default passwords and secrets
- [ ] Use strong PRIVATE_BETTER_AUTH_SECRET (minimum 32 characters)
- [ ] Configure firewall rules for exposed ports
- [ ] Use HTTPS in production (reverse proxy recommended)
- [ ] Rotate API keys and database credentials regularly
### Performance
- [ ] Configure PostgreSQL for your hardware
- [ ] Set up Redis persistence if needed
- [ ] Monitor container resource usage
- [ ] Configure log rotation
- [ ] Set up database connection pooling
### Monitoring
- [ ] Set up health check endpoints
- [ ] Configure log aggregation
- [ ] Monitor database performance
- [ ] Track WebSocket connection metrics
- [ ] Set up alerts for service failures
### Backup Strategy
- [ ] Database backups: `pg_dump` scheduled backups
- [ ] Redis persistence: Configure RDB snapshots
- [ ] File storage: S3/B2 versioning and backup
- [ ] Configuration: Version control for .env files (encrypted)
## Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Test with Docker locally
5. Submit a pull request
## License
[Add your license here]
## Support
For issues and questions:
- Open GitHub issues for bugs
- Check logs first: `docker compose logs -f`
- Verify environment configuration
- Test with clean rebuild if needed