Database Structure Cleanup: - Move all SQL files from ./db/ to ./internal/db/ - Update sqlc.yaml to use new paths (preserving schema+setup.sql hack) - Consolidate database-related code in single directory - Remove empty ./db/ directory Injector Migration: - Move injector.go from content package to engine package - Update ContentClient interface to return map instead of slice for GetBulkContent - Update database client implementation to match interface - Remove injector dependency from enhancer (stub implementation) Demo-Site Consolidation: - Move demo-site to test-sites/demo-site for better organization - Update build scripts to use new demo-site location - Maintain all functionality while improving project structure This continues the unified architecture consolidation by moving core content processing logic to the engine and organizing related files properly.
3.5 KiB
3.5 KiB
Insertr Demo Site
This is a prototype demonstration of the Insertr edit-in-place CMS system.
What is Insertr?
Insertr allows developers to make any website content editable by simply adding a CSS class. Clients can then log in and edit content directly on their website without needing to learn a complex admin interface.
Three User Types
1. The Customer (End User)
- Sees a clean, professional website
- No editing interface visible
- Fast loading with minimal overhead
2. The Client (Content Manager)
- Logs in to see the same website with subtle edit buttons
- Clicks edit buttons to modify content inline
- Can edit both simple text and rich markdown content
- Changes are saved immediately
3. The Developer (You)
- Simple integration: just add
class="insertr"anddata-content-id="unique-id" - No complex setup or framework dependencies
- Works with any existing website
Demo Instructions
- Open
index.htmlin your browser - You'll see the customer view - Click "Login as Client" - This simulates authentication
- Click "Edit Mode: Off" to turn on editing - Now you'll see edit buttons (✏️) appear
- Click any edit button to modify content
- Try both simple text and rich content (marked with 📝)
- Navigate to
about.htmlto see how it works across pages
Technical Details
For Developers
To make content editable, just add the insertr class and data attribute:
<!-- Simple text content -->
<div class="insertr" data-content-id="hero-title">
<h1>Your Website Title</h1>
</div>
<!-- Rich content with markdown -->
<div class="insertr" data-content-id="about-text" data-content-type="rich">
<h2>About Us</h2>
<p>We help businesses succeed...</p>
</div>
Integration
Include the Insertr library in your HTML:
<link rel="stylesheet" href="insertr/insertr.css">
<script src="insertr/insertr.js"></script>
That's it! The library will automatically scan for editable elements and set up the editing interface.
Current Features
- ✅ Edit-in-place for simple text content
- ✅ Markdown editing for rich content
- ✅ Mock authentication (login/logout)
- ✅ Edit mode toggle
- ✅ Local storage persistence
- ✅ Visual feedback for saving
- ✅ Multi-page support
- ✅ Responsive design
Planned Features
- Real backend API integration
- Authentik OAuth integration
- File upload and image management
- Content versioning and rollback
- Multi-user permissions
- Admin dashboard
- Git-based deployment
Architecture
This prototype demonstrates the frontend experience. The full system will include:
- Go backend with REST API
- File-based content storage with Git versioning
- Authentik OAuth for secure authentication
- Multi-tenant support for hosting multiple client sites
- Developer tools for easy integration
Files Structure
demo-site/
├── index.html # Homepage demo
├── about.html # Additional page demo
├── assets/
│ └── style.css # Demo site styling
├── insertr/
│ ├── insertr.js # Core library
│ ├── insertr.css # Edit interface styling
│ └── components/ # Future: edit components
└── mock-api/
└── content.json # Mock backend data structure
Try It Now!
Open index.html in your browser and experience the three different user views by using the authentication controls in the top right corner.