The most comprehensive digital archive and technical resource for Classic Mini enthusiasts worldwide (1959-2000). Free, open source, and designed to be permanently accessible.
Explore the website »
Report Bug
·
Request Feature
·
Support Server Costs
Table of Contents
Classic Mini DIY is a comprehensive web application serving as both a toolkit and permanent archive for Classic Mini enthusiasts. The project combines technical calculators, historical documentation, user profiles, a community contribution system, and AI-powered assistance to create the most complete digital resource for Classic Mini owners worldwide.
The platform is designed to be both a real-time working tool for mechanics and enthusiasts, and a permanent digital archive ensuring Classic Mini knowledge is preserved for future generations. All content is backed up across multiple cloud locations and designed to remain accessible indefinitely.
Core Technologies:
- Nuxt 4.1.2 - Vue.js framework with server-side rendering
- Vue 3 - Composition API with
<script setup>syntax - TypeScript - Strict type checking throughout
- TailwindCSS 4.1.13 - Utility-first CSS with @tailwindcss/vite
- Nuxt UI - Component library for forms, modals, accordions, and more
- Font Awesome 6 - Icon library (loaded via CDN kit)
- Supabase - Authentication, database, and file storage
- AWS Services - S3 storage, DynamoDB (legacy data)
- LangGraph SDK - AI-powered conversational assistance
- Highcharts - Interactive data visualization
- Fuse.js - Advanced fuzzy search
- PostHog - Product analytics and event tracking
- Mapbox - Location autocomplete for user profiles
Infrastructure:
- Cloudflare Workers - Production hosting (Vercel retired)
- Supabase - PostgreSQL database, Auth, Edge Functions, Storage
- AWS S3 - Intelligent tiering storage with versioning for archive assets
- PostHog - Analytics (replaced Google Analytics and Vercel Analytics)
- Bun - Package manager and script runner
- User Dashboard - Centralized hub for submissions, account settings, and activity
- Profile System - Avatar uploads, social links, location, privacy controls shared across the CMDIY ecosystem
- 8 Interactive Technical Calculators - Compression ratio, gearbox, SU carburetors, and more
- Comprehensive Digital Archive - Workshop manuals, wiring diagrams, historical documents (powered by Supabase)
- Community Contributions - Submit wheels, colors, registry entries, and documents with suggest-edit modals on every detail page
- AI-Powered Assistant - LangGraph-based conversational AI
- 10-Language Support - Full internationalization with browser detection
- Progressive Web App - Offline functionality and mobile-optimized experience
- Admin Moderation - Unified queue for reviewing all submission types with user management
- ECU Maps Store - Multi-platform tuning maps with GitHub integration
- Advanced Search - Fuse.js powered fuzzy search across all content
Classic Mini DIY is part of a broader ecosystem of applications sharing a single Supabase backend:
| Property | Description | URL |
|---|---|---|
| Classic Mini DIY (this repo) | Knowledgebase, archive, community site, and the marketplace at /exchange |
classicminidiy.com |
| Classic Mini Toolbox | iOS and Android mobile apps | App Store / Google Play |
The Mini Exchange is retired as a standalone property. The marketplace was consolidated into this repo and went live at classicminidiy.com/exchange on 2026-07-13.
theminiexchange.comnow 301s here.
All properties share authentication via Supabase with custom domain auth.classicminidiy.com. Users sign in once and their profile, avatar, and preferences carry across all platforms. Sustaining Members unlock the same benefits across all properties at every level: Member ($1.99/mo), Plus ($4.99/mo) or Pro ($9.99/mo), bought on classicminidiy.com, in the App Store or on Google Play. Patreon and YouTube channel memberships count too, once linked to a site account. The level changes only the DIY Mini Bot allowance; see classicminidiy.com/membership.
- Node.js v24 or higher
- Bun (package manager) - install instructions
- Git for version control
-
Clone the repository
git clone https://github.com/ClassicMiniDIY/classicminidiy.git cd classicminidiy -
Install dependencies
bun install
-
Start development server
bun run dev
-
Open your browser Navigate to
http://localhost:3000to see the application
Create a .env file in the root directory with the following variables:
# Supabase
SUPABASE_URL=your_supabase_project_url
SUPABASE_KEY=your_supabase_anon_key
# AWS Credentials (for legacy data and S3 storage)
dynamo_id=your_dynamodb_access_key
dynamo_key=your_dynamodb_secret_key
s3_id=your_s3_access_key
s3_key=your_s3_secret_key
# External APIs
GITHUB_API_KEY=your_github_api_key
YOUTUBE_API_KEY=your_youtube_api_key
# AI Services
NUXT_LANGGRAPH_API_URL=your_langgraph_api_url
NUXT_LANGSMITH_API_KEY=your_langsmith_api_key
# Analytics
POSTHOG_PUBLIC_KEY=your_posthog_key
POSTHOG_HOST=https://us.i.posthog.com
# Mapbox (profile location autocomplete)
NUXT_PUBLIC_MAPBOX_TOKEN=your_mapbox_token
# Public URLs
NUXT_PUBLIC_SITE_URL=https://classicminidiy.com
s3Base=https://classicminidiy.s3.us-east-1.amazonaws.combun run dev # Start development server
bun run build # Build for production
bun run start # Preview production build
bun run format # Format with Prettier — WHOLE REPO, see the note below
bun run test # Run unit tests with VitestThe technical toolbox provides interactive calculators and reference tools essential for Classic Mini maintenance and modification:
-
Compression Ratio Calculator (
/technical/compression)- Engine compression calculations with piston, crankshaft, head gasket configurations
- Real-time calculations with visual feedback
- Support for custom measurements and part specifications
-
Gearbox Calculator (
/technical/gearing)- Gear ratio calculations and speed computations
- Multiple gearbox configurations
- RPM and speed analysis tools
-
SU Carb Needle Configurator (
/technical/needles)- Interactive needle comparison with Highcharts visualization
- Comprehensive needle database
- Performance curve analysis
-
Chassis Number Decoder (
/technical/chassis-decoder)- Historical chassis number database and identification
- Year and model identification
- Production date estimation
-
Engine Number Decoder (
/technical/engine-decoder)- Engine code interpretation and specifications
- Performance data and compatibility information
- Common Clearances Reference (
/technical/clearance) - Comprehensive clearance specifications by system - Parts Equivalency Database (
/technical/parts) - Cross-reference part numbers between brands - Torque Specifications Chart (
/technical/torque) - Complete torque specification database
The archive system preserves and organizes historical Classic Mini documentation. In v8.0.0, the entire archive was migrated from DynamoDB/S3/@nuxt/content to Supabase with unified document pages, collection support, filters, search, and sort.
- Workshop Manuals (
/archive/manuals) - Complete digitized workshop manuals with full-text search - Electrical Wiring Diagrams (
/archive/electrical) - Positive and negative ground systems by year and model - Historical Advertisements (
/archive/adverts) - Period advertising materials and brochures - Vendor Catalogues (
/archive/catalogues) - Historical parts catalogs and documentation - Tuning & Modifications (
/archive/tuning) - Performance modification guides and specifications
- Document Browser (
/archive/documents) - Unified listing of all archive documents with filters, search, and sort - Collection Pages (
/archive/documents/collection/[slug]) - Grouped document collections - Document Detail Pages (
/archive/documents/[slug]) - Rich metadata, download links, and suggest-edit capability - 301 Redirects - All legacy document URLs redirect to new unified paths
- Registry System (
/archive/registry) - User-submitted Classic Mini registrations with admin approval - Wheel Fitment Library (
/archive/wheels) - Comprehensive wheel database with user photos - Color Database (
/archive/colors) - Historical paint colors with hex values and user contributions - Engine Specifications (
/archive/engines) - Complete engine database with performance specs - Vehicle Weights Reference (
/archive/weights) - Weight specifications by model and year
New in v8.0.0 — a centralized user experience:
- Submissions Management - View, filter, and expand all your submissions (wheels, colors, registry, documents) with detailed status tracking
- Submission Details - Click any submission to expand and see full details inline
- Activity Summary - At-a-glance counts of total submissions and their statuses
- Quick Actions - Links to contribute, edit profile, and manage account
- Public Profile - View your public-facing profile with avatar, display name, location, and activity summary
- Profile Editing (
/profile/edit) - Full profile management:- Avatar upload with crop and preview
- Display name
- Mapbox-powered location autocomplete (city, state, country format)
- Bio / about section
- Social links (Instagram, Facebook, YouTube, website)
- Privacy toggles (public profile, show vehicles)
- Shared Across Ecosystem - Profile data is shared with the
/exchangemarketplace and the mobile apps via Supabase
- Contributor profile pages showing submission activity and social links
- Welcome Page (
/welcome) - First-time users are redirected here after auth callback for profile setup - Unified Account Messaging - Login page explains the shared CMDIY ecosystem account
New in v8.0.0 — a unified contribution hub replacing scattered submission pages:
- Type Selection Grid - Choose from wheel fitment, color, registry, or document contributions
- Self-Contained Forms - Each contribution type has its own page with file upload support
- Suggest-Edit Modals - Every archive detail page (documents, colors, wheels) has an inline suggest-edit button
- Contribute CTAs - Archive hub and section listing pages prominently feature contribution calls-to-action
/contribute/wheel- Wheel fitment data with photo uploads/contribute/color- Paint color submissions with hex values/contribute/registry- Classic Mini registration with photos/contribute/document- Document submissions with file uploads and collection assignment
- Conversational AI - LangGraph-powered assistant with Classic Mini expertise
- Model Context Protocol (MCP) Server - A single JSON-RPC endpoint at
/mcpexposing the calculators (compression, gearbox, chassis decoder) to AI clients - Streaming Responses - Real-time AI chat with persistent conversation threads
- Context Awareness - Understanding of Classic Mini technical specifications and archive content
Every admin page shares one shell (AdminShell) with a grouped sidebar, so
navigation is identical wherever you are.
- Dashboard (
/admin) - Triage board: what is waiting for review, and how much of it - Submission Queue (
/admin/queue) - The single queue for every submission type (documents, registry, colours, wheels, edit suggestions) with approve / reject / request-changes. The old per-type review pages (/admin/{registry,wheels,colors}/review) and/admin/inboxall read this same queue and now redirect to it - Marketplace (
/admin/exchange) - Listings, moderation, messages, finds, wanted posts, social posting, announcements, newsletter - 3D Models (
/admin/models) - Model library queue, reports, sellers, sales - User Management (
/admin/users) - User administration with trust levels - Discord Roster (
/admin/discord) - Members-only Discord reconciled against paid membership - Chat Threads (
/admin/threads) - Reviewing AI chat threads
- Multi-ECU Support - Haltech, Speeduino, MegaSquirt, and more
- GitHub Integration - Real-time repository updates and release management
- Feature Matrix - Ignition maps, fuel maps, VE tables, target AFR configurations
- Promotional Banners - HeroPromo component with auto-rotating promotional carousel
- Recent Videos - YouTube channel integration
- Community Stats - Live statistics from YouTube and GitHub
- Mobile App Promotion - Native app download CTAs
The Classic Mini DIY platform exposes 50+ REST API endpoints:
GET /api/decoders/chassis- Chassis number decoding by year rangesGET /api/decoders/engine- Engine code interpretation and identification
GET /api/wheels/- Wheel fitment database with image handlingGET /api/registry/- User registration system with approval workflowGET /api/colors/- Paint color database with user contributionsGET /api/engines/- Engine specifications and performance dataGET /api/weights/- Vehicle weight specifications
POST /api/langgraph/- AI chat integration with streaming responsesPOST /mcp- Model Context Protocol server (JSON-RPC over Streamable HTTP, Bearer auth). Seeserver/mcp/README.md
GET /api/admin/queue/- Unified submission queue (list, count, approve, reject, request-changes)PUT /api/admin/listings/:id- Correct a listing's content in place, without sending it back through moderationPUT /api/admin/listings/:id/{status,tier}- Listing moderation and premium tierGET /api/admin/users/- User management and trust levelsPOST /api/admin/auth- Authentication and session management
GET /api/github/- Repository statistics, commits, and release dataGET /api/youtube/- Channel statistics and video integrationGET /api/maps/- ECU maps store with GitHub integration
GET /api/app-config.json- Mobile app backend rollout configuration
- Supabase - Auth, database, storage, and Edge Functions
- GitHub API - Repository statistics, commits, releases
- YouTube API - Channel statistics, video feeds
- AWS Services - S3 storage, DynamoDB (legacy)
- Mapbox - Geocoding for location autocomplete
- PostHog - Product analytics
Classic Mini DIY supports 10 languages with comprehensive internationalization via @nuxtjs/i18n:
| Language | Code | Status |
|---|---|---|
| English | en |
Primary / Reference |
| German | de |
Most comprehensive |
| Spanish | es |
Complete |
| French | fr |
Complete |
| Italian | it |
Complete |
| Portuguese | pt |
Complete |
| Russian | ru |
Complete |
| Japanese | ja |
Complete |
| Chinese | zh |
Complete |
| Korean | ko |
Complete |
- Browser Detection - Automatic language detection on first visit
- Persistent Preferences - Cookie-based language memory
- Dynamic Switching - Real-time language changes via the language switcher component
- SEO Optimization - Language-specific meta tags,
hreflangattributes, and localized URLs - Component-Level i18n - Each component/page uses
<i18n>blocks for scoped translations
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
-
Fork the Repository
git clone https://github.com/ClassicMiniDIY/classicminidiy.git
-
Create a Feature Branch
git checkout -b feature/AmazingFeature
-
Make Your Changes
- Follow the existing code style and conventions
- Use Vue 3 Composition API with
<script setup>syntax - Use Nuxt UI components for UI elements
- Use Font Awesome 6 icons only (no Heroicons or Lucide)
- Add translations for new text content across all 10 locales
- Add tests for new functionality
-
Test Your Changes
bun run build bun run testFormat only the files you touched — do not run
bun run formaton a branch. It rewrites the entire repo, and because contributors resolve slightly different Prettier versions, that reformats hundreds of files you never edited and buries your actual change in the diff:bunx prettier --write path/to/the/files/you/changed
-
Commit Your Changes
git commit -m 'feat: add some amazing feature' -
Push to Your Branch
git push origin feature/AmazingFeature
-
Open a Pull Request into
main
- Focus on Classic Mini Content - Ensure contributions are relevant to Classic Mini enthusiasts
- Document Changes - Update relevant documentation and comments
- Test Thoroughly - Verify functionality across different devices and browsers
- Follow Design Patterns - Use Nuxt UI components, TailwindCSS, and existing patterns
- Consider Internationalization - Add translation keys for new text content in all 10 locales
- Accessibility - Follow WCAG 2.2 AA standards
You don't need to write code to contribute! Visit classicminidiy.com/contribute to submit:
- Wheel fitment data and photos
- Paint color information
- Classic Mini registry entries
- Workshop manuals and historical documents
The application is deployed to Cloudflare Workers by
.github/workflows/deploy-cloudflare.yml on every push to main. CI owns the deploy — a
local wrangler deploy is reverted by the next merge. Vercel is retired and vercel.json
has been removed.
To build and preview locally:
# Build the application
bun run build
# Preview the production build locally
bun run start- Node.js v24+
- Bun package manager
- Install Command:
bun install --frozen-lockfile - Build Command:
bun run build - Output Directory:
.nuxt/dist - Environment Variables: See Environment Setup
- Server-Side Rendering - Pre-rendered pages for optimal SEO and performance
- Code Splitting - Optimized bundle sizes with manual chunks
- Image Optimization - WebP and AVIF formats with responsive sizing
- PWA Caching - Service worker with intelligent caching strategies
- Edge Functions - Global distribution for API routes
- CDN - S3 static assets with intelligent tiering
- Console Stripping -
drop_console: truein production builds
- Bug Reports - GitHub Issues
- Feature Requests - GitHub Issues
- Discussions - GitHub Discussions
Help keep the servers running and the project growing:
Your support helps cover:
- Server hosting and Supabase costs
- Database and storage fees
- CDN and bandwidth costs
- Development tools and services
- Classic Mini DIY YouTube - Video tutorials and builds
- Classic Mini Toolbox - iOS and Android mobile apps
- Seven Mini Parts - SU needle charts and technical specifications
- MintyLamb - Original needle configurator inspiration
- MiniColours.co.uk - Color reference database
- miniweights.co.uk - Vehicle weight specifications (archived)
- mk1-performance.com - Historical archive content (archived)
- Classic Mini Forums - Technical knowledge and specifications
- User Submissions - Registry entries, wheel photos, color contributions, and documents
- Community Feedback - Bug reports, feature requests, and improvements
- Nuxt - Vue.js framework
- Nuxt UI - Component library
- TailwindCSS - Utility-first CSS
- Supabase - Backend-as-a-service
- Highcharts - Data visualization
- Fuse.js - Fuzzy search
- LangGraph - AI agent framework
- PostHog - Product analytics
- Font Awesome - Icon library
Distributed under the GNU General Public License v3.0.
This ensures that:
- The project remains free and open source
- Modifications must also be open source
- Commercial use is permitted
- The project can be freely distributed
See LICENSE file for more information.
Classic Mini DIY - Preserving Classic Mini knowledge for future generations
Made with love by the Classic Mini community
