A mobile application for visualizing laser-cut signs on walls using camera overlay and AR technology. Built with Capacitor for Android deployment.
- ๐ท Camera Overlay - Real-time camera feed with image overlay
- ๐ผ๏ธ Image Upload - Upload custom sign designs
- ๐จ Image Manipulation - Resize, rotate, and position signs
- ๐ AR Visualization - See how signs look on walls before installation
- ๐พ Save & Share - Save visualizations and share with clients
- ๐ฑ Mobile-First - Optimized for Android devices
- ๐ฏ Touch Controls - Intuitive pinch, zoom, and drag gestures
- Frontend: Vanilla JavaScript, HTML5, CSS3
- Build Tool: Vite
- Mobile Framework: Capacitor
- Styling: Tailwind CSS
- Platform: Android (APK)
- Node.js 16+ and npm
- Android Studio (for APK builds)
- Java JDK 11+
- Android SDK
-
Clone the repository
git clone <repository-url> cd Image_overlay/laser-sign-visualizer
-
Install dependencies
npm install
-
Run development server
npm run dev
-
Open in browser
http://localhost:5173
-
Start live development server
npm run dev:live # or ./start-live-dev.ps1 -
Sync with Capacitor
npx cap sync android
-
Open in Android Studio
npx cap open android
-
Run on device - Click "Run" in Android Studio
# Windows
./build-apk-simple.bat
# PowerShell
./build-apk.ps1-
Build web assets
npm run build
-
Sync with Capacitor
npx cap sync android
-
Open Android Studio
npx cap open android
-
Build APK
- In Android Studio: Build โ Build Bundle(s) / APK(s) โ Build APK(s)
- APK location:
android/app/build/outputs/apk/debug/app-debug.apk
- Enable Developer Options on your Android device
- Enable USB Debugging
- Connect device via USB
- Install APK
adb install android/app/build/outputs/apk/debug/app-debug.apk
-
Build release APK
- In Android Studio: Build โ Generate Signed Bundle / APK
- Follow the signing wizard
-
Upload to Google Play Console
- Create app listing
- Upload APK/AAB
- Complete store listing
- Submit for review
- Launch the app on your Android device
- Grant camera permissions when prompted
- Upload a sign image using the upload button
- Position the sign on the camera view using touch gestures:
- Drag - Move the sign
- Pinch - Resize the sign
- Rotate - Two-finger rotation
- Save or share the visualization
laser-sign-visualizer/
โโโ src/ # Source code
โ โโโ main.js # Main application logic
โ โโโ style.css # Styles
โ โโโ ...
โโโ public/ # Static assets
โโโ android/ # Capacitor Android project
โโโ tests/ # Test files
โโโ dist/ # Build output (gitignored)
โโโ docs/ # Documentation
โ โโโ implementation-history/ # Development history
โโโ scripts/ # Build scripts
โโโ index.html # Entry point
โโโ package.json # Dependencies
โโโ capacitor.config.json # Capacitor configuration
โโโ vite.config.js # Vite configuration
โโโ tailwind.config.js # Tailwind configuration
# Run tests
npm test
# Run tests with coverage
npm run test:coverageEdit capacitor.config.json:
{
"appId": "com.lasersign.visualizer",
"appName": "Laser Sign Visualizer",
"webDir": "dist",
"server": {
"androidScheme": "https"
}
}Edit vite.config.js for build settings.
Edit tailwind.config.js for styling customization.
- Camera Permissions - Required for camera overlay functionality
- Storage Permissions - Required for saving images
- Network Permissions - Required for live development
- Performance - Optimized for Samsung S20 and similar devices
- Orientation - Supports portrait and landscape modes
- Check camera permissions
- Verify Capacitor sync:
npx cap sync android - Check Android logs:
adb logcat
- Ensure device and computer are on same network
- Check firewall settings
- Use IP address instead of localhost
- Clean build:
cd android && ./gradlew clean - Invalidate caches in Android Studio
- Update Android SDK and build tools
For detailed implementation history and development notes, see:
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Capacitor
- Styled with Tailwind CSS
- Bundled with Vite
Made with โค๏ธ for laser cutting businesses