A platform for Certified Yappers
π₯ Live Demo
Important
πΈ Cold Start Delay: This demo runs on a free-tier cloud service. If the link hasn't been clicked recently, the server may enter sleep mode.
πΈ First load could take from 10-50 seconds. After first load, following ones will be fast
Yappuccino is a social blogging platform where you can share posts, comment, vote, and repost. Plus, it uses n8n AI agent to automatically summarize everything, so you get the gist instantly.
Note
Explore the complete project overview, including UML Diagrams and in-depth explanations, provided by Cognition here.
- Built AI workflow using n8n for automated summaries
- Integrated multiple AI providers - Groq & DeepSeek (also on local version, used Ollama models)
- Real-time webhooks trigger instant processing
- Added Admin Panel - AI Summary Dashboard - for viewing and monitoring processes with live stats provided
- Rich Text Editor: CKEditor 5 integration with image upload
- Tag System: Create and manage tags with auto-slugs and aliases
- Post Management: Full CRUD operations with draft support
- Content Filtering: Advanced filtering and sorting options
- Voting System: Upvote/downvote posts and comments
- Comment System: Nested comments with threading
- Repost Functionality: Share content with attribution
- User Profiles: Customizable profiles with activity tracking
- Responsive Design: Mobile-first approach with touch-friendly interface
- Real-time Interactions: AJAX-powered voting and commenting
- Search Functionality: Full-text search across posts and content
- Tag-based Navigation: Browse content by categories
- Authentication System: Registration, login, password reset
- Profile Management: Image uploads, privacy settings
- Activity Tracking: View user's posts, comments, and interactions
- Settings Panel: Comprehensive user preferences
- Framework: Django 5.2.1
- Database: SQLite (development) / PostgreSQL (production ready)
- Authentication: Django's built-in auth system
- File Storage: Django's file handling with Pillow for images
- CSS Framework: Bootstrap 4.0
- JavaScript: jQuery with custom AJAX implementations
- Icons: Bootstrap Icons
- Fonts: Google Fonts (Roboto Condensed, Underdog)
- Editor: CKEditor 5 with custom upload handling
- Content Sanitization: Bleach for XSS protection
- Image Processing: Pillow for profile picture optimization
- Python 3.8+
- pip (Python package installer)
- Virtual environment (recommended)
- Clone the repository
git clone https://github.com/jafarbekyusupov/yappuccino.git
cd yappuccino
- Create virtual environment
python -m venv venv
source venv/bin/activate
Tip
On Windows:
python -m venv venv
venv\Scripts\activate
- Install dependencies
pip install -r requirements.txt
- Set up the database
python manage.py makemigrations
python manage.py migrate
- Create a superuser
python manage.py createsuperuser
- Run the development server
python manage.py runserver
- Access the application
- Main site: http://127.0.0.1:8000/
- Admin panel: http://127.0.0.1:8000/admin/
Problem: Getting SSL/HTTPS errors when running python manage.py runserver
Symptoms:
code 400, message Bad request syntax ('\x16\x03\x01\x06Γ\x01\x00\x06ΒΌ\x03\x03%')
You're accessing the development server over HTTPS, but it only supports HTTP.
Solutions:
- Switch to HTTP manually:
http://127.0.0.1:8000 β
https://127.0.0.1:8000 β
- Clear browser cache/HSTS for localhost:
- Chrome: Go to chrome://net-internals/#hsts β Delete localhost
- Or use incognito/private mode
- HTTPS in development:
- Packages already included in requirements.txt, install if you didnt
pip install -r requirements.txt
- If you DID install requirement.txt, then just run the following command:
python manage.py runserver_plus --cert-file cert.pem
- Register/Login to your account
- Click "New Post" in the navigation
- Add title, content (with rich text formatting), and tags
- Publish or save as draft
- Vote: Click upvote/downvote buttons on posts
- Comment: Add comments with nested replies
- Repost: Share interesting content with your followers
- Tag Navigation: Click tags to view related content
- Profile: Customize your profile picture and information
- Settings: Manage privacy, notifications, and appearance
- Activity: View your posts, comments, and voting history
- Main styles in
blog/static/blog/main.css
- Component styles in
blog/static/blog/components.css
- Color scheme defined in CSS variables
- Django settings in
blogpost/settings.py
- CKEditor configuration for rich text editing
- Bleach settings for content sanitization
POST /post/<id>/vote/<type>/
- Vote on postsPOST /post/<id>/comment/
- Add commentsPOST /comment/<id>/vote/
- Vote on commentsGET /tag-suggestions/
- Tag autocomplete
Run the test suite:
python manage.py test
The application includes comprehensive mobile support:
- Responsive design for all screen sizes
- Touch-friendly interface elements
- Mobile-optimized navigation
- Swipe gestures for interactions
- Set
DEBUG = False
- Configure allowed hosts
- Set up production database (PostgreSQL recommended)
- Configure static file serving
- Set up media file handling
- Configure email backend
- Set environment variables for secrets
yappuccino/
βββ blog/ # MAIN blog application
β βββ admin.py # admin panel config
β βββ api_views.py # api endpoints for n8n ai agent integration
β βββ apps.py # app config
β βββ ckeditor_views.py # CKEditor implementation to override conflicting views
β βββ ckeditor_upload_permissions.py # upload permissions
β βββ context_processors.py # custom context processors
β βββ forms.py # form definitions
β βββ keepalive.py # built-in auto-ping sender to solve problem of server sleep
β βββ management/ # custom management commands
β β βββ commands/
β β βββ create_superuser.py # SUPERUSER creation
β β βββ test_s3.py # s3 storage testing
β β βββ test_summarization.py # ai summarization testing
β β
β βββ migrations/ # database migrations -- mostly generate by django
β βββ models.py # database models
β βββ patch_ckeditor.py # CKEditor customization
β βββ static/blog/ # static files
β β βββ components.css # component styles
β β βββ main.css # main stylesheet
β β βββ navbar_styles.css # navigation bar styling
β β βββ js/ # javascript dir
β β βββ comment_voting.js # comment voting functionality
β β βββ main.js # core JS
β β βββ social_features.js # social interaction features
β β βββ tag_widget.js # tag selection widget
β β
β βββ templates/blog/ # HTML templates
β β βββ includes/ # reusable components
β β β βββ comment_section.html
β β β βββ filter_ctrls.html # post filtering
β β β βββ footer.html
β β β βββ pagination.html
β β β βββ sidebar.html
β β β βββ ult_post_card.html # post display component
β β βββ about.html # about page
β β βββ base.html # base template -- which other pages extend from
β β βββ home.html # homepage
β β βββ post_detail.html # post view
β β βββ post_form.html # post creation/editing
β β βββ summary_dashboard.html # ADMIN PANEL -- ai summary dashboard
β β βββ tag_list.html # tag management
β β βββ user_activity.html # user activity view
β βββ templatetags/ # custom template tags
β β βββ blog_extras.py # template helpers
β βββ urls.py # URL routing
β βββ views.py # view logic
β βββ widgets.py # custom form widgets
β
βββ users/ # USER MANAGEMENT APP
β βββ admin.py # user admin config
β βββ apps.py # app config
β βββ forms.py # user-related forms
β βββ migrations/ # user model migrations
β βββ models.py # user profile models
β βββ signals.py # user signal handlers
β βββ templates/users/ # user-related templates
β β βββ login.html # login page
β β βββ logout.html # logout page
β β βββ profile.html # user profile
β β βββ register.html # registration page
β β βββ settings.html # user settings
β βββ urls.py # user URL patterns
β βββ views.py # user view logic
β
βββ blogpost/ # PROJECT CONFIG DIRECTORY
β βββ __init__.py # package init
β βββ asgi.py # ASGI configuration
β βββ production.py # production settings
β βββ settings.py # development settings
β βββ urls.py # main URL routing
β βββ wsgi.py # WSGI configuration
β
βββ media/ # user-uploaded files (only for dev|local)
β
βββ .gitignore
βββ build.sh # deployment build script
βββ dump_data.py # database backup utils
βββ manage.py # django management script
βββ Procfile # Heroku/Render deployment
βββ README.md # TIHS FILE -- project documentation
βββ render.yaml # render.com config
βββ requirements.txt # python dependencies
βββ runtime.txt # python runtime speciifcation