A modern, stage-ready setlist management platform — built with Next.js and optimized for performance.
Setlyst Web is the frontend for the Setlyst ecosystem. It provides an intuitive dashboard for musicians to manage their song library, organize setlists, and access a high-performance Live Mode designed specifically for use on stage.
Managing paper setlists or generic note apps during a concert is prone to error and lacks organization. Musicians need a dedicated tool that handles song structures, lyrics, and metadata, while providing a distraction-free interface when the lights go up.
Setlyst was built to be fast, responsive, and reliable enough for professional use.
⚠️ Setlyst is in active development.
- ✅ Dashboard — Centralized management of Artists, Songs, Bands, Setlists, and Gigs.
- ✅ Live Mode — High-contrast, distraction-free performance viewer with a built-in metronome and live transpose.
- ✅ ChordPro Support — Dynamic rendering and editing of lyrics and chords. Pasted charts with chords above the lyrics are aligned automatically, and section headings are recognised in English, Portuguese and Spanish.
- ✅ Setlist Analytics — Visualize a setlist's tempo/energy progression before you play it.
- ✅ Authentication — Secure access via NextAuth, with role-based access control.
- ✅ Band Collaboration — Multiple members share the same song library, setlists, and gigs.
- ✅ Public Sharing — Shareable, read-only links and QR codes for setlists and gigs.
- ✅ Offline Support — Setlists, songs, and Live Mode keep working with no signal.
- ✅ Installable (PWA) — Add Setlyst to your home screen like a native app.
- ✅ PDF & ChordPro Export — Generate printable setlists or export songs as
.chofiles. - ✅ Backup & Restore — Export and import a full snapshot of your data.
- ✅ Responsive Design — Optimized for desktops, tablets, and mobile phones.
- ✅ Multi-language — Full support for English, Portuguese, and Spanish (i18n).
- ✅ Tags — Tag songs by vibe ("ballad", "opener"…), filter by tag and manage your tag vocabulary.
- ✅ Customizable PDF — Presets, compact and two-column layouts, text size, paper, margins, songbook with chords above the lyrics, optional watermark; save your favourite setup as the default.
- ✅ Synced preferences — Live Mode, list and PDF defaults follow you to every device.
- ✅ Staff console — Admins and moderators manage users (suspend, deactivate, temporary passwords, per-user limits, "view as"), bands, songs, setlists and public links, with a full audit log.
- ✅ Strong account security — Enforced password policy, username rules, instant sign-out on password change or suspension.
- ✅ What's new, status page and legal texts — Built in, in every language.
- Framework: Next.js (App Router)
- Styling: Tailwind CSS
- UI Components: Shadcn UI
- Authentication: NextAuth.js
- Icons: Lucide React
Prerequisites: Node.js 20.9+ and a running instance of the Setlyst API.
-
Clone the repository:
git clone [https://github.com/allansomensi/setlyst-web](https://github.com/allansomensi/setlyst-web) cd setlyst-web -
Install dependencies:
npm install
-
Configure environment:
Create a .env.local file based on .env.example:
NEXT_PUBLIC_API_URL=your_api_url NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_SECRET=your_secret_of_at_least_32_characters # Optional NEXT_PUBLIC_WIKI_URL=https://github.com/allansomensi/setlyst-web/wiki NEXT_PUBLIC_SUPPORT_EMAIL=support@example.com NEXT_PUBLIC_PRIVACY_EMAIL=privacy@example.com # LGPD officer, defaults to the support e-mail NEXT_PUBLIC_BILLING_ENFORCED=false # "true" once the API enforces billing NEXT_PUBLIC_CONTROLLER_NAME= # who runs Setlyst, shown in the legal documents NEXT_PUBLIC_CONTROLLER_TAX_ID= # CPF (individual) or CNPJ (company), detected by length NEXT_PUBLIC_CONTROLLER_ADDRESS= # postal address (Decreto 7.962/2013) INTERNAL_API_SECRET= # same value as the API's, see "Client address" below TRUSTED_PROXY_HOPS=1 # reverse proxies in front of Next.js (self-hosted) TRUST_X_REAL_IP=false # "true" only if your proxy overwrites X-Real-IP NEXT_PUBLIC_ENABLE_SW_IN_DEV=false # register the service worker in `npm run dev`
Client address. With
INTERNAL_API_SECRETset, the server tells the API who the visitor is so rate limits apply per visitor. On Vercel (VERCELis set by the platform) the address comes fromx-vercel-forwarded-for/x-real-ip. Self-hosted, it is the entryTRUSTED_PROXY_HOPSpositions from the right ofX-Forwarded-For(the address your closest reverse proxy appended;0disables it), orX-Real-IPwhenTRUST_X_REAL_IP=true. The leftmostX-Forwarded-Forentry is written by the client and is never trusted; when nothing trustworthy is available no address is sent. -
Run the development server
npm run dev
The application will be available at http://localhost:3000.
-
Checks
npm run typecheck # TypeScript npm run lint # ESLint + Prettier npm test # Unit tests (Vitest)
The legal texts (
lib/legal-content.ts) describe how Setlyst stores and protects data. Review them for your jurisdiction (LGPD, GDPR…) before going to production. Release notes shown on the "What's new" page live inlib/whats-new.ts.
The Live Mode is the heart of Setlyst. It is designed to be used on tablets and smartphones mounted on mic stands. It features:
- Zero Layout Shift: Content remains stable during performance.
- High Contrast: Readable under stage lights or in dark venues.
- Stay Awake: Prevents the device from sleeping during use.
- Metronome: Per-song BPM, tap tempo, and an audible or visual click.
- Live Transpose: Shift the key on the fly, with capo suggestions.
- Auto-scroll: Hands-free lyric scrolling at an adjustable speed.
- Compact Mode: The whole song on one screen, in columns when there's room.
- Swipe Navigation: Swipe left/right on a phone to move through the setlist.
- Lyrics First: Chords and section headings can each be toggled, per device.
- Offline-ready: Works with no signal — nothing depends on a live connection once synced.
Contributions are very welcome! Setlyst is a community-driven project, and we appreciate help with:
- 🐛 Bug Fixes: Identifying and fixing frontend or integration issues.
- ✨ Feature Requests: Suggesting and implementing new tools for musicians.
- 🎨 UI/UX: Improving the design, accessibility, and responsiveness.
- 🌍 Translations: Helping us reach more musicians by improving i18n support.
Please check our CONTRIBUTING.md for detailed guidelines on our development workflow and commit standards. 📜
Setlyst is an open-source project created by musicians for musicians. 🎸
This project is not affiliated with, endorsed by, or sponsored by any instrument or software manufacturer. All product names, logos, and brands are property of their respective owners and are used here strictly for descriptive and nominative purposes.
Setlyst is released under the MIT License. 📜