Memecoin Monday community directory.
Memescope Monday
The community directory for Memescope Monday.
Submit, discover, and upvote memecoins across Solana, Base, and BNB Chain. Every Monday at 10 AM UTC, the community rides together.
Live at: memescope.monday.directory
Features
Directory & Discovery
- Browse memecoins with search, chain filters (Solana/Base/BNB), and sort (votes, trending, newest)
- Existing coins and upcoming launches with launch countdown timers
- Featured and trending sections on the homepage
- Live countdown to the next Memescope Monday (10 AM UTC)
Community
- Upvoting โ one vote per user per coin, most upvoted rise to the top
- Per-coin trollbox chat โ real-time(ish) chat on every coin detail page
- Watchlists โ save coins to your personal watchlist
- User accounts โ email + password auth with session cookies
Market Data & Analysis
- DexScreener chart embeds โ live charts on every existing coin
- Live market data โ price, market cap, liquidity, volume, buy/sell ratio via DexScreener API
- Safety Score (A-F) โ algorithmic risk assessment based on liquidity, trading activity, buy/sell ratio, social presence, pair age, community votes
- Social Buzz Score โ hype level indicator (Dead โ Low โ Moderate โ Hot โ Viral)
- News feed โ per-coin news with sentiment analysis (configurable via free-crypto-news API)
Submit & Monetize
- Submit existing coins or upcoming launches
- Auto-fill from contract address โ paste a contract address or PumpFun URL to auto-populate coin details
- Paid features:
Tech Stack
- Framework: Next.js 14 (App Router)
- Database: SQLite via Turso (libsql) + Drizzle ORM
- Styling: Tailwind CSS
- Auth: Cookie-based sessions, bcrypt password hashing
- APIs: DexScreener (market data), configurable crypto news API
- Deployment: Vercel
Quick Start
Prerequisites
- Node.js 18+
- npm
Local Development
# Clone the repo
git clone https://github.com/nirholas/memescope-monday-directory.git
cd memescope-monday-directory
Install dependencies
npm install
Run dev server (uses local SQLite file)
npm run dev
The app runs at http://localhost:3000 with a local SQLite database that auto-seeds with sample data.
Environment Variables
Copy .env.example to .env.local:
cp .env.example .env.local
| Variable | Required | Description | |----------|----------|-------------| | TURSODATABASEURL | Production | Turso database URL (e.g., libsql://your-db.turso.io) | | TURSOAUTHTOKEN | Production | Turso auth token | | NOWPAYMENTSAPIKEY | No | NOWPayments API key โ crypto payments (200+ coins, no KYC) | | NOWPAYMENTSIPNSECRET | No | NOWPayments IPN secret โ verifies payment callbacks | | STRIPESECRETKEY | No | Stripe secret key โ card payments | | STRIPEWEBHOOKSECRET | No | Stripe webhook signing secret โ verifies payment callbacks | | NEXTPUBLICBASE_URL | No | Site URL (default: https://memescope.monday.directory) | | CRYPTONEWSAPIURL | No | free-crypto-news instance URL | | ADMIN_SECRET | No | Admin password for managing submissions |
Payment providers: Configure one or both. If both are set, users can choose between crypto and card. If neither is set, paid features run in demo mode (applied free).
Deploy to Vercel
1. Create a Turso Database
# Install Turso CLI
curl -sSfL https://get.tur.so/install.sh | bash
Sign up / login
turso auth signup
Create database
turso db create memescope-monday
Get the URL
turso db show memescope-monday --url
Create auth token
turso db tokens create memescope-monday
2. Deploy
# Install Vercel CLI
npm i -g vercel
Deploy
vercel
Set environment variables
vercel env add TURSODATABASEURL
vercel env add TURSOAUTHTOKEN
Deploy to production
vercel --prod
Or connect the GitHub repo to Vercel and add the env vars in the Vercel dashboard.
One-Click Deploy
Project Structure
src/
โโโ app/
โ โโโ page.tsx # Homepage (countdown, featured, trending, upcoming)
โ โโโ coins/
โ โ โโโ page.tsx # Browse directory (search, filter, sort)
โ โ โโโ [slug]/page.tsx # Coin detail (chart, market data, scores, chat)
โ โโโ submit/page.tsx # Submit form (auto-fill, paid features)
โ โโโ login/page.tsx # Sign in
โ โโโ register/page.tsx # Create account
โ โโโ profile/page.tsx # User profile
โ โโโ watchlist/page.tsx # Saved coins
โ โโโ api/
โ โโโ auth/ # Register, login, logout, me
โ โโโ coins/ # List, upvote, chat
โ โโโ watchlist/ # Add, remove, check
โ โโโ submit/ # Submit new coin
โ โโโ checkout/ # Paid features
โ โโโ news/ # News proxy
โ โโโ token-data/ # DexScreener proxy
โโโ components/
โ โโโ Header.tsx # Nav with auth state
โ โโโ Footer.tsx # Footer
โ โโโ CoinCard.tsx # Coin listing card with upvotes
โ โโโ UpvoteButton.tsx # Auth-gated voting
โ โโโ WatchlistButton.tsx # Save to watchlist
โ โโโ ChartEmbed.tsx # DexScreener iframe
โ โโโ MarketData.tsx # Live price/volume/liquidity
โ โโโ SafetyScore.tsx # A-F safety grade
โ โโโ SocialBuzz.tsx # Hype level indicator
โ โโโ NewsFeed.tsx # Per-coin news
โ โโโ CoinChat.tsx # Trollbox
โ โโโ CountdownTimer.tsx # Monday 10 AM UTC countdown
โ โโโ LaunchCountdown.tsx # Upcoming launch timer
โ โโโ AutoFillAddress.tsx # Contract address auto-fill
โ โโโ PaidFeatures.tsx # Expedited/trending purchase
โ โโโ SubmitForm.tsx # Full submit form
โ โโโ SearchBar.tsx # Search input
โ โโโ ChainFilter.tsx # Chain filter pills
โ โโโ SortSelect.tsx # Sort dropdown
โ โโโ ChainBadge.tsx # Chain label badge
โ โโโ AuthProvider.tsx # Auth context
โโโ lib/
โโโ db/
โ โโโ schema.ts # Drizzle schema (6 tables)
โ โโโ index.ts # DB connection (Turso/local)
โ โโโ seed.ts # Seed data
โโโ data.ts # All database queries
โโโ auth.ts # Auth (register, login, sessions)
โโโ types.ts # TypeScript types + constants
โโโ utils.ts # Utilities
โโโ dexscreener.ts # DexScreener API client
โโโ news.ts # News feed service
โโโ scoring.ts # Safety score + social buzz algorithms
Database Schema
| Table | Purpose | |-------|---------| | users | Email, username, bcrypt password hash | | sessions | Token-based auth, 30-day expiry | | coins | All listings with full metadata | | votes | One vote per user per coin | | watchlist | Per-user saved coins | | chat_messages | Per-coin trollbox messages |
12 indexes for search and filter performance.
API Routes
| Method | Route | Auth | Description | |--------|-------|------|-------------| | POST | /api/auth/register | No | Create account | | POST | /api/auth/login | No | Sign in | | POST | /api/auth/logout | Yes | Sign out | | GET | /api/auth/me | Yes | Get current user | | GET | /api/coins | No | List coins (filter by chain, search) | | POST | /api/coins/[slug]/upvote | Yes | Upvote a coin | | GET | /api/coins/[slug]/chat | No | Get chat messages | | POST | /api/coins/[slug]/chat | No | Send chat message (username used if logged in) | | POST | /api/submit | No | Submit a new coin | | GET | /api/checkout | No | List available payment providers | | POST | /api/checkout | No | Create checkout (NOWPayments / Stripe / demo) | | POST | /api/webhooks/nowpayments | No | NOWPayments IPN callback | | POST | /api/webhooks/stripe | No | Stripe webhook callback | | GET | /api/watchlist | Yes | Get user's watchlist | | POST | /api/watchlist | Yes | Add/remove from watchlist | | GET | /api/watchlist/check | Yes | Check if coin is in watchlist | | GET | /api/news?q= | No | Fetch coin news | | GET | /api/token-data?address= | No | Fetch market data from DexScreener |
Integrations
DexScreener
Live market data and chart embeds. No API key needed. Auto-maps chains:- Solana โ
solana - Base โ
base - BNB Chain โ
bsc
free-crypto-news
Optional news feed integration. Deploy your own instance from github.com/nirholas/free-crypto-news and setCRYPTONEWSAPIURL.
Payments
- NOWPayments โ set
NOWPAYMENTSAPIKEY+NOWPAYMENTSIPNSECRETfor crypto payments (SOL, BTC, ETH, USDC, 200+ coins). No KYC. Webhook:/api/webhooks/nowpayments - Stripe โ set
STRIPESECRETKEY+STRIPEWEBHOOKSECRETfor card payments. Webhook:/api/webhooks/stripe - Both โ if both are configured, users choose between crypto and card at checkout
- Neither โ paid features run in demo mode (applied immediately without payment)
Scripts
npm run dev # Start dev server
npm run build # Production build
npm run start # Start production server
npm run lint # Lint with Next.js ESLint
License
MIT