Experience the power of Airbyte's Embedded Widget in action!
This is a Turborepo-powered monorepo containing the Airbyte Embedded Widget demo with multiple frontend implementations:
- Vanilla JavaScript + Server
- React
- Next.js
# Clone and install dependencies for all apps
git clone https://github.com/airbytehq/embedded-demoapp.git
cd embedded-demoapp
npm install
# Configure server environment
cd apps/server
cp .env.example .env
# Edit .env with your credentials# From root directory - starts all apps simultaneously
npm run devโ Server & Vanilla JS: http://localhost:3000
โ Next.js: http://localhost:3001
โ React: http://localhost:3002
# Run only the server
npm run dev --filter=@airbyte-demoapp/server
# Run only React app
npm run dev --filter=@airbyte-demoapp/reactjs
# Run only Next.js app
npm run dev --filter=@airbyte-demoapp/nextjs- ๐ Enter Demo Password: Protects the demo from public access
- ๐ค Create User Account: Simple email-based authentication
- ๐ Connect Your Data: Launch the Airbyte Embedded Widget
- Contact Airbyte: Reach out to [email protected] or [email protected] for Embedded access
- Get Your Keys: You'll receive your organization ID, client ID, and client secret
- Update Config: Add them to your
.envfile:
# server/.env
SONAR_AIRBYTE_WEBAPP_PASSWORD=your_demo_password
SONAR_AIRBYTE_ALLOWED_ORIGIN=http://localhost:3000
SONAR_AIRBYTE_ORGANIZATION_ID=your_organization_id
SONAR_AIRBYTE_CLIENT_ID=your_client_id
SONAR_AIRBYTE_CLIENT_SECRET=your_client_secret- Node.js 18+ (uses native fetch API)
- Modern browser (Chrome, Firefox, Safari, Edge)
๐ embedded-test/
โโโ ๐ apps/
โ โโโ ๐ง server/ # Express.js backend (@airbyte-demoapp/server)
โ โโโ โ๏ธ reactjs/ # React app (@airbyte-demoapp/reactjs)
โ โโโ ๐ nextjs/ # Next.js app (@airbyte-demoapp/nextjs)
โโโ ๐ packages/ # Shared packages (empty for now)
โโโ ๐ package.json # Root workspace configuration
โโโ ๐ turbo.json # Turborepo configuration
โโโ ๐ README.md # You are here!
npm run dev- Start all apps in developmentnpm run build- Build all apps for productionnpm run lint- Lint all appsnpm run clean- Clean build artifacts and node_modulesnpm run test- Run tests across all apps
/* In any version's CSS file */
:root {
--accent-primary: #your-brand-color;
--bg-primary: #your-background;
}// Replace octavia-sonar.png with your logo
<img src="/your-logo.png" alt="Your Brand" className="logo" />Deploy the server with one-click button (includes environment variable setup):
Manual server deploy:
cd apps/server && npx vercelAirbyte Configuration:
SONAR_AIRBYTE_WEBAPP_PASSWORD=your_demo_password
SONAR_AIRBYTE_ALLOWED_ORIGIN=https://your-deployed-app.vercel.app
SONAR_AIRBYTE_ORGANIZATION_ID=your_organization_id
SONAR_AIRBYTE_CLIENT_ID=your_client_id
SONAR_AIRBYTE_CLIENT_SECRET=your_client_secretOptional Services:
# Redis for user session persistence (optional - falls back to local filesystem)
REDIS_URL=redis://your-redis-url๐ก Tip: The one-click Vercel button above will prompt you to enter all these variables during deployment!
- ๐ง Server documentation:
apps/server/README.md - โ๏ธ React documentation:
apps/nextjs/README.md - ๐ Next.js documentation:
apps/reactjs/README.md
Found a bug? Want to add a feature? PRs welcome!
- Fork the repo
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Technical Issues: Open a GitHub issue
- Airbyte Embedded Access: Reach out to [email protected] or [email protected]
- General Questions: Check the Airbyte Documentation
๐ Happy data moving! Built with โค๏ธ by the Airbyte team.