Technologies Used
Problem Statement & Business Logic
Building an eCommerce platform that can be deployed across multiple domains while maintaining code consistency is a challenge many developers face. In my experience developing web solutions, I repeatedly encountered the same challenge: I wanted similar functionality but with unique branding. The traditional approach of creating separate codebases for each project became unsustainable. This led to the development of Corrison - a platform that provides enterprise-level eCommerce functionality while remaining flexible enough to adapt to different business needs.
The idea is for me to use this to continue to build my affiliate and print-on-demand sites. If I take on a client who wants me to build a custom site for them e.g. virtual learning environment or calendar - I can use this platform as the foundation.
Multi-Domain Deployment
Corrison uses a sophisticated settings structure that makes deployment across different environments seamless:
Base Settings: Shared configuration across all environments
Environment: Specific: Development, staging, and production settings
Site Settings: Domain-specific configuration for multi-site deployment.
Django Backend: https://corrison.corrisonapi.com
Astro Fronted https://corrisonapi.com
Target Audience
Health and Wellness
Technical Stack
Django 5.2
Django REST Framework
Astro Framework for frontend
PostgreSQLTailwind CSS and Javascript
Stripe for payment processing
Hosted on hetzner VPS hosting
Architecture & Design Patterns
frontend/
├── src/
│ ├── components/ # Reusable components
│ │ ├── EnhancedHero.astro # Advanced hero for landing pages
│ │ ├── TestimonialGrid.astro # Testimonial display component
│ │ ├── CountdownTimer.astro # Countdown timer component
│ │ ├── Header.astro # Site navigation
│ │ └── Footer.astro # Site footer
│ ├── layouts/
│ │ └── BaseLayout.astro # Main page layout
│ ├── pages/ # Route pages
│ │ ├── index.astro # Homepage (supports landing pages)
│ │ ├── blog/ # Blog routes
│ │ │ ├── index.astro # Blog listing
│ │ │ └── [slug].astro # Individual blog posts
│ │ ├── linkhubs.astro # LinkHub display
│ │ └── architecture.astro # Platform documentation
│ ├── lib/
│ │ ├── api.ts # API integration functions
│ │ └── heroicons.ts # Icon helper functions
│ ├── utils/ # Utility functions
│ │ ├── blog.ts # Blog-related utilities
│ │ ├── images.ts # Image optimization
│ │ ├── permalinks.ts # URL generation
│ │ └── frontmatter.ts # Content processing
│ ├── styles/
│ │ └── global.css # Global styles and Tailwind
│ └── types.ts # TypeScript definitions
├── public/ # Static assets
├── astro.config.mjs # Astro configuration
└── package.json # Dependencies and scripts
---
backend/
├── corrison/ # Main Django project
│ ├── settings/ # Environment-specific settings
│ ├── urls.py # Main URL configuration
│ └── wsgi.py # WSGI application
├── core/ # Core functionality
│ ├── models.py # Base models and utilities
│ └── permissions.py # Custom permissions
├── api/ # API configuration
│ ├── urls.py # API URL routing
│ └── views.py # API viewsets and routers
├── products/ # E-commerce products
│ ├── models.py # Product, Category, Variant models
│ ├── serializers.py # DRF serializers
│ └── views.py # Product viewsets
├── cart/ # Shopping cart
│ ├── models.py # Cart and CartItem models
│ ├── serializers.py # Cart serializers
│ └── views.py # Cart management views
├── orders/ # Order processing
│ ├── models.py # Order and OrderItem models
│ ├── serializers.py # Order serializers
│ └── views.py # Checkout and order views
├── blog/ # Blog functionality
│ ├── models.py # BlogPost, Category models
│ ├── serializers.py # Blog serializers
│ └── views.py # Blog viewsets
├── pages/ # CMS pages
│ ├── models.py # Page, PageFeature, Testimonial models
│ ├── serializers.py # Page serializers
│ └── views.py # Page viewsets
├── linkhub/ # LinkHub functionality
│ ├── models.py # LinkHub and Link models
│ ├── serializers.py # LinkHub serializers
│ └── views.py # LinkHub viewsets
├── courses/ # Learning Management System
│ ├── models.py # Course, Lesson, Enrollment models
│ ├── serializers.py # Course serializers
│ └── views.py # Course and enrollment viewsets
├── appointments/ # Calendar & Booking System
│ ├── models.py # CalendarUser, Appointment, Availability models
│ ├── serializers.py # Appointment serializers
│ └── views.py # Calendar and booking viewsets
└── users/ # User management
├── models.py # User profile models
├── serializers.py # User serializers
└── views.py # Authentication views
Key Features
- Product catalog with categories and variants
- Shopping cart with session persistence
- Automatic cart merging for user login
- Secure checkout with Stripe integration
- Order management and processing
- User accounts for returning customers
- Real-time stock validation
- Blog posts with featured images and YouTube embeds
- Dynamic pages with rich content
- File attachments and media management
- SEO-optimized meta fields
- Publishing controls and scheduling
- Video Backgrounds: YouTube and custom video support
- Countdown Timers: Real-time countdown to launch dates
- Prelaunch Badges: "Coming Soon" and custom badges
- Dual CTAs: Primary and secondary call-to-action buttons
- Social Proof: Integrated testimonial sections
- Scroll Indicators: Animated scroll-down indicators
- Global testimonial management
- Star ratings (1-5 scale)
- Category-based filtering
- Featured testimonial highlighting
- Multi-page testimonial relationships
- Customer photos and company details
- Multi-media link collections (videos, PDFs, audio, donations)
- Custom icons and descriptions
- Author attribution
- Background image support
- Category organization
- Course creation and management with categories
- Video lessons with YouTube integration
- Student enrollment and progress tracking
- Instructor dashboards and analytics
- Course completion certificates
- Free and paid course support
- Appointment scheduling and management
- Availability slot configuration
- Email notifications and reminders
- Payment integration for paid appointments
- Public booking pages for clients
- Recurring appointment patterns
- Regular Pages: Standard hero with image/content options
- Landing Pages: Advanced hero with video, countdown, dual CTAs
- Content Flexibility: Rich text content or custom right-side content
- Image Options: Upload or external URL support
- Landing Pages: Advanced hero sections with video backgrounds
- Blog System: Full content management with categories
- LinkHub: Consolidated links with media support
- Testimonials: Social proof sections with star ratings
- SEO Optimization: Meta fields and structured data
The platform includes full e-commerce capabilities:
- Product Catalog: Browsable products with filtering and search
- Shopping Cart: Add, update, remove items with session persistence
- Checkout Process: Multi-step checkout with shipping and payment
- Stripe Integration: Secure payment processing with webhooks
- Order Management: Order history and status tracking
- User Accounts: Optional accounts for returning customers
- Performance: Static site generation with dynamic API calls
- Security: CSRF protection, XSS protection, secure cookies
- Scalability: Modular architecture allows selective feature usage
- Developer Experience: Comprehensive TypeScript definitions and API documentation
Challenges & Solutions
Managing the VPS hosting
Learning Astro while using it for the first time
Using AI to help me code some of the apps (because its faster than me doing it myself) and being given more code than I needed or code that didnt work at all. Sometimes existing code was removed and that had to be fixed.
Bugs & Fixes
Shopping cart - being able to create a session for the cart and also needing JWT authentication for a logged in user currently needs to be fixed.
Project Outcome
I am still working on this project for the next few months so it is not complete.
Future Improvements
Build this into a headless cms that people can use. It can become a SaaS product that businesses can use to create their own sites. There is nothing more to add to the platform. The only thing to do is to continue to fix any bugs that are not working and continue improving how it works.