A vibe coding platform for creating native mobile apps using Expo and AI coding agents.
Turn your ideas into real iOS and Android apps through natural conversation with AI. No technical knowledge required.
π Live Demo: appily.dev
- π¨ Visual App Builder - Create mobile apps through chat-based interface
- π± Native Mobile Apps - Build real iOS & Android apps with Expo/React Native
- π€ AI-Powered Coding - Claude AI generates code based on your descriptions
- β‘ Live Preview - Scan QR code with Expo Go to preview your app instantly
- πΎ Project Management - Save, edit, and manage multiple app projects
- π Secure & Private - Your projects are protected with row-level security
- Framework: Next.js 16 (App Router, React 19)
- Authentication: Clerk with Google OAuth
- Database: Supabase with PostgreSQL
- UI Components: Shadcn UI + TailwindCSS v4
- Code Execution: E2B sandboxed environments
- Code Editor: Monaco Editor (VSCode-like)
- AI: Claude via Anthropic API (coming soon)
- Deployment: Vercel
- Node.js 18+ and npm
- A Clerk account (free tier available)
- A Supabase project (free tier available)
- An E2B API key (free tier available)
git clone https://github.com/yourusername/appily.git
cd appily
npm installCopy the example environment file:
cp .env.example .env.localFill in your environment variables:
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_...
CLERK_SECRET_KEY=sk_test_...
# Clerk URLs
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/home
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/home
# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_service_role_key
# E2B Code Interpreter (Server-side only)
E2B_API_KEY=your_e2b_api_key
# Clerk Webhook (Add after deployment)
CLERK_WEBHOOK_SECRET=whsec_...The project uses Supabase for data storage. Run the migrations:
# Install Supabase CLI (if you haven't already)
npm install -g supabase
# Link to your Supabase project
supabase link --project-ref your-project-ref
# Push migrations
supabase db pushOr manually run the SQL from supabase/migrations/ in your Supabase SQL Editor.
- Go to Clerk Dashboard β Webhooks
- Click Add Endpoint
- Enter your webhook URL:
http://localhost:3000/api/webhooks/clerk(for local dev) - Subscribe to events:
user.created,user.updated - Copy the Signing Secret and add to
.env.local:CLERK_WEBHOOK_SECRET=whsec_...
npm run devOpen http://localhost:3000 to see the app!
appily-web/
βββ app/
β βββ (marketing)/ # Public landing page
β βββ (auth)/ # Clerk sign-in/sign-up pages
β βββ (app)/ # Authenticated app routes
β β βββ home/
β β βββ page.tsx # Project list
β β βββ projects/[id] # Coding interface
β βββ api/
β βββ sandbox/ # E2B sandbox management
β βββ webhooks/ # Clerk user sync
βββ components/ # React components
β βββ ui/ # Shadcn UI components
β βββ project-*.tsx # Project management
β βββ chat-panel.tsx # AI chat interface
β βββ preview-panel.tsx # QR code + preview
β βββ code-editor.tsx # Monaco editor
βββ lib/
β βββ supabase.ts # Supabase client (client-side)
β βββ supabase-admin.ts # Supabase admin (server-side)
β βββ e2b.ts # E2B sandbox utilities
βββ supabase/
β βββ migrations/ # Database schema migrations
βββ proxy.ts # Next.js 16 auth middleware
users
id(uuid, PK)clerk_id(text, unique) - Synced from Clerkemail,first_name,last_name,avatar_urlcreated_at,updated_at
projects
id(uuid, PK)user_id(uuid, FK to users)name(text) - App namee2b_sandbox_id(text, nullable) - Active sandboxcreated_at,updated_at
All tables have Row-Level Security (RLS) enabled for user isolation.
- Never commit
.env.local- It's in.gitignorefor a reason! - E2B API key is server-side only (no
NEXT_PUBLIC_prefix) - Supabase Service Role Key is only used in API routes
- Clerk Webhook Secret must be configured for production
- Click the button above or connect your GitHub repo to Vercel
- Add all environment variables from
.env.example - Deploy!
-
Update Clerk Webhook URL:
- Clerk Dashboard β Webhooks β Edit endpoint
- Change URL to:
https://your-app.vercel.app/api/webhooks/clerk
-
Add Environment Variables to Vercel:
- Vercel Dashboard β Settings β Environment Variables
- Add all variables from
.env.example - Important: Add
CLERK_WEBHOOK_SECRETfrom Clerk Dashboard
-
Redeploy after adding environment variables
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint- Beautiful, responsive landing page
- Dark mode support
- Clerk authentication integration
- Authenticated layout with sidebar
- User profile + dark mode toggle
- Auto-generated breadcrumbs
- Clerk β Supabase user sync
- Create and manage app projects
- 3-panel coding interface (chat, preview, code)
- E2B sandbox integration
- Monaco code editor
- Debug panel for E2B monitoring
- Claude AI chat interface
- Natural language β code generation
- Real-time code updates
- QR code generation for Expo preview
- Live app preview in browser
- Expo project scaffolding
- File system sync with E2B
- Code export & download
- Template library
- Collaborative editing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- 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
This project is open source and available under the MIT License.
- Built with Next.js
- UI components by Shadcn
- Authentication by Clerk
- Database by Supabase
- Code execution by E2B
- AI by Anthropic Claude
- Documentation: Check
/ai-agents-documents/for detailed docs - Issues: GitHub Issues
- Website: appily.dev
Made with β€οΈ and AI