A gamified, on-chain messaging app where gossip meets Web3
Chat, tip friends, join exclusive rooms, and level upβall with near-zero gas fees on BNB, Celo, and Base.
π Live App: www.gaslessgossip.com
π Docs: [Coming Soon]
π¬ Discord: [Join Community]
- π¬ Chat & Earn: Send messages and earn XP
- π° Tip in Chats: Reward users with tokens (2% platform fee)
- π Token-Gated Rooms: Create paid or invite-only rooms
- π P2P Transfers: Send tokens to friends (no fees!)
- π Level Up: Complete quests, earn badges, climb leaderboards
- β±οΈ Timed Rooms: Ephemeral chats that auto-delete
- Node.js 18+
- Docker Desktop (Download) OR PostgreSQL 14+
- Flutter 3.x (for mobile, optional)
- EVM-compatible wallet (MetaMask, Celo Wallet, etc.)
Fastest way to get started! Docker handles PostgreSQL and Redis automatically.
# 1. Clone & navigate
git clone https://github.com/Rub-a-Dab-Dub/gasless_gossip.git
cd gasless_gossip
# 2. Install dependencies and setup environment files
npm run setup
# 3. Update environment variables
# Edit api/.env with your chain credentials
# - EVM_RPC_URL
# - EVM_ACCOUNT_ADDRESS
# - EVM_PRIVATE_KEY
# - EVM_CONTRACT_ADDRESS
# - JWT_SECRET (generate a secure random string)
# 4. Start Docker services (PostgreSQL + Redis)
npm run docker:start
# 5. Start development servers (API + Web)
npm run devDone! π
- API runs on
http://localhost:3001 - Web runs on
http://localhost:3000 - PostgreSQL on
localhost:5432 - Redis on
localhost:6379
See DOCKER_SETUP.md for detailed Docker documentation.
If you prefer installing PostgreSQL manually:
git clone https://github.com/Rub-a-Dab-Dub/gasless_gossip.git
cd gasless_gossip# Install PostgreSQL (macOS)
brew install postgresql@14
brew services start postgresql@14
# Create database
psql -U postgres << EOF
CREATE DATABASE gasless;
CREATE USER gasless_user WITH PASSWORD 'your_secure_password';
GRANT ALL PRIVILEGES ON DATABASE gasless TO gasless_user;
\q
EOFcd api
npm install
# Create .env file
cat > .env << EOF
# Database
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_USER=gasless_user
DATABASE_PASS=your_secure_password
DATABASE_NAME=gasless
# EVM Chain (BNB, Celo, Base)
EVM_RPC_URL=https://rpc-url-for-your-chain
EVM_ACCOUNT_ADDRESS=your_account_address
EVM_PRIVATE_KEY=your_private_key
EVM_CONTRACT_ADDRESS=your_deployed_contract
EVM_NETWORK=base # or bnb, celo
# Auth
JWT_SECRET=your_jwt_secret_minimum_32_chars
JWT_EXPIRES_IN=7d
# Server
PORT=3001
NODE_ENV=development
EOF
# Start backend
npm run start:devBackend runs on http://localhost:3001
cd ../web
npm install
# Create .env.local
cat > .env.local << EOF
NEXT_PUBLIC_API_URL=http://localhost:3001
NEXT_PUBLIC_EVM_NETWORK=base # or bnb, celo
EOF
# Start web app
npm run devWeb app runs on http://localhost:3000
cd ../mobile
flutter pub get
# Install Stacked CLI
dart pub global activate stacked_cli
# Run on iOS/Android
flutter runnpm run dev # Start both API and Web (concurrent)
npm run docker:start # Start PostgreSQL & Redis containersnpm run docker:start # Start Docker services
npm run docker:stop # Stop Docker services (keeps data)
npm run docker:restart # Restart Docker services
npm run docker:logs # View live container logs
npm run docker:clean # Stop and remove all data (fresh start)npm run dev:api # Start only API server
npm run dev:web # Start only Web servernpm run build # Build both API and Web
npm run build:api # Build only API
npm run build:web # Build only Webnpm run test # Run all tests
npm run test:api # Run API tests
npm run test:web # Run Web tests
npm run test:e2e # Run E2E testsnpm run lint # Lint all code
npm run lint:api # Lint API only
npm run lint:web # Lint Web onlynpm run setup # Setup environment files
npm run db:clear # Clear database (destructive!)
npm run clean # Remove node_modules and builds
npm run fresh # Clean + reinstall everythingβββββββββββββββββββββββββββββββββββββββββββββββββββ
β Frontend β
β ββββββββββββ ββββββββββββ ββββββββββββ β
β β Next.js β β Flutter β β Telegram β β
β β Web β β Mobile β β Bot β β
β ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ β
βββββββββΌββββββββββββββΌββββββββββββββΌβββββββββββββ
β β β
βββββββββββββββΌββββββββββββββ
β
βββββββββββββββββββββββΌββββββββββββββββββββββββββ
β NestJS Backend (3001) β
β β’ REST API β’ WebSockets β’ Bull Queues β
β β’ PostgreSQL β’ JWT Auth β’ IPFS/Arweave β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββ
β
βββββββββββββββββββββββΌββββββββββββββββββββββββββ
β EVM Chains: BNB, Celo, Base β
β β’ GGPay Contract (payments) β
β β’ Account Abstraction (gasless) β
β β’ Session Keys (auto-approve) β
βββββββββββββββββββββββββββββββββββββββββββββββββ
gasless_gossip/
βββ api/ # NestJS backend
β βββ src/
β β βββ auth/ # JWT authentication
β β βββ users/ # User management
β β βββ rooms/ # Room logic
β β βββ contracts/ # EVM integration
β β βββ wallets/ # Wallet creation queue
β βββ package.json
β
βββ web/ # Next.js web app
β βββ app/ # App router pages
β βββ components/ # React components
β βββ lib/ # Utilities
β
βββ mobile/ # Flutter mobile app
β βββ lib/
β β βββ ui/ # Stacked views
β β βββ services/ # Business logic
β β βββ models/ # Data models
β βββ pubspec.yaml
β
βββ contract/ # Smart contracts
βββ evm/ # Solidity contracts for BNB, Celo, Base
β βββ GGPay.sol
β βββ tests/
cd api
npm run test # Unit tests
npm run test:e2e # E2E tests
npm run test:cov # Coveragecd contract/evm
npx hardhat test # Run all tests
npx hardhat test test_tip_user.js # Run specific testcd web
npm run test # Jest tests
npm run test:e2e # Playwright E2EWe welcome contributions! Here's how to get started:
# Fork on GitHub, then:
git clone https://github.com/YOUR_USERNAME/gasless_gossip.git
cd gasless_gossip
git remote add upstream https://github.com/Rub-a-Dab-Dub/gasless_gossip.gitgit checkout -b feature/your-feature-name
# Examples:
# - feature/add-room-reactions
# - fix/tip-calculation-bug
# - docs/improve-setup-guide- Follow existing code style (ESLint/Prettier for TS, Solidity formatting for contracts)
- Write tests for new features
- Update documentation if needed
# Backend
cd api && npm run test && npm run lint
# Web
cd web && npm run build && npm run lint
# Contracts
cd contract/evm && npx hardhat testgit add .
git commit -m "feat: add room reaction feature"
# Commit message format: type(scope): description
# Types: feat, fix, docs, style, refactor, test, chore
git push origin feature/your-feature-name- Go to GitHub and open a PR from your fork
- Fill in the PR template (describe changes, link issues)
- Wait for review from maintainers
- Code Style: Run
npm run lintbefore committing - Commits: Use Conventional Commits
- Testing: Aim for 80%+ coverage on new code
- Documentation: Update README/docs for user-facing changes
Look for issues tagged good-first-issue or help-wanted:
Users never pay gas fees. The backend's paymaster account sponsors all transactions using session keys.
Send tokens in chats with a 2% platform fee. Tips are instant and on-chain.
Creators can set token-gated rooms. Platform takes 2%, creator gets 98%.
- Send message: +10 XP
- Create room: +50 XP
- Tip user: +20 XP
- Level up every 1000 XP
| Layer | Technology | Purpose |
|---|---|---|
| Frontend Web | Next.js 14, TypeScript, TailwindCSS | Responsive web interface |
| Frontend Mobile | Flutter 3.x, web3dart | iOS/Android apps |
| Backend | NestJS, TypeORM, Bull | REST API, WebSockets, queues |
| Database | PostgreSQL 14+ | User data, messages, rooms |
| Blockchain | BNB, Celo, Base (Solidity) | Payment contracts |
| Storage | IPFS/Arweave | Media files (hashed on-chain) |
| Auth | JWT, session keys | Gasless transactions |
# Required
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_USER=gasless_user
DATABASE_PASS=your_password
DATABASE_NAME=gasless
EVM_RPC_URL=https://rpc-url-for-your-chain
EVM_ACCOUNT_ADDRESS=0x...
EVM_PRIVATE_KEY=0x...
EVM_CONTRACT_ADDRESS=0x...
JWT_SECRET=minimum_32_character_secret
# Optional
PORT=3001
NODE_ENV=development
MAX_RETRIES=3
RETRY_DELAY_MS=2000NEXT_PUBLIC_API_URL=http://localhost:3001
NEXT_PUBLIC_EVM_NETWORK=base # or bnb, celoPort 5432 already in use:
# Stop local PostgreSQL
brew services stop postgresql@14 # macOS
sudo systemctl stop postgresql # LinuxContainers won't start:
npm run docker:logs # Check logs
npm run docker:clean # Reset everything
npm run docker:start # Start freshDatabase connection refused:
# Wait for PostgreSQL to be ready
npm run docker:logs # Look for "database system is ready"- Check PostgreSQL is running:
brew services list - Verify database exists:
psql -U postgres -l - Check
.envfile has all required variables
- Check contract address is correct
- Verify RPC URL is responsive
- Run
flutter doctorto check dependencies - Clear build cache:
flutter clean && flutter pub get - For iOS:
cd ios && pod install
- Check backend is running on port 3001
- Verify
NEXT_PUBLIC_API_URLmatches backend URL
MIT License - see LICENSE file for details
- BNB Chain, Celo, and Base for blockchain infrastructure
- OpenZeppelin for secure contract libraries
- NestJS team for excellent backend framework
- Website: www.gaslessgossip.com
- GitHub: Rub-a-Dab-Dub/gasless_gossip
- Twitter: @gaslessgossip
- Telegram: Join Group
- Discord: Join Server
Built with β€οΈ by the Gasless Gossip team