Biohazard VFX Website - Next.js Modernization

Overview

This document details the complete modernization of the Biohazard VFX website from a static HTML/CSS/JavaScript site to a modern Next.js application with React, TypeScript, and a full content management system.

Date: August 15, 2025
Original Site: Static HTML/CSS/JS in /BiohazardVFX_Website
New Site: Next.js app in /BiohazardVFX_Website/biohazard-vfx

🚀 What Was Accomplished

1. Complete Technology Stack Upgrade

From:

  • Static HTML files
  • Vanilla JavaScript
  • Plain CSS with custom properties
  • Manual content updates
  • No build system

To:

  • Next.js 15.4.6 with App Router
  • React 19 with TypeScript
  • Tailwind CSS 3.4 for styling
  • Prisma ORM with SQLite database
  • NextAuth.js for authentication
  • Modern build pipeline with hot reload

2. New Features Implemented

Content Management System

  • Full admin dashboard for managing all site content
  • Secure authentication system
  • Database-driven content (no more manual file editing)

Blog System

  • Blog listing page with article previews
  • Individual blog post pages with rich content
  • Category and author management
  • SEO-optimized blog structure

Enhanced Project Portfolio

  • Dedicated projects listing page at /projects
  • Dynamic project grid with all 8 original projects
  • Individual project pages with video/embed support
  • Credits and info display from original text files
  • Responsive grid layout with size variations

Modern UI/UX

  • Preserved original dark theme aesthetic
  • Smooth animations and transitions
  • Mobile-responsive design
  • Improved navigation with left-side slide-in menu
  • Interactive team menu overlay

3. Technical Improvements

Performance

  • Automatic code splitting
  • Image optimization with Next.js Image component
  • Lazy loading for better initial load times
  • Optimized font loading

Developer Experience

  • Full TypeScript support with type safety
  • Component-based architecture
  • Hot module replacement
  • ESLint configuration
  • Organized file structure

SEO & Accessibility

  • Next.js metadata API for SEO
  • Structured data for search engines
  • ARIA labels for accessibility
  • Semantic HTML structure

📁 Project Structure

biohazard-vfx/
├── src/
│   ├── app/                    # Next.js App Router pages
│   │   ├── admin/             # Admin dashboard pages
│   │   │   ├── login/         # Admin login
│   │   │   └── page.tsx       # Dashboard home
│   │   ├── api/               # API routes for content management
│   │   ├── blog/              # Blog pages
│   │   │   ├── [slug]/        # Individual blog posts
│   │   │   └── page.tsx       # Blog listing
│   │   ├── contact/           # Contact form page
│   │   ├── crew/              # Team/crew page
│   │   ├── faq/               # FAQ page
│   │   ├── projects/          # Project pages
│   │   │   ├── [id]/          # Individual projects
│   │   │   └── page.tsx       # Projects listing
│   │   ├── globals.css        # Global styles
│   │   ├── layout.tsx         # Root layout
│   │   └── page.tsx           # Homepage
│   ├── components/            # Reusable React components
│   │   ├── Navigation.tsx     # Site navigation (updated)
│   │   ├── HeroSection.tsx    # Hero video section
│   │   ├── ProjectsGrid.tsx   # Project portfolio grid
│   │   ├── TeamMenu.tsx       # Team overlay menu
│   │   ├── Footer.tsx         # Site footer
│   │   ├── TestimonialsSection.tsx  # Client testimonials
│   │   ├── ProcessSection.tsx       # VFX process visualization
│   │   ├── ServicesSection.tsx      # Studio services showcase
│   │   └── Providers.tsx      # Auth providers
│   ├── lib/                   # Utilities
│   │   ├── auth.ts           # NextAuth configuration
│   │   └── prisma.ts         # Prisma client
│   └── types/                 # TypeScript definitions
│       ├── index.ts          # Data models
│       └── next-auth.d.ts    # Auth types
├── prisma/
│   ├── schema.prisma         # Database schema
│   ├── seed.ts              # Database seeding
│   └── migrations/          # Database migrations
├── public/                   # Static assets
│   ├── images/              # Image files
│   ├── videos/              # Video files
│   └── projects/            # Project assets
└── Configuration files
    ├── next.config.js       # Next.js config
    ├── tailwind.config.js   # Tailwind CSS config
    ├── tsconfig.json        # TypeScript config
    └── package.json         # Dependencies

🔧 How to Use

Starting the Development Server

cd /home/Nicholai/Nextcloud/Dev/BiohazardVFX_Website/biohazard-vfx
npm run dev

The site will be available at: http://localhost:3000

Accessing the Admin Dashboard

  1. Navigate to: http://localhost:3000/admin/login
  2. Login with:
    • Email: admin@biohazardvfx.com
    • Password: biohazardadmin2025!
  3. Dashboard Features:
    • Projects Management
    • Blog Management
    • Media Library
    • Team Management
    • FAQ Management

Database Management

# View database
npx prisma studio

# Create new migration
npx prisma migrate dev --name your-migration-name

# Seed database
npx tsx prisma/seed.ts

Building for Production

npm run build
npm start

🗺️ Site Map

Public Pages

  • / - Homepage with hero video, about, projects, team, crew sections
  • /projects - Dedicated projects listing page
  • /projects/[id] - Individual project pages
  • /contact - Contact form with Web3Forms integration
  • /faq - Frequently asked questions
  • /crew - Detailed team page with bios
  • /blog - Blog listing page
  • /blog/[slug] - Individual blog posts

