0325f44d3e267eae5a54562d63d47228884db6cd
New Life Christian Church Sermon Management System
A Nuxt 4 application for managing and displaying church sermons with authentication and QR code generation.
Features
- Sermon Management: Create, view, and manage sermons with Bible references, personal applications, and pastor's challenges
- Authentication: Secure admin login for sermon creation
- Responsive Design: Built with NuxtUI for a modern, mobile-friendly interface
- QR Codes: Auto-generated QR codes for each sermon linking to the sermon page
- SQLite Database: Lightweight, file-based database for sermon storage
- Docker Ready: Complete containerization for easy deployment
Quick Start
-
Clone and setup:
git clone <repository-url> cd nlcc-sermons npm install -
Run locally:
npm run dev -
Build for production:
npm run build -
Deploy with Docker:
docker-compose up -d
Environment Variables
Create a .env file or set these environment variables:
JWT_SECRET: Secret key for JWT token generation (change in production!)ADMIN_PASSWORD: Default admin password (default: admin123)
Default Login
- Username: admin
- Password: admin123 (or set via ADMIN_PASSWORD)
Project Structure
├── server/
│ ├── api/ # API routes
│ │ ├── auth/ # Authentication endpoints
│ │ └── sermons/ # Sermon management endpoints
│ └── utils/ # Database and auth utilities
├── components/ # Vue components
├── pages/ # Nuxt pages
├── public/ # Static assets
└── data/ # SQLite database location
API Endpoints
POST /api/auth/login- User authenticationGET /api/sermons- List sermons (with time filtering)POST /api/sermons- Create new sermon (admin only)GET /api/sermons/[slug]- Get specific sermon
Docker Deployment
The application is fully containerized and ready for deployment:
# Build and run
docker-compose up -d
# View logs
docker-compose logs -f
# Stop
docker-compose down
The SQLite database will persist in a Docker volume named sermon_data.
Development
- Uses Nuxt 4 with NuxtUI components
- TypeScript for type safety
- Tailwind CSS for styling
- QR code generation for sermon sharing
- Responsive design for all devices
Security Notes
- Change default passwords before production deployment
- Use strong JWT secrets in production
- Consider implementing rate limiting for API endpoints
- Database is stored in
/data/sermons.dbin the container
Description
Languages
Vue
60%
TypeScript
38.4%
Dockerfile
1.2%
JavaScript
0.2%
Shell
0.2%