sojorn/go-backend/firebase-service-account.json
Patrick Britton 3c4680bdd7 Initial commit: Complete threaded conversation system with inline replies
**Major Features Added:**
- **Inline Reply System**: Replace compose screen with inline reply boxes
- **Thread Navigation**: Parent/child navigation with jump functionality
- **Chain Flow UI**: Reply counts, expand/collapse animations, visual hierarchy
- **Enhanced Animations**: Smooth transitions, hover effects, micro-interactions

 **Frontend Changes:**
- **ThreadedCommentWidget**: Complete rewrite with animations and navigation
- **ThreadNode Model**: Added parent references and descendant counting
- **ThreadedConversationScreen**: Integrated navigation handlers
- **PostDetailScreen**: Replaced with threaded conversation view
- **ComposeScreen**: Added reply indicators and context
- **PostActions**: Fixed visibility checks for chain buttons

 **Backend Changes:**
- **API Route**: Added /posts/:id/thread endpoint
- **Post Repository**: Include allow_chain and visibility fields in feed
- **Thread Handler**: Support for fetching post chains

 **UI/UX Improvements:**
- **Reply Context**: Clear indication when replying to specific posts
- **Character Counting**: 500 character limit with live counter
- **Visual Hierarchy**: Depth-based indentation and styling
- **Smooth Animations**: SizeTransition, FadeTransition, hover states
- **Chain Navigation**: Parent/child buttons with visual feedback

 **Technical Enhancements:**
- **Animation Controllers**: Proper lifecycle management
- **State Management**: Clean separation of concerns
- **Navigation Callbacks**: Reusable navigation system
- **Error Handling**: Graceful fallbacks and user feedback

This creates a Reddit-style threaded conversation experience with smooth
animations, inline replies, and intuitive navigation between posts in a chain.
2026-01-30 07:40:19 -06:00

13 lines
2.3 KiB
JSON

{
"type": "service_account",
"project_id": "britton86-6c1a4",
"private_key_id": "e8110c05f9145d3e0f3d426c1243110c100438d9",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCoz+1n/0FxNKSM\nhgS0W6DpltN/QOwEUUBYu/6/aQtnC0oUrdB8ROIgxbLh4e+2RswKRnut7179adqH\nPe9uChldT3mcYStDvcrsmQp1XzrOE9hUxVHM9cwf4Pt6EfPLzGUHJCph1qW9vOVn\n+kDSwyQE0t/zBf2LMDTmQVZTuPoj79BWW+WRwH472useQGh2vcUm2kGqOR+e06c6\nW8yyCNkbVNdrgIj+rb/E2TdvUBGyuJX7A6y/vD7rzcXWxaji/L9w4Iz7+ivUVqyR\nB7sMXCNYam3cejehxzXghIcyhOCizzEkbjk0Hplm7BeG3368C04re35AtLwP93AA\nKocAXX+/AgMBAAECggEABJ9Q5liYb6Ob39cpmNCresns956M999LrkJTiuUy8Trf\nZ+qMe2KdeH1BVSsNF8YffyaH627TAIhd+fcJr88p+6KZ91y3xQ6U2F6maSlW4F6t\nvUB76WtPkA3mhOSp8soheA0W9f/dIPFjrLGvBbZfLZyikjJ3S1DiGe3vEbLOcp5q\nhINV/voDERZCSc4rY4zR2tj0SRZGe3fFrlBjlZwTWapx84PSAmujYadAXXZHe1M9\nQA92WJp+2ZBVv6Q7fF3DUZVt5ONRhVrF4lboiDOyBh6faInzy7a8Rg/DZug773jK\nHTj+ON5kmnZAX3VzV5qhzMuYa9PhfMj4HWdRP3wE8QKBgQDby7Rr3UcLbXNeAUas\nEgB6klGU0lCb0IZJ4I3x7+tK8C/JYJFolP70T3piXX7uWoKcFFlqGaxziUI7QAql\n5OMm5OSuUbP3mb/MwDeywqA2G+b6wKw7aF5yY5OavT9i+PEZnH/kmafI9fXqKMAg\nqu7qBIbIHF5T9xAHlhN5+6XGUQKBgQDEnlymYjsZxgM1gw2uKu7g6wMOju4RkscH\n4uN7Ufadiop31FQgBZZJK4ahnGODaPEPwZ1vOE8R68F+Lk63TGJA+gJdKFqLuZWg\nrGShDyP2rZ7WBNtGqwgvlJ35IV56fuU2aivlNQSMjoM35PWrGC0YjcGJpMIRjS0u\nla6IO2ORDwKBgAbjfYYb60waZBFALPzbm5Q73b6yUMBxaqQKG6jHgjJZEMZY9nW2\npb72drl6gK3rvEg0AxFmOJduZ9r/iNXmNJBVgC1Odjt+YBqEs7owi2Dmwvh87Wj3\nPm6LXGbvI3twne3Vj9SUVEPiIZDzMgJUGSTQe4DuEq7DAYebVoTuNCXhAoGAJS+6\nYDGV8fL0amuF69ns4hcwtdEsj6BOClzMH2fKF9O7Cpza6E+GNAKKbQhx/cmcRhmd\nWAqzUbVgHChP9PT6ZEWkqs/WCDUqaoAQbDG74IzHzLyQaFYyryURl6vK/aoAWgFM\nmgYj/R17Ddg86oYhCVLONuU1WzJzSCtBHjz1QNsCgYEA1gMf9o8QFhvC6nBi1KcG\nIa0GZLECV5gKvA+FjfM1N0T/ZLtxpJPmGS/goSKyddYZXLnskxP4dTHgE9BZs/ZE\n/UCRdGw7fVwuI/hL9CODgGMRpbCFYLcXtGZJeSe0+7fBi14MMrBxtmAmpT0DJuZb\n6G/pBSvSYG6USbv+qOQ/C6g=\n-----END PRIVATE KEY-----\n",
"client_email": "firebase-adminsdk-5007c@britton86-6c1a4.iam.gserviceaccount.com",
"client_id": "104197666755456354541",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-5007c%40britton86-6c1a4.iam.gserviceaccount.com",
"universe_domain": "googleapis.com"
}