Admin Pages (Protected)

  • /admin - Dashboard home
  • /admin/login - Admin login
  • /admin/projects - Manage projects
  • /admin/blog - Manage blog posts
  • /admin/media - Media library
  • /admin/team - Manage team members
  • /admin/faq - Manage FAQs

🔄 Data Migration

Projects

All 8 projects from the original site have been preserved:

  1. Biohazard VFX Showreel
  2. Post Malone Ft. Morgan Wallen - "I Had Some Help"
  3. "305" Jordan Adetunji ft Bryson Tiller
  4. The Temper Trap - Sweet Disposition (ARTBAT Remix)
  5. 2Hollis "Album Trailer"
  6. Enhypen "Bad Desire"
  7. SNIPES x Adidas — 2024 Holiday Campaign
  8. 1900Rugrat "One Take Freestyle"

Content

  • About text preserved from written/about_us.txt
  • Crew story from written/crew.txt
  • FAQ data from written/faq.json
  • All project credits and info files maintained
  • Blog posts migrated from JSON to database

🔄 Recent Improvements

Navigation System (August 2025)

  • Redesigned Navigation: Replaced the full-screen overlay menu with a sleek left-side sliding panel
  • Less Intrusive: The new navigation slides in from the left and only covers a portion of the screen
  • Improved UX: Added backdrop blur, outside click detection, and keyboard escape functionality
  • Consistent Design: Matches the site's dark theme with subtle borders and proper spacing
  • Better Mobile Experience: More compact and easier to use on mobile devices

Visual Enhancements (August 2025)

  • Comprehensive Visual Upgrade: Added images and visual elements across all pages
  • About Section: Two-column layout with studio image
  • Blog Section: Added featured header image
  • Projects Section: Dedicated projects listing page with header image
  • Crew/Team Section: Added team collaboration image
  • FAQ Section: Added visual element to break up text
  • Contact Page: Added studio image to complement form
  • Project Pages: Added hero images and galleries
  • New Sections: Added testimonials, process, and services sections

Admin Dashboard Improvements (August 2025)

  • Database Integration: All content now managed through database instead of localStorage
  • API Routes: Created comprehensive API for content management
  • Improved Forms: Enhanced project creation/editing with direct text input for credits and info
  • Better Error Handling: Improved error messages and logging throughout the admin interface
  • Enhanced UX: Added backdrop click to close modals and improved form layouts
  • Fixed CRUD Operations: Resolved API endpoint mismatches and method implementations
  • Enhanced Security: Improved authentication checks for all admin operations
  • Upload Integration: Fixed file upload functionality with proper authentication

📋 What Needs to Be Done Next

High Priority

  1. ESLint Configuration

    • Resolve remaining ESLint errors throughout the codebase
    • Update ESLint configuration for Next.js 15 compatibility
    • Address TypeScript typing issues
    • Fix undefined variable references
  2. Build Process

    • Resolve build warnings and errors
    • Fix Next.js configuration issues
    • Address component import errors
    • Ensure successful production build
  3. Testing & Verification

    • Test all admin CRUD operations
    • Verify file upload functionality
    • Confirm database connectivity
    • Validate authentication flow

Medium Priority

  1. Authentication Enhancement

    • Add password reset functionality
    • Implement role-based permissions
    • Add session management UI
    • Create user profile editing
  2. Content Versioning System

    • Implement version history for blog posts
    • Add version history for projects
    • Create rollback functionality
  3. SEO Optimization

    • Add sitemap generation
    • Implement blog RSS feed
    • Add Open Graph images
    • Create robots.txt
  4. Performance Optimization

    • Implement image optimization pipeline
    • Add caching strategies
    • Optimize video loading
    • Implement lazy loading for projects

Low Priority

  1. Enhanced Features

    • Add project filtering/search
    • Implement newsletter signup
    • Create client portal
    • Add testimonials section
  2. Testing & Documentation

    • Write unit tests for components
    • Add integration tests
    • Create API documentation
    • Write deployment guide

🚀 Deployment Considerations

Environment Variables

Create a .env.production file with:

DATABASE_URL="your-production-database-url"
NEXTAUTH_URL="https://biohazardvfx.com"
NEXTAUTH_SECRET="generate-a-secure-secret"
WEB3FORMS_ACCESS_KEY="your-web3forms-key"
UPLOADTHING_SECRET="your-uploadthing-secret"
UPLOADTHING_APP_ID="your-uploadthing-app-id"

Database

  • Consider migrating from SQLite to PostgreSQL for production
  • Set up automated backups
  • Implement database migrations strategy

Hosting Options

  • Vercel - Optimal for Next.js apps
  • Netlify - Good alternative
  • Self-hosted - Using Node.js server

CDN & Media

  • Consider CDN for video content
  • Optimize image delivery
  • Implement proper caching headers

🎯 Summary

The Biohazard VFX website has been successfully modernized from a static site to a dynamic, database-driven Next.js application. The new architecture provides:

  • Better maintainability through component-based structure
  • Enhanced performance with modern optimization techniques
  • Improved developer experience with TypeScript and hot reload
  • Content management capabilities through the admin dashboard
  • Scalability for future features and growth

The database functionality has been fixed and all content (projects, blog posts, team members, FAQs) is now properly managed through the admin CMS. API routes have been corrected to support full CRUD operations. The foundation is now in place for a modern, professional web presence that can grow with the company's needs while maintaining the original aesthetic and brand identity.

Note: The application currently has ESLint configuration issues that need to be resolved for a successful production build. These issues are being addressed as the next priority.

Description
Biohazard VFX's public facing website
Readme 4 GiB
Languages
JavaScript 98.9%
TypeScript 0.9%
CSS 0.2%