A digital hymnal for a Catholic parish choir in Kenya. Browse and read Mass song lyrics by liturgical category (Entrance, Offertory, Communion, etc.) and Misa setting. Supports Swahili, Kikuyu, English & Latin. Admins can upload songs and attach sheet music PDFs.
# Parish Song Library
A full-stack digital hymnal for a Catholic parish choir in Kenya.
Choir members browse and read lyrics on their phones during Mass rehearsals and services.
Choir directors log in to manage the song catalogue.
---
## Tech Stack
| Layer | Technology |
|-------|-----------|
| Frontend | React 18 + TypeScript + Vite |
| Backend | Python + Django 4.2 + Django REST Framework |
| Database | PostgreSQL (SQLite for local dev) |
| Auth | JWT via djangorestframework-simplejwt |
| Frontend hosting | Vercel |
| Backend hosting | Render.com |
---
## Project Structure
```
parish-songs/
├── backend/ ← Django API
└── frontend/ ← React TypeScript app
```
---
## Backend Setup
### 1. Create and activate a virtual environment
```bash
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
```
### 2. Install dependencies
```bash
pip install -r requirements.txt
```
### 3. Configure environment
```bash
cp .env.example .env
# Edit .env — set SECRET_KEY, DATABASE_URL, etc.
```
For local development with SQLite you can leave `DATABASE_URL` unset —
it defaults to `db.sqlite3` in the project root.
### 4. Run migrations
```bash
python manage.py migrate
```
### 5. Seed the database (songs + default superadmin)
```bash
python manage.py seed_songs
```
Default superadmin credentials: `director` / `ChangeMe123!`
**Change this password immediately after first login.**
### 6. Start the development server
```bash
python manage.py runserver
```
API is now available at `
localhost`.
---
## Frontend Setup
### 1. Install dependencies
```bash
cd frontend
npm install
```
### 2. Configure environment
```bash
cp .env.example .env.local
# Edit .env.local — set VITE_API_URL=
localhost
```
### 3. Start the development server
```bash
npm run dev
```
App is now available at `
localhost`.
---
## API Reference
### Auth
| Method | Endpoint | Auth | Description |
|--------|-- …