Handi is a modern, open-source Temple Management System designed to bring transparency and efficiency to temple operations. It features an immutable "Open Ledger" for donations, event management, and a flexible role-based user system.
- Immutable Open Ledger:
- Cryptographically linked donation records (SHA-256 hash chain) ensure data integrity and transparency.
- Publicly viewable ledger.
- Multi-currency support.
- Event Management:
- Schedule and display upcoming events (Poojas, Festivals).
- RSVP functionality for devotees.
- Internationalization (I18n):
- Full UI support for multiple languages.
- Supported Languages: English, Spanish (Español), Hindi (हिन्दी), Marathi (मराठी), and Sanskrit (संस्कृतम्).
- Role-Based Access:
- Roles for Admins, Priests, Staff, and Devotees.
- Staff management and shift allocation.
- Live Darshan: Placeholder for live streaming integration.
- Backend: Python, FastAPI
- API: Strawberry GraphQL
- Database:
- SQLAlchemy (Async)
- PostgreSQL (Production) / SQLite (Development)
- Frontend:
- Server-side rendering with Jinja2
- Dynamic interactions with HTMX
- Styling with Bootstrap 5
- I18n: Babel
-
Clone the repository:
git clone https://github.com/yourusername/handi.git cd handi -
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Start the server:
uvicorn app.main:app --reload
-
Access the application:
- Web UI: http://localhost:8000
- GraphQL API: http://localhost:8000/graphql
- OpenAPI Docs: http://localhost:8000/docs
To switch languages, use the dropdown in the navigation bar or append the lang query parameter:
- English:
/?lang=en - Spanish:
/?lang=es - Hindi:
/?lang=hi - Marathi:
/?lang=mr - Sanskrit:
/?lang=sa
- Add the language code to
app/i18n.pyandapp/templates/base.html. - Initialize the translation file:
pybabel init -i app/locales/messages.pot -d app/locales -l <code>
- Add translations to the generated
.pofile. - Compile translations:
pybabel compile -d app/locales
- Database: By default, the app uses a local SQLite database (
handi.db). To use PostgreSQL, set theDATABASE_URLenvironment variable. - Seed Data: You can seed the database with initial data using the
seed_db.pyscript (if available) or by using the GraphQL API/UI.
MIT License