A modern, browser-based 2D CAD application for theatrical lighting designers to create lighting plots. Built with SvelteKit, LightsLite provides an intuitive interface focused on the specific needs of lighting design while prioritizing data integrity above all else.
- π Theater-Focused Tools: Purpose-built for lighting designers with specialized instrument symbols, hanging position types, and industry-standard paperwork generation
- π 2D Canvas Editor: Pan, zoom, and draw with precise grid snapping and measurement tools
- π‘ Comprehensive Instrument Library: Source 4, PAR, Fresnel, Moving Lights, LED fixtures and more
- π Professional Reports: Generate channel hookups, instrument schedules, dimmer schedules, and cut lists
- πΎ Auto-Save & Sync: Never lose work with automatic saves to IndexedDB and cloud sync
- π¨ Modern UI: Clean, responsive interface built with Tailwind CSS and shadcn-svelte components
- π Secure: Authentication powered by Neon Auth
- π± Multi-Device: Access your projects from anywhere with cloud synchronization
- Frontend: SvelteKit 2 + Svelte 5, TypeScript, Tailwind CSS
- Rendering: SVG for crisp vector graphics at any zoom level
- Database: Neon Postgres (serverless)
- ORM: Drizzle ORM
- Authentication: Neon Auth
- Deployment: Vercel
- Local Storage: IndexedDB via idb
- Node.js 18+ and pnpm
- A Neon account (sign up here)
- Vercel account for deployment (optional)
- Clone the repository:
git clone https://github.com/yourusername/lightslite.git
cd lightslite- Install dependencies:
pnpm install- Set up environment variables:
cp .env.example .envEdit .env with your Neon database credentials:
DATABASE_URL="postgresql://[user]:[password]@[host]/[dbname]?sslmode=require"
NEON_AUTH_BASE_URL="https://ep-xxx.neonauth.c-2.us-east-2.aws.neon.build/dbname/auth"
PUBLIC_NEON_AUTH_URL="https://ep-xxx.neonauth.c-2.us-east-2.aws.neon.build/dbname/auth"
PUBLIC_APP_URL="http://localhost:5173"- Run database migrations:
pnpm drizzle-kit push- Start the development server:
pnpm devVisit http://localhost:5173 to see the app running!
lightslite/
βββ src/
β βββ lib/
β β βββ components/ # Svelte components
β β βββ stores/ # Svelte 5 state management
β β βββ db/ # Database schema & client
β β βββ sync/ # Sync manager for auto-save
β β βββ symbols/ # Instrument SVG symbols
β β βββ reports/ # Report generators
β β βββ types/ # TypeScript types
β βββ routes/ # SvelteKit routes
β βββ app.css # Global styles
βββ drizzle/ # Database migrations
βββ static/ # Static assets
βββ plans/ # Architecture docs
pnpm dev # Start dev server
pnpm build # Build for production
pnpm preview # Preview production build
pnpm lint # Run ESLint
pnpm format # Format with Prettier
pnpm db:push # Push schema changes to database
pnpm db:studio # Open Drizzle Studio| Shortcut | Action |
|---|---|
V |
Select tool |
H |
Pan tool |
I |
Add instrument |
E |
Add electric |
B |
Add boom |
L |
Draw line |
R |
Draw rectangle |
C |
Draw circle |
Cmd/Ctrl + Z |
Undo |
Cmd/Ctrl + Shift + Z |
Redo |
Cmd/Ctrl + D |
Duplicate |
Cmd/Ctrl + A |
Select all |
Cmd/Ctrl + 0 |
Fit all |
Cmd/Ctrl + +/- |
Zoom in/out |
Delete/Backspace |
Delete selected |
LightsLite is optimized for deployment on Vercel:
- Push your code to GitHub
- Import the repository in Vercel
- Add your environment variables
- Deploy!
Vercel will automatically handle:
- SvelteKit adapter configuration
- Edge function deployment
- Automatic HTTPS
- Preview deployments for pull requests
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with SvelteKit
- UI components from shadcn-svelte
- Icons from Lucide
- Database by Neon
- Inspired by professional lighting design software like Vectorworks
For questions or issues:
- Open an issue on GitHub
- Check the architecture documentation
- Review the initial requirements
Made with β€οΈ for lighting designers