Skip to content

Latest commit

Β 

History

101 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

LightsLite

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.

Features

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

Tech Stack

  • 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

Getting Started

Prerequisites

  • Node.js 18+ and pnpm
  • A Neon account (sign up here)
  • Vercel account for deployment (optional)

Installation

  1. Clone the repository:
git clone https://github.com/yourusername/lightslite.git
cd lightslite
  1. Install dependencies:
pnpm install
  1. Set up environment variables:
cp .env.example .env

Edit .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"
  1. Run database migrations:
pnpm drizzle-kit push
  1. Start the development server:
pnpm dev

Visit http://localhost:5173 to see the app running!

Development

Project Structure

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

Key Commands

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

Keyboard Shortcuts

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

Deployment

LightsLite is optimized for deployment on Vercel:

  1. Push your code to GitHub
  2. Import the repository in Vercel
  3. Add your environment variables
  4. Deploy!

Vercel will automatically handle:

  • SvelteKit adapter configuration
  • Edge function deployment
  • Automatic HTTPS
  • Preview deployments for pull requests

Contributing

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.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Support

For questions or issues:


Made with ❀️ for lighting designers

About

An open source theatrical lighting plot generator

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages