Skip to content

papay0/appily-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

167 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Appily

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


✨ Features

  • 🎨 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

πŸš€ Tech Stack


πŸ“¦ Getting Started

Prerequisites

  • Node.js 18+ and npm
  • A Clerk account (free tier available)
  • A Supabase project (free tier available)
  • An E2B API key (free tier available)

1. Clone the Repository

git clone https://github.com/yourusername/appily.git
cd appily
npm install

2. Set Up Environment Variables

Copy the example environment file:

cp .env.example .env.local

Fill 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_...

3. Set Up Supabase Database

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 push

Or manually run the SQL from supabase/migrations/ in your Supabase SQL Editor.

4. Set Up Clerk Webhook (Important!)

  1. Go to Clerk Dashboard β†’ Webhooks
  2. Click Add Endpoint
  3. Enter your webhook URL: http://localhost:3000/api/webhooks/clerk (for local dev)
  4. Subscribe to events: user.created, user.updated
  5. Copy the Signing Secret and add to .env.local:
    CLERK_WEBHOOK_SECRET=whsec_...

5. Run Development Server

npm run dev

Open http://localhost:3000 to see the app!


πŸ—οΈ Project Structure

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

πŸ—„οΈ Database Schema

Tables

users

  • id (uuid, PK)
  • clerk_id (text, unique) - Synced from Clerk
  • email, first_name, last_name, avatar_url
  • created_at, updated_at

projects

  • id (uuid, PK)
  • user_id (uuid, FK to users)
  • name (text) - App name
  • e2b_sandbox_id (text, nullable) - Active sandbox
  • created_at, updated_at

All tables have Row-Level Security (RLS) enabled for user isolation.


πŸ” Security Notes

  • Never commit .env.local - It's in .gitignore for 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

🚒 Deployment

Deploy to Vercel

Deploy with Vercel

  1. Click the button above or connect your GitHub repo to Vercel
  2. Add all environment variables from .env.example
  3. Deploy!

Post-Deployment Steps

  1. Update Clerk Webhook URL:

    • Clerk Dashboard β†’ Webhooks β†’ Edit endpoint
    • Change URL to: https://your-app.vercel.app/api/webhooks/clerk
  2. Add Environment Variables to Vercel:

    • Vercel Dashboard β†’ Settings β†’ Environment Variables
    • Add all variables from .env.example
    • Important: Add CLERK_WEBHOOK_SECRET from Clerk Dashboard
  3. Redeploy after adding environment variables


πŸ› οΈ Development Commands

npm run dev          # Start development server
npm run build        # Build for production
npm run start        # Start production server
npm run lint         # Run ESLint

πŸ“ Milestones & Roadmap

βœ… Milestone 1: Landing Page

  • Beautiful, responsive landing page
  • Dark mode support
  • Clerk authentication integration

βœ… Milestone 2: App Shell

  • Authenticated layout with sidebar
  • User profile + dark mode toggle
  • Auto-generated breadcrumbs
  • Clerk β†’ Supabase user sync

βœ… Milestone 3: Project Management + E2B

  • Create and manage app projects
  • 3-panel coding interface (chat, preview, code)
  • E2B sandbox integration
  • Monaco code editor
  • Debug panel for E2B monitoring

🚧 Milestone 4: AI Chat Integration (In Progress)

  • Claude AI chat interface
  • Natural language β†’ code generation
  • Real-time code updates

πŸ”œ Upcoming Features

  • 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

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

πŸ“„ License

This project is open source and available under the MIT License.


πŸ™ Acknowledgments


πŸ“§ Support


Made with ❀️ and AI

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors