SimpleProjector is a cross‑platform desktop app built with Electron and React to make projection simple, elegant, and reliable. It is designed for ads, work presentations, classrooms, events, and any situation where you need to put content on a screen without fighting the tooling.
- Simplicity first: Focus on your content, not on configuring complex slides or playlists.
- Elegant by default: Clean, distraction‑free projection with a modern UI.
- Versatile use cases: From digital signage and ads to quick work demos and talks.
- Open‑source spirit: Transparent code, community‑friendly, and easy to extend.
-
Drag & drop projection
- Drop images, PDFs, and other supported files into the app to prepare them for projection.
- Quickly reorder or remove items before presenting.
-
Projector view
- A dedicated, borderless window optimized for external displays or projectors.
- Shows only the selected content so your main screen can stay private.
-
File management
- Thumbnail previews of your content for quick identification.
- Simple list of files that you can navigate and select for projection.
-
Import / export
- Save your current playlist or setup so you can reuse it later or share it with another machine.
- Import existing configurations to get a full projection layout ready in seconds.
-
PDF support
- Uses
pdfjs-distto render PDF pages cleanly. - Navigate pages smoothly for reports, documents, or print‑style layouts.
- Uses
-
App settings
- Basic configuration for behavior and appearance (depending on your current build).
- Designed so more options can be added without complicating the UI.
-
Electron + React + TypeScript
- Electron powers the desktop shell on Windows, macOS, and Linux.
- React and TypeScript provide a robust, type‑safe renderer UI.
-
Clean Architecture & SOLID‑oriented
- UI components in
src/componentsstay focused on presentation and interaction. - Domain concepts (like files, settings, and projector behavior) are modeled in
src/typesandsrc/lib. - Logic is structured to be testable and replaceable, keeping infrastructure details (Electron APIs, file system, etc.) at the edges.
- UI components in
-
Install dependencies
npm install
-
Run in development
npm start
-
Build distributables
npm run make
Packages are created under the out directory for each supported platform.
- Issues & ideas: Propose improvements such as new file types, scheduling for ads, or better projector controls.
- Code style: Follow the existing TypeScript/React patterns and keep modules small and focused.
- Architecture: Respect the separation between UI, domain logic, and infrastructure to keep the project maintainable.
This project is released under the MIT License, as defined in package.json. You are free to use, modify, and distribute it, subject to the terms of that license.