- User auth: registration, login, logout, email password reset
 - Profiles: avatar, bio, last-seen, follower counts
 - Posts: create, pagination
 - Search: Elasticsearch full-text search on posts
 - Live translation: Microsoft translation API
 - Social: follow/unfollow users, personalized timeline
 - Security: CSRF protection, hashed passwords
 - Production-ready: .env, logging, error pages, deploy on Render
 
Home Page
Translate Function in Explore Page
Search Function
Profile
Edit Profile
Follow/Unfollow
Sign In
Register
Password Reset

- Flask (routes,templates)
 - Flask-SQLAlchemy (ORM)
 - Flask-WTF (forms/CSRF)
 - Flask-babel (Text translation)
 - Flask-mail (emails)
 - Flask-moment (time)
 - Flask-Migrate (schema changes)
 - Flask-Login (auth)
 - Elasticsearch (Search)
 - Jinja2 (views)
 - Bootstrap (UI)
 - Gunicorn (depoly)
 - Render (deploy)
 
- python-3.11.9
 - pip
 
app/ package with blueprints:
- auth (login, logout, register, reset password)
 - main (home, explore, posts, profiles, follow)
 - errors (errorhandler)
 
- Clone & create venv
 - Create .env
 - Initialize DB
 - Flask run
 
Search (Elasticsearch)
- Local: if ELASTIC_HOST is set (http://localhost:9200) and ES is running, the app indexes/searches with ES.
 - Render: If ES is not available: indexing is safely skipped and search falls back to a simple SQL LIKE so the UI still works. No crashes.
 
Email (Password Reset)
- Local: set EMAIL_ENABLED=1, http://localhost:8025
 - Render: set EMAIL_ENABLED=0, most real email providers require a verified account (often paid or limited free tier)
 
Translator (Live Translation)
- Microsoft translator in Azure
 - MS_TRANSLATOR_KEY=your-translator-key
 
- Push to GitHub
 - Pick your repo
 - Build command: pip install -r requirements.txt
 - Start command: bash start.sh
 - Manage environment
 
Built by following <Tutorial Title/Author/Link> with custom features