Project Details

Corrison API Headless CMS Platform

May 2025-September 2025

Corrison API has been created using a headless, API approach using Django CMS backend and an Astro Framework frontend.

 

 

The Corrison platform uses a robust multi-layer architecture to power its headless capabilities, combining the speed and flexibility of an Astro.js frontend with the strength of Django’s REST API for seamless content delivery across platforms. This API-first approach ensures performance, security, and scalability.

Designed to make launching and managing websites, custom calendars, virtual learning environments, or eCommerce stores effortless. Corrison delivers fast-loading, mobile-first sites that look great on any device. With its solid foundation changing colours, fonts, and layouts takes minutes, making it easy to spin up multiple branded sites in under a day—one tool, endless websites.

Headless API Structure
Corrison has been created using a headless, API approach. One site. Many uses. It uses a Django-based API that serves content (blog posts, products, pages) to any front‐end. Right now, I am using the Astro framework as the frontend.
It includes a CMS backend built with Django and Django REST Framework, powering multiple websites with a shared API infrastructure. 

Single API Endpoint
Corrison uses a Single API endpoint. I deploy the Django app once (e.g. at corrison.yourdomain.com), and it exposes REST or GraphQL endpoints like:
GET /posts/
GET /products/
GET /pages/

The front-end then fetches the data.

Corrison API Headless CMS Platform

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 SettingsShared 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

E-commerce Module

  • 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

 

Content Management System

  • 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

 

Advanced Landing Pages

  • 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

 

Testimonial System

  • Global testimonial management
  • Star ratings (1-5 scale)
  • Category-based filtering
  • Featured testimonial highlighting
  • Multi-page testimonial relationships
  • Customer photos and company details

 

LinkHub (Link-in-Bio)

  • Multi-media link collections (videos, PDFs, audio, donations)
  • Custom icons and descriptions
  • Author attribution
  • Background image support
  • Category organization

 

Learning Management System

  • 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

 

Calendar & Booking System

  • Appointment scheduling and management
  • Availability slot configuration
  • Email notifications and reminders
  • Payment integration for paid appointments
  • Public booking pages for clients
  • Recurring appointment patterns

 

Enhanced Hero Sections

  • 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

 

Main Platform (corrisonapi.com)

  • 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

 

E-commerce Implementation

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

 

Technical Features

  • 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.

Back to Portfolio

© 2024 Djangify. All rights reserved.