Skip to content

QuizzityMC/Canary-Films-Members-Portal

Repository files navigation

Canary Films Members Portal

A comprehensive members portal for the Canary Films Film Studio, featuring multiple authentication methods, shoot scheduling, script management, and production planning tools. Can be easily self-hosted on Linux servers or deployed to Vercel.

🎬 Features

  • Multi-Auth System

    • Hack Club OAuth integration
    • Google Sign-In
    • Email/Password authentication
  • Admin Panel

    • Create and manage user accounts
    • Approve/revoke account access
    • Monitor user activity
  • Members Portal

    • Daily shoot schedules with cast assignments
    • Personal lines to learn for upcoming shoots
    • Full script library with version control
    • Planning documents repository
  • Security

    • Admin-only account creation
    • Approval-required access
    • Secure session management
    • HTTPS support

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • Linux server (Ubuntu 20.04+ recommended)
  • Domain name configured (portal.canaryfilms.org)

Installation

# Clone the repository
git clone https://github.com/QuizzityMC/Canary-Films-Members-Portal.git
cd Canary-Films-Members-Portal

# Install dependencies
npm install

# Configure environment
cp .env.example .env
# Edit .env with your settings

# Start the server
npm start

The portal will be available at:

Default Admin Account

On first run, a default admin account is created. You can configure it using environment variables, or it will use a randomly generated password:

Option 1: Set Admin Credentials via Environment Variables (Recommended for Production)

# In your .env file
ADMIN_EMAIL=admin@yourcompany.com
ADMIN_PASSWORD=your-secure-password-here

Option 2: Auto-Generated Password

If no environment variables are set, a random password is generated:

Email: admin@canaryfilms.org
Password: (displayed in console on first startup)

⚠️ IMPORTANT:

  • If using auto-generated password, save it from the console during first startup
  • It will NOT be shown again
  • Change this password immediately after first login
  • For production deployments (especially Vercel), use environment variables

πŸ“š Documentation

Deployment Options

Option 1: Vercel (Serverless)

Option 2: Traditional Server

  • Linux Server Deployment Guide - Self-host on your own server
  • DNS configuration
  • SSL certificate setup
  • OAuth application configuration
  • Systemd service setup

πŸ”§ Configuration

Environment Variables

See .env.example for all available configuration options:

  • HTTP_PORT / HTTPS_PORT - Server ports (default: 9811/9812)
  • SESSION_SECRET - Secure session key (required)
  • ADMIN_EMAIL / ADMIN_PASSWORD - Admin credentials (optional, recommended for production)
  • HACKCLUB_CLIENT_ID / HACKCLUB_CLIENT_SECRET - Hack Club OAuth
  • GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET - Google OAuth
  • SSL_KEY_PATH / SSL_CERT_PATH - SSL certificate paths

OAuth Setup

Hack Club OAuth

  1. Visit https://hackclub.com and enable Developer Mode
  2. Create a new OAuth application
  3. Set callback URL to: https://portal.canaryfilms.org/auth/hackclub/callback

Google OAuth

  1. Visit https://console.cloud.google.com
  2. Create OAuth 2.0 credentials
  3. Add redirect URI: https://portal.canaryfilms.org/auth/google/callback

πŸ—οΈ Architecture

  • Backend: Node.js + Express
  • Database: SQLite (easy self-hosting)
  • Authentication: Passport.js with multiple strategies
  • Views: EJS templates
  • Styling: Custom CSS with responsive design

πŸ“‹ Usage

Admin Tasks

  1. Login with admin credentials
  2. Navigate to Admin panel
  3. Create user accounts with email and optional password
  4. Approve/revoke user access as needed

Member Access

  1. Admin creates your account
  2. Login using Hack Club, Google, or email/password
  3. Access shoot schedules, scripts, and lines
  4. View planning documents

πŸ”’ Security Features

  • Admin-only user creation
  • Account approval system
  • Secure password hashing (bcrypt)
  • Session-based authentication
  • HTTPS support
  • Protected routes and middleware

🌐 Deployment

The application is designed to run on ports:

  • 9811 - HTTP
  • 9812 - HTTPS

These ports are intended to be mapped to https://portal.canaryfilms.org

See DEPLOYMENT.md for detailed deployment instructions including:

  • Linux server setup
  • DNS configuration
  • SSL certificate installation
  • Systemd service configuration
  • Nginx reverse proxy setup (optional)

πŸ”— Links

Every page includes a link back to the main Canary Films website: https://www.canaryfilms.org/

πŸ“¦ Project Structure

.
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ config/         # Passport authentication config
β”‚   β”œβ”€β”€ middleware/     # Auth middleware
β”‚   β”œβ”€β”€ models/         # Database models
β”‚   β”œβ”€β”€ routes/         # Express routes
β”‚   └── server.js       # Main server file
β”œβ”€β”€ views/
β”‚   β”œβ”€β”€ auth/           # Authentication pages
β”‚   β”œβ”€β”€ admin/          # Admin panel pages
β”‚   β”œβ”€β”€ portal/         # Members portal pages
β”‚   └── partials/       # Reusable components
β”œβ”€β”€ public/
β”‚   └── css/            # Stylesheets
β”œβ”€β”€ data/               # SQLite database (created on first run)
β”œβ”€β”€ .env                # Environment configuration
└── DEPLOYMENT.md       # Deployment guide

🀝 Contributing

This is a private project for Canary Films. For issues or suggestions, please contact the repository maintainers.

πŸ“„ License

ISC License

πŸŽ₯ About Canary Films

Canary Films is a creative film studio dedicated to bringing stories to life. Learn more at www.canaryfilms.org.

About

A members portal for the Canary Films Film Studio, with Hack Club Auth, a members portal to show which actors need to be in a particular day's shoot, which lines need to be learned for that session, the whole script, planning documents etc. All in one web platform that can be easily selfhosted.

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors