fix readme

This commit is contained in:
Face 2025-05-31 22:32:19 +03:00
parent f240b96847
commit 2663850019
3 changed files with 28 additions and 295 deletions

323
README.md
View file

@ -1,318 +1,51 @@
# Rugplay
<img style="width: 128px; height: 128px" src="website/static/favicon.svg" /><h1 style="font-size: 48px"><a href="https://rugplay.com">Rugplay.com</a> - the fake crypto simulator.</h1>
A realistic cryptocurrency trading simulation platform built with SvelteKit and Svelte 5, focusing on decentralized exchange mechanics and the inherent risks of "rug pulls."
[Privacy Policy](https://rugplay.com/legal/privacy) | [Terms of Service](https://rugplay.com/legal/terms) | [License](LICENSE) | [YouTube video](https://rugplay.com)
## About
Rugplay is a realistic cryptocurrency trading simulator that lets you experience the risks and mechanics of decentralized exchanges without real financial consequences. Create coins, trade with liquidity pools, and learn about "rug pulls" in a... relatively safe environment :)
## Features
- 🪙 Create coins
- 🟢 Buy coins
- 🔴 Sell coins
- ⚖️ Bet on questions (similar to Polymarket)
- 🎲 Gamble it all
- 📊 View a Treemap graph of the entire market
- 🏆 Compete on leaderboards
- **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
![Preview 2](github_assets/preview2.png)
![Preview](github_assets/preview.png)
## Tech Stack
## Setup
- **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
1. Copy the environment file:
## Pre-Deployment Checklist
```bash
cp website/.env.example website/.env
```
Before running on your Linux machine, ensure:
2. Edit `website/.env` with your actual values.
- [ ] **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
3. Start with Docker (recommended):
### Essential Environment Variables
```bash
./build.sh
```
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
4. The app will be available at http://localhost:3002
## 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
The development server runs on http://localhost:5173
## 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
This project is licensed under the **Creative Commons Attribution-NonCommercial 4.0 International** License (**CC BY-NC 4.0**). See the [LICENSE](LICENSE) file for details.