# Generated by Django 5.0.6 import django.utils.timezone from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [] operations = [ migrations.CreateModel( name='BlogPost', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('slug', models.SlugField(max_length=200, unique=True)), ('title', models.CharField(max_length=200)), ('excerpt', models.CharField(max_length=300)), ('body', models.TextField(help_text='Markdown.')), ('category', models.CharField(choices=[('ai', 'AI'), ('space', 'Space'), ('robotics', 'Robotics'), ('engineering', 'Engineering'), ('company', 'Company')], default='company', max_length=20)), ('author_name', models.CharField(max_length=120)), ('read_time_minutes', models.PositiveIntegerField(default=5)), ('cover_image_url', models.URLField(blank=True)), ('is_published', models.BooleanField(default=True)), ('published_at', models.DateTimeField(default=django.utils.timezone.now)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ], options={'ordering': ['-published_at']}, ), migrations.CreateModel( name='ContactSubmission', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=120)), ('email', models.EmailField(max_length=254)), ('company', models.CharField(blank=True, max_length=160)), ('role', models.CharField(blank=True, max_length=120)), ('country', models.CharField(blank=True, max_length=80)), ('interest', models.CharField(choices=[('ai-ip', 'AI Inference IP'), ('security-ip', 'Cybersecurity IP'), ('comms-ip', 'Communication IP'), ('custom-asic', 'Custom ASIC'), ('careers', 'Careers'), ('press', 'Press'), ('other', 'Other')], default='other', max_length=20)), ('message', models.TextField()), ('referrer', models.CharField(blank=True, max_length=200)), ('user_agent', models.CharField(blank=True, max_length=400)), ('ip_address', models.GenericIPAddressField(blank=True, null=True)), ('created_at', models.DateTimeField(auto_now_add=True)), ], options={'verbose_name': 'Contact submission', 'ordering': ['-created_at']}, ), migrations.CreateModel( name='Founder', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=120)), ('role', models.CharField(max_length=160)), ('domain', models.CharField(help_text='Short description of the technical domain they own.', max_length=240)), ('bio', models.TextField(help_text='~80-word bio. Markdown allowed.')), ('photo_url', models.URLField(blank=True)), ('linkedin_url', models.URLField(blank=True)), ('sort_order', models.PositiveIntegerField(default=0)), ('is_published', models.BooleanField(default=True)), ], options={'ordering': ['sort_order', 'name']}, ), migrations.CreateModel( name='JobApplication', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=120)), ('email', models.EmailField(max_length=254)), ('role_applied_for', models.CharField(max_length=160)), ('portfolio_url', models.URLField(blank=True)), ('message', models.TextField(blank=True)), ('cv', models.FileField(blank=True, null=True, upload_to='applications/%Y/%m/')), ('created_at', models.DateTimeField(auto_now_add=True)), ], options={'ordering': ['-created_at']}, ), migrations.CreateModel( name='JobOpening', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('slug', models.SlugField(max_length=120, unique=True)), ('title', models.CharField(max_length=160)), ('location', models.CharField(choices=[('surat', 'Surat, India'), ('iist', 'STIIC / IIST, Thiruvananthapuram'), ('remote', 'Remote (India)'), ('hybrid', 'Hybrid')], default='surat', max_length=20)), ('employment_type', models.CharField(default='Full-time', max_length=40)), ('description', models.TextField(help_text='Markdown.')), ('is_open', models.BooleanField(default=True)), ('posted_at', models.DateField(default=django.utils.timezone.now)), ], options={'ordering': ['-posted_at']}, ), migrations.CreateModel( name='NewsletterSignup', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('email', models.EmailField(max_length=254, unique=True)), ('source', models.CharField(blank=True, help_text='e.g. footer, blog, contact', max_length=120)), ('confirmed', models.BooleanField(default=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ], options={'ordering': ['-created_at']}, ), migrations.CreateModel( name='Product', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('slug', models.SlugField(max_length=80, unique=True)), ('name', models.CharField(max_length=120)), ('category', models.CharField(choices=[('ai', 'AI Inference'), ('security', 'Cybersecurity'), ('comms', 'Communication Protocol'), ('asic', 'Custom ASIC Services'), ('other', 'Other')], max_length=20)), ('tagline', models.CharField(max_length=200)), ('summary', models.TextField(help_text='2–3 sentence overview shown on the products grid.')), ('description', models.TextField(help_text='Long-form description shown on the product detail page (markdown).')), ('benefits', models.JSONField(blank=True, default=list, help_text='List of benefit strings. Example: ["High throughput per watt", "INT8/INT4"].')), ('features', models.JSONField(blank=True, default=list)), ('spec_table', models.JSONField(blank=True, default=list, help_text='List of {"label": "...", "value": "..."} pairs for the spec table.')), ('primary_cta_label', models.CharField(default='Request evaluation', max_length=60)), ('is_published', models.BooleanField(default=True)), ('sort_order', models.PositiveIntegerField(default=0)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ], options={'ordering': ['sort_order', 'name']}, ), ]