feat: major API restructure and Vue.js frontend integration

- Centralize API endpoints in dedicated api app with v1 versioning
- Remove individual API modules from parks and rides apps
- Add event tracking system with analytics functionality
- Integrate Vue.js frontend with Tailwind CSS v4 and TypeScript
- Add comprehensive database migrations for event tracking
- Implement user authentication and social provider setup
- Add API schema documentation and serializers
- Configure development environment with shared scripts
- Update project structure for monorepo with frontend/backend separation
This commit is contained in:
pacnpal
2025-08-24 16:42:20 -04:00
parent 92f4104d7a
commit e62646bcf9
127 changed files with 27734 additions and 1867 deletions

View File

@@ -3,6 +3,7 @@ from django.utils.text import slugify
from django.contrib.contenttypes.fields import GenericRelation
from apps.core.models import TrackedModel
from .company import Company
import pghistory
# Shared choices that will be used by multiple models
CATEGORY_CHOICES = [
@@ -19,6 +20,7 @@ CATEGORY_CHOICES = [
Categories = CATEGORY_CHOICES
@pghistory.track()
class RideModel(TrackedModel):
"""
Represents a specific model/type of ride that can be manufactured by different
@@ -40,7 +42,7 @@ class RideModel(TrackedModel):
max_length=2, choices=CATEGORY_CHOICES, default="", blank=True
)
class Meta:
class Meta(TrackedModel.Meta):
ordering = ["manufacturer", "name"]
unique_together = ["manufacturer", "name"]
@@ -52,6 +54,7 @@ class RideModel(TrackedModel):
)
@pghistory.track()
class Ride(TrackedModel):
"""Model for individual ride installations at parks"""
@@ -134,7 +137,7 @@ class Ride(TrackedModel):
)
photos = GenericRelation("media.Photo")
class Meta:
class Meta(TrackedModel.Meta):
ordering = ["name"]
unique_together = ["park", "slug"]
constraints = [
@@ -203,6 +206,7 @@ class Ride(TrackedModel):
super().save(*args, **kwargs)
@pghistory.track()
class RollerCoasterStats(models.Model):
"""Model for tracking roller coaster specific statistics"""