Teacher Bio Pages & Public Visibility
✅ Privacy Issue Fixed
The public calendar no longer shows student names or lesson details to unauthenticated users.
Now shows: - ✅ "Piano Lesson" instead of "Piano - Sarah Johnson" - ✅ Time slots (for availability reference) - ✅ Lesson types (Piano, Guitar, Violin, etc.) - ❌ NO student names - ❌ NO lesson notes/details
🎓 Teacher Bio Pages (Recommended Feature)
Why Teachers Should Be Public:
Unlike students (whose privacy MUST be protected), teachers are: - Marketing their services to prospective students - Public figures within their professional capacity - Need discoverability for studio growth
What to Show on Teacher Bios:
✅ Public Information: - Professional photo/headshot - First name + Last name - Specializations (Piano, Guitar, Vocal, etc.) - Years of experience - Education/credentials - Teaching philosophy - Student testimonials (with permission) - Available time slots - Pricing (optional) - Awards/performances
❌ Private Information: - Home address - Personal phone number (use studio contact) - Personal email (use studio email) - Current student names - Student progress details
📄 Recommended Implementation
1. Public Teacher Directory
Page: /teachers (no auth required)
// Example: /app/teachers/page.tsx
export default function TeachersPage() {
return (
<div>
<h1>Meet Our Instructors</h1>
{/* Grid of teacher cards */}
<div className="grid grid-cols-3 gap-6">
<TeacherCard
name="John Smith"
photo="/teachers/john.jpg"
specialties={['Piano', 'Theory']}
bio="15 years of teaching experience..."
link="/teachers/john-smith"
/>
{/* More teachers */}
</div>
</div>
)
}
2. Individual Teacher Bio Pages
Page: /teachers/[slug] (no auth required)
// Example: /app/teachers/[slug]/page.tsx
export default function TeacherBioPage({ params }) {
const teacher = getTeacher(params.slug)
return (
<div>
{/* Hero section */}
<div className="flex gap-6">
<img src={teacher.photo} className="w-48 h-48 rounded-full" />
<div>
<h1>{teacher.full_name}</h1>
<p className="text-xl">{teacher.specialties.join(', ')}</p>
<button>Book a Trial Lesson</button>
</div>
</div>
{/* Bio section */}
<section>
<h2>About {teacher.first_name}</h2>
<p>{teacher.bio}</p>
</section>
{/* Credentials */}
<section>
<h2>Education & Experience</h2>
<ul>
<li>{teacher.education}</li>
<li>{teacher.years_experience} years teaching</li>
</ul>
</section>
{/* Testimonials */}
<section>
<h2>What Students Say</h2>
{teacher.testimonials.map(t => (
<blockquote key={t.id}>
"{t.text}"
<cite>- {t.student_first_name}</cite>
</blockquote>
))}
</section>
{/* Availability calendar (generic) */}
<section>
<h2>Availability</h2>
<Calendar
teacherId={teacher.id}
showAvailabilityOnly={true} // Only show open slots
/>
</section>
</div>
)
}
3. Backend Model Additions
Add to Teacher model:
class Teacher(models.Model):
# Existing fields...
# Public bio fields
public_bio = models.TextField(blank=True, help_text="Public-facing biography")
education = models.TextField(blank=True)
years_experience = models.IntegerField(default=0)
awards = models.TextField(blank=True)
teaching_philosophy = models.TextField(blank=True)
# Visibility
public_profile = models.BooleanField(default=True, help_text="Show in public directory")
accepting_students = models.BooleanField(default=True)
# Contact (studio contact, not personal)
public_email = models.EmailField(blank=True, help_text="Studio email for inquiries")
# SEO
slug = models.SlugField(unique=True, help_text="URL-friendly name")
meta_description = models.CharField(max_length=160, blank=True)
4. Public Testimonials
New model:
class Testimonial(models.Model):
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)
student_first_name = models.CharField(max_length=50) # Only first name!
text = models.TextField()
rating = models.IntegerField(default=5, validators=[MinValueValidator(1), MaxValueValidator(5)])
approved = models.BooleanField(default=False) # Admin approval required
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['-created_at']
🔒 Privacy Balance
Students:
- ❌ Never show names publicly
- ❌ Never show schedules to other students
- ❌ Never show contact info without permission
- ✅ Only show to their teacher and admins
Teachers:
- ✅ Public profiles for marketing
- ✅ Show availability (not specific student times)
- ✅ Show "John is busy 2-3 PM" (not "teaching Sarah")
- ✅ Professional photo and credentials
- ❌ Don't expose personal contact info (use studio contact)
- ❌ Don't list current students by name
📊 Public Calendar Display
For unauthenticated users viewing teacher schedules:
GOOD:
📅 Ms. Smith's Schedule - Tuesday, Dec 20
10:00 AM - 11:00 AM: Available
11:00 AM - 12:00 PM: Busy (Piano lesson)
12:00 PM - 1:00 PM: Available
1:00 PM - 2:00 PM: Busy (Lesson)
2:00 PM - 3:00 PM: Available
BAD:
📅 Ms. Smith's Schedule - Tuesday, Dec 20
10:00 AM - 11:00 AM: Available
11:00 AM - 12:00 PM: Teaching Sarah Johnson (Piano) ❌
12:00 PM - 1:00 PM: Available
1:00 PM - 2:00 PM: Teaching Mike Chen (Guitar) ❌
🚀 Next Steps
- Create Teacher Directory Page
- Public-facing page showing all teachers
- Filterable by instrument/specialty
-
"Book Trial Lesson" call-to-action
-
Create Individual Teacher Bio Pages
- Professional headshot
- Biography and credentials
- Teaching philosophy
- Student testimonials
-
Availability calendar (generic)
-
Add Teacher Profile Management
- Dashboard section for teachers to update their bio
- Upload professional photo
-
Manage what's public vs private
-
SEO Optimization
- Structured data (schema.org/Person)
- Meta descriptions
- Friendly URLs (/teachers/john-smith)
- Social media open graph tags
📝 Example Teacher Bio Template
# Meet John Smith - Piano & Music Theory Instructor
## About John
With over 15 years of teaching experience, John specializes in classical piano
and music theory. He holds a Master's degree in Music Education from Juilliard
and has helped hundreds of students achieve their musical goals.
## Teaching Philosophy
"Every student learns differently. My approach is to meet students where they
are and guide them on their unique musical journey with patience, expertise,
and genuine enthusiasm."
## Specialties
- Classical Piano (Beginner to Advanced)
- Music Theory & Composition
- Exam Preparation (ABRSM, RCM)
- Adult Learners Welcome
## What Students Say
⭐⭐⭐⭐⭐ "John made learning piano so much fun!" - Sarah
⭐⭐⭐⭐⭐ "Best teacher I've ever had." - Mike
⭐⭐⭐⭐⭐ "Patient and knowledgeable." - Emma
## Book a Lesson
Ready to start your musical journey? [Book a trial lesson] with John today!
Summary: Teachers should absolutely have public bios! This is industry-standard for music schools and helps with student recruitment while maintaining student privacy.