102 lines
2.6 KiB
Markdown
102 lines
2.6 KiB
Markdown
# 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
|
|
|
|
1. **Clone and setup**:
|
|
```bash
|
|
git clone <repository-url>
|
|
cd nlcc-sermons
|
|
npm install
|
|
```
|
|
|
|
2. **Run locally**:
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
3. **Build for production**:
|
|
```bash
|
|
npm run build
|
|
```
|
|
|
|
4. **Deploy with Docker**:
|
|
```bash
|
|
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 authentication
|
|
- `GET /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:
|
|
|
|
```bash
|
|
# 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.db` in the container
|