Nicholai 11410f9727 Initial project setup with Next.js, Tailwind CSS, TypeScript, and ESLint configuration
- Configured Next.js app with app router
- Set up Tailwind CSS with custom dark theme
- Implemented providers with SessionProvider and ThemeProvider
- Added toast system
- Configured ESLint and Prettier
- Set up pre-commit hooks with husky and lint-staged

🚀 Generated with [opencode](https://opencode.ai)

Co-Authored-By: opencode <noreply@opencode.ai>
2025-08-07 15:33:04 -06:00

105 lines
2.9 KiB
TypeScript

import { PrismaClient } from '@prisma/client'
import bcrypt from 'bcryptjs'
const prisma = new PrismaClient()
async function main() {
// Create admin user
const hashedPassword = await bcrypt.hash('admin123', 10)
const adminUser = await prisma.user.upsert({
where: { email: 'admin@biohazardvfx.com' },
update: {},
create: {
email: 'admin@biohazardvfx.com',
name: 'Admin',
password: hashedPassword,
role: 'ADMIN',
},
})
console.log('Admin user created:', adminUser)
// Create sample team members
const teamMembers = [
{
name: 'Nicholai Vogel',
title: 'Founder & CEO • VFX & CG Supervisor',
quote: 'I just work here.',
image: '/images/nicholai.jpg',
instagram: 'https://www.instagram.com/nicholai.exe/',
order: 1,
},
{
name: 'DAVANÉ',
title: 'Co-Founder • Executive Producer • VFX Supervisor',
quote: 'The Executive',
image: '/images/davane.jpg',
instagram: 'https://www.instagram.com/davaneh/',
order: 2,
},
{
name: 'Parth Gupta',
title: 'Co-Founder • Executive Producer • Comp Lead',
quote: 'Hates Matchmove',
image: '/images/parth.jpg',
instagram: 'https://www.instagram.com/nuke_fx/',
order: 3,
},
]
for (const member of teamMembers) {
await prisma.teamMember.create({
data: member,
})
}
console.log('Team members created')
// Create sample FAQ items
const faqItems = [
{
question: 'Can you work with remote clients?',
answer: 'Absolutely! Our studio relies on a fully self-hosted cloud platform, and we regularly collaborate with clients worldwide.',
order: 1,
},
{
question: 'How do I start a project with you?',
answer: 'Either use our contact form or email us at contact@biohazardvfx.com with your project details.',
order: 2,
},
{
question: 'Do you offer rush services?',
answer: 'Yes! Starting out in music videos, our pipeline was built to withstand chaos. We pride ourselves on the efficiency of our pipeline and clear communication.',
order: 3,
},
{
question: 'What software do you use?',
answer: 'Since our studio is cloud-based, we have access to a wide array of artists and the software required to meet our clients\' needs. For the nerds: our internal pipeline is built around Houdini, Solaris, Blender, and Nuke.',
order: 4,
},
{
question: 'How do you handle feedback and revisions?',
answer: 'We use collaborative review tools and keep you updated at every stage. Revisions are included as a part of our process.',
order: 5,
},
]
for (const faq of faqItems) {
await prisma.fAQ.create({
data: faq,
})
}
console.log('FAQ items created')
}
main()
.then(async () => {
await prisma.$disconnect()
})
.catch(async (e) => {
console.error(e)
await prisma.$disconnect()
process.exit(1)
})