Transform your memories into immersive AR experiences with AI magic!
ARtisan is an innovative Augmented Reality creative studio that transforms user-uploaded photos into interactive, explorable AR spaces. Features a real-time "Doodle to Life" imagination compiler and dynamically composed AI soundtracks for a deeply personal artistic journey.
- 📸 Photo to AR Scene: Upload any photo and watch as AI transforms it into an immersive 3D environment
- ✨ Doodle to Life: Create objects through sketching, text descriptions, or photos - they instantly appear in your AR scene
- 🎵 AI-Composed Soundtrack: Dynamic music that adapts to your scene's mood and content
- 🎮 Interactive Navigation: Explore your AR space with WASD + mouse controls
- ⚡ Real-time Updates: All changes sync instantly across your experience
- Next.js 14 (App Router)
- React Three Fiber & Drei (3D rendering)
- Tailwind CSS (styling)
- React Sketch Canvas (drawing)
- Convex.dev: Real-time API & state synchronization
- Supabase: Database & asset storage
- Gemini 2.5 Flash: Image analysis & object interpretation
- fal.ai: 3D model & environment generation
- ElevenLabs: Dynamic soundtrack generation
- Groq: Fast LLM inference for scene analysis
- Manus AI: Workflow orchestration
- Mem0.ai: Persistent user memory
- Node.js 18+ installed
- npm or yarn package manager
- Accounts for all sponsor services (see below)
cd artisan
npm installCreate a .env.local file in the root directory with your API keys:
# Convex (run: npx convex dev to get this)
NEXT_PUBLIC_CONVEX_URL=
# Supabase
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
# AI Services
FAL_KEY=
GOOGLE_AI_API_KEY=
GROQ_API_KEY=
ELEVENLABS_API_KEY=
MANUS_API_KEY=
MEM0_API_KEY=
# Optional
NEXT_PUBLIC_APP_URL=http://localhost:3000npx convex devThis will:
- Create your Convex project
- Set up the database schema
- Provide your
NEXT_PUBLIC_CONVEX_URL
- Go to your Supabase project dashboard
- Navigate to Storage
- Create the following buckets (all public):
photosenvironmentsmodelsaudio
npm run devOpen http://localhost:3000 in your browser.
- Run
npx convex devin your project - Follow the setup wizard
- Copy the
NEXT_PUBLIC_CONVEX_URLfrom the output
- Create a project at supabase.com
- Go to Settings → API
- Copy the URL and
anonkey - Copy the
service_rolekey (keep this secret!)
- Sign up at fal.ai
- Navigate to your dashboard
- Generate an API key
- Visit Google AI Studio
- Create a new API key
- Copy the key
- Sign up at console.groq.com
- Generate an API key from the dashboard
- Create an account at elevenlabs.io
- Go to Profile Settings
- Copy your API key
- Sign up at manus.ai
- Navigate to API settings
- Generate an API key
- Create an account at mem0.ai
- Get your API key from the dashboard
artisan/
├── src/
│ └── app/ # Next.js app directory
│ ├── api/ # API routes
│ ├── page.tsx # Main application page
│ └── layout.tsx # Root layout with Convex provider
├── components/ # React components
│ ├── ARViewer.tsx # 3D scene viewer
│ ├── PhotoUpload.tsx # Photo upload interface
│ └── DoodlePad.tsx # Doodle to Life interface
├── lib/ # Utility libraries
│ ├── workflows/ # AI workflow orchestration
│ ├── supabase.ts # Supabase client
│ ├── ai-clients.ts # AI service clients
│ └── manus.ts # Manus AI client
├── convex/ # Convex backend
│ ├── schema.ts # Database schema
│ ├── scenes.ts # Scene operations
│ └── workflows.ts # Workflow actions
└── ENV_SETUP.md # Detailed environment setup guide
- Upload a Photo: Click or drag-and-drop a photo on the landing page
- Wait for Magic: AI analyzes your photo and generates an immersive environment
- Explore: Use WASD keys to move, mouse to look around, E/Q for up/down
-
Choose Input Method:
- Text: Describe what you want (e.g., "a flying dragon")
- Sketch: Draw your object on the canvas
- Photo: Upload a reference image
-
Name Your Creation (optional): Give your object a custom name
-
Bring to Life: Click the "✨ Bring to Life" button
-
Interact: Your object appears in the AR scene - click and drag to move it!
- AI automatically generates music based on your scene's mood
- Click the music button (bottom right) to play/pause
- Use "Recompose Soundtrack" to generate a new track
- Make sure
npx convex devis running - Check that
NEXT_PUBLIC_CONVEX_URLis set correctly
- Verify Supabase storage buckets are created and public
- Check that
NEXT_PUBLIC_SUPABASE_URLand keys are correct
- Verify all API keys are valid and have credits
- Check the browser console for specific error messages
- Some AI services may have rate limits
- Ensure WebGL is enabled in your browser
- Try using Chrome or Edge for best compatibility
- Check browser console for Three.js errors
- Push your code to GitHub
- Import project in Vercel
- Add all environment variables in Vercel dashboard
- Deploy!
npx convex deployUpdate your NEXT_PUBLIC_CONVEX_URL to the production URL.
- Use high-quality but reasonably sized photos (< 5MB)
- Clear object descriptions lead to better AI generations
- Allow AI generation time (30-60 seconds per operation)
- Use modern browsers (Chrome, Edge, Safari) for best 3D performance
This is a hackathon project. Feel free to fork and improve!
MIT License - see LICENSE file for details
Built with ❤️ using amazing sponsor tools:
- Convex, Supabase, fal.ai, Gemini, ElevenLabs, Groq, Manus AI, Mem0.ai
Made for Cursor Hackathon 2025 by Glenn Liew, Elizabeth Lim, Rachel Tan (NUS)