Free disposable phone numbers for developers. Like Yopmail, but for SMS.
- Select phone numbers from multiple countries (US, UK, Canada, Germany, etc.)
- Receive SMS messages and OTPs in real-time
- WebSocket-based live updates - no refresh needed
- REST API for integration with CI/CD pipelines
- Clean, ad-free developer experience
- OTP extraction with one-click copy
- Backend: Node.js, Express, TypeScript, Prisma, Socket.io
- Frontend: React, TypeScript, Vite, Tailwind CSS, TanStack Query
- Database: PostgreSQL, Redis
- SMS Provider: Twilio
- Deployment: Docker, Docker Compose
- Node.js 20+
- Docker and Docker Compose
- Twilio account (for real SMS)
cd devphone
# Install backend dependencies
cd backend && npm install
# Install frontend dependencies
cd ../frontend && npm install# Copy environment files
cp backend/.env.example backend/.envEdit backend/.env with your Twilio credentials:
TWILIO_ACCOUNT_SID=ACxxxxxx
TWILIO_AUTH_TOKEN=xxxxxxdocker-compose up -d postgres rediscd backend
# Generate Prisma client
npx prisma generate
# Run migrations
npx prisma migrate dev --name init
# Seed sample data
npx prisma db seedTerminal 1 - Backend:
cd backend && npm run devTerminal 2 - Frontend:
cd frontend && npm run devVisit http://localhost:5173
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/countries |
List available countries |
| GET | /api/v1/numbers/:countryCode |
Get numbers for a country |
| GET | /api/v1/numbers/:numberId/messages |
Get messages for a number |
| POST | /webhooks/sms |
Twilio SMS webhook |
watch_number- Subscribe to a phone number's messagesunwatch_number- Unsubscribe from messages
new_message- New SMS receivedmessage_received- Global message notification
# Set environment variables
export TWILIO_ACCOUNT_SID=ACxxxxxx
export TWILIO_AUTH_TOKEN=xxxxxx
export BASE_URL=https://your-domain.com
export FRONTEND_URL=https://your-domain.com
# Build and run
docker-compose up -dConfigure your Twilio phone numbers to send webhooks to:
- SMS URL:
https://your-domain.com/webhooks/sms - Method: POST
# Seed countries
npx ts-node scripts/seed-countries.ts
# Provision numbers from Twilio
npx ts-node scripts/provision-numbers.ts
# Clean up expired messages
npx ts-node scripts/cleanup-expired.tsdevphone/
├── backend/ # Node.js API server
│ ├── src/
│ │ ├── controllers/ # Route handlers
│ │ ├── services/ # Business logic
│ │ ├── routes/ # API routes
│ │ ├── middleware/ # Express middleware
│ │ └── websocket/ # Socket.io setup
│ └── prisma/ # Database schema
├── frontend/ # React application
│ └── src/
│ ├── components/ # UI components
│ ├── pages/ # Page components
│ ├── hooks/ # Custom hooks
│ └── services/ # API client
└── scripts/ # Utility scripts
MIT