fix readme
This commit is contained in:
parent
f240b96847
commit
2663850019
3 changed files with 28 additions and 295 deletions
315
README.md
315
README.md
|
|
@ -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
|
## 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
|
|
||||||
|
|
||||||
## Tech Stack
|
## Setup
|
||||||
|
|
||||||
- **Frontend**: SvelteKit + Svelte 5 with runes
|
1. Copy the environment file:
|
||||||
- **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
|
```bash
|
||||||
cp website/.env.example website/.env
|
cp website/.env.example website/.env
|
||||||
# Edit website/.env with your actual values (see Configuration section)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Deploy**:
|
2. Edit `website/.env` with your actual values.
|
||||||
|
|
||||||
|
3. Start with Docker (recommended):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
chmod +x build.sh
|
|
||||||
./build.sh
|
./build.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
The application will be available at:
|
4. The app will be available at http://localhost:3002
|
||||||
- **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
|
## Development
|
||||||
|
|
||||||
### Local Development
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Start only database and redis
|
|
||||||
docker compose up -d postgres redis
|
|
||||||
|
|
||||||
# Install dependencies and run main app
|
|
||||||
cd website
|
cd website
|
||||||
npm install
|
npm install
|
||||||
npm run dev
|
npm run dev
|
||||||
|
|
||||||
# Run websocket server (in separate terminal)
|
|
||||||
cd website/websocket
|
|
||||||
bun install
|
|
||||||
bun run src/main.ts
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Database Management
|
The development server runs on http://localhost:5173
|
||||||
|
|
||||||
```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
|
## License
|
||||||
|
|
||||||
[Add your license here]
|
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.
|
||||||
|
|
||||||
## 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
|
|
||||||
BIN
github_assets/preview.png
Normal file
BIN
github_assets/preview.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 174 KiB |
BIN
github_assets/preview2.png
Normal file
BIN
github_assets/preview2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 128 KiB |
Reference in a new issue