The original songbook data existed in PDFs and legacy font encodings, making it difficult to correct, verify, and reuse reliably.
This editor was built to clean the data once, verify it properly, and generate a stable JSON source of truth for a mobile application.
This project is an internal tool built for a specific organization and workflow.
It is not intended as a public SaaS or open-source contribution project.
A centralized dashboard to view database statistics and manage the song list.
- Search & Filter: Instantly filter songs by Hymn Number, Marathi Title, or Category.
- Quick Stats: View total song count and verification progress at a glance.
A dedicated interface for editing song metadata and lyrics.
- Metadata: Edit Hymn Number, Marathi/English Titles, and Categories.
- Lyrics Editor: A clean text area for formatting song lyrics.
- Smart ID Management: Changing a Hymn Number automatically migrates the song to a new Database ID and cleans up the old record.
To prevent accidental data loss or unwanted edits on finished songs, the system includes a verification lock.
- Locking: Mark a song as "Verified" to disable all edit fields.
- Unlocking: Admin privileges allow unlocking a song for necessary revisions.
Easily create new entries in the songbook with automatic duplicate ID detection to ensure data integrity.
Seamlessly sync data between this editor and the Android application.
- Export: Generates an Android-compatible JSON file containing the entire songbook.
- Import: Bulk upload functionality to replace the database (with safety warnings).
| Export Data | Import Data |
|---|---|
![]() |
![]() |
- Framework: Next.js 14 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Database: Firebase Firestore
- Deployment: Vercel
To run this project locally, follow these steps:
git clone https://github.com/Stavan1234/tsa-songbook-editor.git
cd tsa-songbook-editor
npm install
Create a .env.local file in the root directory and add your Firebase configuration:
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project_id.appspot.com
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
npm run dev
Open http://localhost:3000 with your browser to see the result.
app/
βββ admin/
β βββ export/ # JSON Export logic
β βββ import/ # JSON Import logic
β βββ songs/ # Song List & Create New Song
β βββ layout.tsx # Admin Sidebar Layout
βββ components/ # Reusable UI components
βββ lib/ # Firebase configuration
βββ page.tsx # Landing Page
This project is an internal tool for the The Salvation Army (Marathi) and is not intended for public distribution.

