Complete sermon management system with Nuxt 4, authentication, SQLite database, QR codes, and Docker deployment

This commit is contained in:
Ryderjj89
2025-09-29 18:59:31 -04:00
commit c033410c2e
25 changed files with 1510 additions and 0 deletions

101
README.md Normal file
View File

@@ -0,0 +1,101 @@
# 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