2025-10-01 18:16:02 -04:00

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:

    git clone <repository-url>
    cd nlcc-sermons
    npm install
    
  2. Run locally:

    npm run dev
    
  3. Build for production:

    npm run build
    
  4. 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 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:

# 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
Description
Sermon app for New Life Christian Church
Readme 641 KiB
Languages
Vue 60%
TypeScript 38.4%
Dockerfile 1.2%
JavaScript 0.2%
Shell 0.2%