About server-side-rendering
server-side-rendering is a skill for building server-rendered applications with templates and data-driven HTML. It covers examples across Python, Node.js, and Ruby frameworks, along with caching and rendering practices.
Key features
- 01Server-rendered HTML with templates
- 02Examples for Flask, Django, and Express
- 03Template inheritance and filters
- 04Caching and rendering optimization
- 05Input validation and sanitization
Use cases
- 01Building SEO-friendly web applications
- 02Rendering HTML for traditional web apps
- 03Creating admin dashboards
- 04Producing email templates
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill server-side-renderingAfter installing, type/server-side-renderingin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/caching-and-performance.mddjango-template-examples.mddjango-templates.mdejs-template-examples.mdflask-with-jinja2-templates.mdjinja2-template-examples.mdnodejsexpress-with-ejs-templates.mdscripts/validate-schema.shtemplates/migration-template.sqlDetails
From the project READMEServer-Side Rendering
Table of Contents
Overview
Build server-side rendered applications using modern template engines, view layers, and data-driven HTML generation with caching, streaming, and performance optimization across Python, Node.js, and Ruby frameworks.
When to Use
- Building traditional web applications
- Rendering HTML on the server
- Implementing SEO-friendly applications
- Creating real-time updating pages
- Building admin dashboards
- Implementing email templates
Quick Start
Minimal working example:
# app.py
from flask import Flask, render_template, request, jsonify
from datetime import datetime
app = Flask(__name__)
# Custom Jinja2 filters
@app.template_filter('currency')
def format_currency(value):
return f"${value:.2f}"
@app.template_filter('date_format')
def format_date(date_obj):
return date_obj.strftime('%Y-%m-%d %H:%M:%S')
@app.context_processor
def inject_globals():
"""Inject global variables into templates"""
return {
'app_name': 'My App',
'current_year': datetime.now().year,
'support_email': '[email protected]'
}
# routes.py
// ... (see reference guides for full implementation)
Reference Guides
Detailed implementations in the references/ directory:
| Guide | Contents |
|---|---|
| Flask with Jinja2 Templates | Flask with Jinja2 Templates |
| Jinja2 Template Examples | Jinja2 Template Examples |
| Node.js/Express with EJS Templates | Node.js/Express with EJS Templates |
| EJS Template Examples | EJS Template Examples |
| Caching and Performance | Caching and Performance |
| Django Template Examples | Django Template Examples |
| Django Templates | Django Templates |
Best Practices
✅ DO
- Use template inheritance for DRY code
- Implement caching for frequently rendered pages
- Use template filters for formatting
- Separate concerns between views and templates
- Validate and sanitize all user input
- Use context processors for global variables
- Implement proper pagination
- Use conditional rendering appropriately
- Cache expensive queries
- Optimize template rendering
❌ DON'T
- Put business logic in templates
- Use unbounded loops in templates
- Execute database queries in templates
- Trust user input without sanitization
- Over-nest template inheritance
- Use very long template files
- Render sensitive data in templates
- Ignore template caching opportunities
- Use global variables excessively
- Mix multiple concerns in one template
Comments
Markdown supported