Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
c54b357
Optimize devcontainer configuration
jrcoak Jul 31, 2025
7821ad3
Optimize PostgreSQL Docker Compose configuration
jrcoak Jul 31, 2025
0d5baa3
Update devcontainer.json
jrcoak Aug 5, 2025
ef2a011
Optimize devcontainer build performance
jrcoak Aug 5, 2025
47c15bb
Implement Netflix-like search functionality with advanced filtering
jrcoak Aug 11, 2025
e10c794
Add professional profile avatar to navbar
jrcoak Aug 11, 2025
51af99a
Add comprehensive user profile dropdown with Netflix-like design
jrcoak Aug 11, 2025
0392b2e
Add comprehensive movie preview player with Netflix-like experience
jrcoak Aug 11, 2025
48161d7
Add comprehensive YouTube video integration with real movie trailers
jrcoak Aug 11, 2025
5e61d28
Fix YouTube player audio and control visibility issues
jrcoak Aug 11, 2025
0d1dcb2
Add two new movie categories with comprehensive metadata
jrcoak Aug 11, 2025
7ec6532
database changes
jrcoak Aug 11, 2025
6123968
Fix database issues and optimize seed structure
jrcoak Aug 11, 2025
cf30301
Fix Moonlight movie poster with working Amazon image URL
jrcoak Aug 11, 2025
e990c3b
Improve movie display layout and fix image issues
jrcoak Aug 11, 2025
fc7f00d
Add click-outside-to-close functionality to movie modal
jrcoak Aug 11, 2025
402bf0d
Implement comprehensive startup automation and health monitoring
jrcoak Aug 12, 2025
3ddcad1
Fix startup script hanging issue with lsof command
jrcoak Aug 12, 2025
f049b82
Improve startup script reliability and database initialization
jrcoak Aug 12, 2025
a6ef840
Fix PostgreSQL health check pattern in startup script
jrcoak Aug 12, 2025
26f8fd5
Add automated Jira MCP integration for AI assistants
jrcoak Aug 12, 2025
bf63505
Fix Jira MCP automation syntax error
jrcoak Aug 13, 2025
a57333d
Improve MCP automation setup and remove emojis
jrcoak Aug 18, 2025
4385b92
Add standardized MCP configuration files for Jira integration
jrcoak Aug 18, 2025
70836a5
Simplify Jira MCP automation to use standardized config files
jrcoak Aug 18, 2025
34f1eb2
fix: update allowed domains
loujaybee Aug 20, 2025
1706acf
Merge remote-tracking branch 'origin/main'
loujaybee Aug 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# syntax=docker/dockerfile:1.4
FROM mcr.microsoft.com/devcontainers/typescript-node:20-bullseye

# Install system dependencies in a single layer
RUN apt-get update && apt-get install -y --no-install-recommends \
postgresql-client \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

# Set working directory
WORKDIR /workspaces/gitpodflix

# Install global dependencies first
RUN npm install -g nodemon

# Create directories for package files
RUN mkdir -p frontend backend/catalog

# Copy package files for dependency caching
COPY frontend/package*.json ./frontend/
COPY backend/catalog/package*.json ./backend/catalog/

# Install dependencies using BuildKit cache
RUN --mount=type=cache,target=/root/.npm \
cd frontend && npm ci --prefer-offline --no-audit --no-fund && \
cd ../backend/catalog && npm ci --prefer-offline --no-audit --no-fund

# Copy the rest of the application
COPY . .

# Set the default user
USER node
50 changes: 28 additions & 22 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,53 +1,53 @@
{
"name": "GitpodFlix Dev Environment",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"build": {
"dockerfile": "Dockerfile",
"context": "..",
"options": [
"--build-arg", "BUILDKIT_INLINE_CACHE=1"
]
},
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {
"installZsh": true,
"configureZshAsDefaultShell": true,
"installGit": true,
"installGitLFS": true,
"installGithubCli": true
},
"ghcr.io/devcontainers/features/github-cli:1": { },
"ghcr.io/devcontainers/features/node:1": {
"version": "18",
"nodeGypDependencies": true
"installGit": false,
"installGitLFS": false,
"installGithubCli": false
},
"ghcr.io/devcontainers/features/github-cli:1": {},
"ghcr.io/warrenbuckley/codespace-features/sqlite:1": {},
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"version": "latest",
"moby": true
},
"ghcr.io/devcontainers-extra/features/renovate-cli:2": {},
"ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}
"version": "20.10",
"moby": false
}
},
"forwardPorts": [
3000,
3001,
5432
],
"postCreateCommand": ".devcontainer/setup.sh",
"postStartCommand": "./startup.sh",
"customizations": {
"vscode": {
"extensions": [

// Install AI code assistants
"GitHub.copilot",
"RooVeterinaryInc.roo-cline",
"saoudrizwan.claude-dev",

// Install other extensions
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"mtxr.sqltools",
"mtxr.sqltools-driver-sqlite",
"mtxr.sqltools-driver-mysql",
"mtxr.sqltools-driver-pg",
"bradlc.vscode-tailwindcss"

],
"settings": {
"editor.formatOnSave": true
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"typescript.preferences.importModuleSpecifier": "relative"
}
}
},
Expand All @@ -63,5 +63,11 @@
"label": "PostgreSQL"
}
},
"remoteUser": "root"
"remoteUser": "node",
"mounts": [
"source=gitpodflix-node-modules,target=${containerWorkspaceFolder}/node_modules,type=volume",
"source=gitpodflix-frontend-node-modules,target=${containerWorkspaceFolder}/frontend/node_modules,type=volume",
"source=gitpodflix-catalog-node-modules,target=${containerWorkspaceFolder}/backend/catalog/node_modules,type=volume",
"source=gitpodflix-npm-cache,target=/root/.npm,type=volume"
]
}
121 changes: 62 additions & 59 deletions .devcontainer/setup.sh
Original file line number Diff line number Diff line change
@@ -1,80 +1,83 @@
#!/bin/bash

