A real-time email synchronization platform with AI-powered categorization, Elasticsearch search, and Slack/webhook notifications.
- Node.js (v18 or higher) - Download here
- Docker Desktop - Download here
- At least 2 email accounts (Gmail, Outlook, Yahoo, etc.)
You'll need app-specific passwords for your email accounts:
- Go to Google Account Security
- Enable 2-Step Verification (if not already enabled)
- Go to App Passwords
- Select Mail and Other (Custom name)
- Name it "ReachInBox" and click Generate
- Copy the 16-character password (remove spaces)
- Go to Microsoft Account Security
- Create an app password
- Use
outlook.office365.comas IMAP host, port993
- Go to Yahoo Account Security
- Generate app password
- Use
imap.mail.yahoo.comas IMAP host, port993
cd backend
npm installCopy the example env file and fill in your credentials:
cp .env.example .envNow open .env and fill in:
# Email Account 1
EMAIL_1_ADDRESS=your-email-1@gmail.com
EMAIL_1_PASSWORD=your-16-char-app-password
EMAIL_1_IMAP_HOST=imap.gmail.com
EMAIL_1_IMAP_PORT=993
# Email Account 2
EMAIL_2_ADDRESS=your-email-2@gmail.com
EMAIL_2_PASSWORD=your-16-char-app-password
EMAIL_2_IMAP_HOST=imap.gmail.com
EMAIL_2_IMAP_PORT=993Make sure Docker Desktop is running, then:
# From the project root directory
docker-compose up -dVerify Elasticsearch is running:
curl http://localhost:9200cd backend
npm run devYou should see:
✓ Connected to your-email-1@gmail.com
✓ Connected to your-email-2@gmail.com
✓ Server is running on http://localhost:3001
👀 Watching for new emails in real-time...
curl http://localhost:3001/api/healthcurl http://localhost:3001/api/sync/statuscurl http://localhost:3001/api/emails- Keep the backend running
- Send a NEW email to one of your configured accounts
- Watch the console - you should see the new email notification
- Check the API again to see your new email
- At least 2 email accounts configured in
.env - Docker Desktop running with Elasticsearch container
- Backend server starts without errors
- All accounts show "connected: true" in
/api/health - Emails from last 30 days are synced
- Real-time sync works (send test email and see it appear)
- API endpoints return expected data
| Endpoint | Method | Description |
|---|---|---|
/api/health |
GET | Health check & connection status |
/api/sync/status |
GET | Detailed sync status |
/api/emails |
GET | Get all emails (paginated) |
/api/emails?account=email@example.com |
GET | Filter by account |
/api/emails/:id |
GET | Get single email by ID |
/api/accounts |
GET | List all configured accounts |