# Exit on error
set -e

echo "🚀 Starting development environment setup..."

# Function to handle package installation
install_package() {
local package=$1
echo "📦 Installing $package..."
if ! dpkg -l | grep -q "^ii $package "; then
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends "$package"
else
echo "✅ $package is already installed"
fi
}

# Clean apt cache and update package lists
echo "🧹 Cleaning apt cache..."
apt-get clean
echo "🔄 Updating package lists..."
apt-get update

# Install system dependencies one by one with error handling
echo "📦 Installing system dependencies..."
install_package "mariadb-client"
install_package "mariadb-server"
install_package "postgresql-client"

# Verify PostgreSQL client tools are installed
# Verify PostgreSQL client tools are installed (already installed in Dockerfile)
if ! command -v pg_isready &> /dev/null; then
echo "❌ PostgreSQL client tools not properly installed"
exit 1
fi

# Start MariaDB service
echo "💾 Starting MariaDB service..."
if ! service mariadb status > /dev/null 2>&1; then
service mariadb start
else
echo "✅ MariaDB service is already running"
fi

# Verify MariaDB is running
if ! service mariadb status > /dev/null 2>&1; then
echo "❌ Failed to start MariaDB service"
exit 1
fi

# Install global npm packages
echo "📦 Installing global npm packages..."
npm install -g nodemon

# Install project dependencies
echo "📦 Installing project dependencies..."

# Install Gitpod Flix dependencies
if [ -d "/workspaces/gitpodflix-demo/frontend" ]; then
echo "📦 Installing Gitpod Flix dependencies..."
cd /workspaces/gitpodflix-demo/frontend
npm install
# Install jq if not present (for health checks)
if ! command -v jq &> /dev/null; then
echo "📦 Installing jq for JSON processing..."
sudo apt-get update && sudo apt-get install -y jq
fi

# Install catalog service dependencies
if [ -d "/workspaces/gitpodflix-demo/backend/catalog" ]; then
echo "📦 Installing catalog service dependencies..."
cd /workspaces/gitpodflix-demo/backend/catalog
npm install
fi
# Make scripts executable
chmod +x startup.sh 2>/dev/null || true
chmod +x health-check.sh 2>/dev/null || true

echo "✅ Setup completed successfully!"

# GitHub CLI authentication (optional)
if [ -n "$GH_CLI_TOKEN" ]; then
gh auth login --with-token <<< "$GH_CLI_TOKEN"
# Configure git to use GitHub CLI credentials
gh auth setup-git
else
echo "GH_CLI_TOKEN not set, skipping authentication"
echo "ℹ️ GH_CLI_TOKEN not set, skipping authentication"
fi

echo "🔧 Available commands:"
echo " ./startup.sh - Start all services"
echo " ./health-check.sh - Check service health"

# Setup Jira MCP server
echo "🚀 Setting up Jira MCP server..."

# Create config directory
mkdir -p ~/.config/gitpod

# Clone and build Jira MCP if not already present
if [ ! -d "/home/node/jira-mcp" ]; then
echo "📦 Cloning Jira MCP repository..."
cd /home/node
git clone https://github.com/MankowskiNick/jira-mcp.git
cd jira-mcp
echo "📦 Installing dependencies..."
npm install
echo "🔨 Building project..."
npm run build
else
echo "✓ Jira MCP already installed"
fi

# Create MCP configuration file
echo "⚙️ Creating MCP configuration..."
cat > ~/.config/gitpod/mcp-config.json << EOF
{
"mcpServers": {
"jira-mcp": {
"command": "node",
"args": ["/home/node/jira-mcp/build/index.js"],
"env": {
"JIRA_HOST": "${JIRA_HOST:-coakley.atlassian.net}",
"JIRA_USERNAME": "${JIRA_USERNAME:-joe@gitpod.io}",
"JIRA_API_TOKEN": "${JIRA_API_TOKEN:-your_api_token_here}",
"JIRA_PROJECT_KEY": "${JIRA_PROJECT_KEY:-MBA}",
"AUTO_CREATE_TEST_TICKETS": "true",
"JIRA_ACCEPTANCE_CRITERIA_FIELD": "customfield_10429",
"JIRA_STORY_POINTS_FIELD": "customfield_10040",
"JIRA_EPIC_LINK_FIELD": "customfield_10014"
}
}
}
}
EOF

echo "✅ Jira MCP server setup complete!"
echo "📍 Configuration: ~/.config/gitpod/mcp-config.json"
echo "📍 Server location: /home/node/jira-mcp/"
echo "🎯 Project: MBA (coakley.atlassian.net)"
98 changes: 98 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# Dependencies
node_modules
*/node_modules
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Build outputs
dist
build
.next
.nuxt
.vite

# Environment files
.env
.env.local
.env.development.local
.env.test.local
.env.production.local

# IDE and editor files
.vscode
.idea
*.swp
*.swo
*~

# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

# Git
.git
.gitignore

# Docker
Dockerfile*
docker-compose*
.dockerignore

# Logs
logs
*.log

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Coverage directory used by tools like istanbul
coverage
*.lcov

# Temporary folders
tmp
temp

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# Yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
Loading