Skip to content

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.

Notifications You must be signed in to change notification settings

jafarbekyusupov/yappuccino

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

85 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

A platform for Certified Yappers

Django Python Bootstrap PostgreSQL AWS S3 n8n DeepSeek Groq

πŸ”₯ Live Demo

Try It Now

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

🌟 Overview

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.

πŸš€ Key Features

πŸ€– AI Integration & Automation

  • 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

πŸ“ Content Management

  • 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

πŸ‘₯ Social Features

  • 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

🎨 User Experience

  • 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

πŸ” User Management

  • 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

πŸ› οΈ Technical Stack

Backend

  • 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

Frontend

  • CSS Framework: Bootstrap 4.0
  • JavaScript: jQuery with custom AJAX implementations
  • Icons: Bootstrap Icons
  • Fonts: Google Fonts (Roboto Condensed, Underdog)

Rich Text & Media

  • Editor: CKEditor 5 with custom upload handling
  • Content Sanitization: Bleach for XSS protection
  • Image Processing: Pillow for profile picture optimization

πŸš€ Installation & Setup

Prerequisites

  • Python 3.8+
  • pip (Python package installer)
  • Virtual environment (recommended)

Quick Start

  1. Clone the repository
git clone https://github.com/jafarbekyusupov/yappuccino.git
cd yappuccino
  1. Create virtual environment
python -m venv venv
source venv/bin/activate

Tip

On Windows:

python -m venv venv
venv\Scripts\activate
  1. Install dependencies
pip install -r requirements.txt
  1. Set up the database
python manage.py makemigrations
python manage.py migrate
  1. Create a superuser
python manage.py createsuperuser
  1. Run the development server
python manage.py runserver
  1. Access the application

πŸ”§ Troubleshooting

HTTPS Error on Development Server

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:

  1. Switch to HTTP manually:
http://127.0.0.1:8000  βœ…
https://127.0.0.1:8000 ❌
  1. Clear browser cache/HSTS for localhost:
  • Chrome: Go to chrome://net-internals/#hsts β†’ Delete localhost
  • Or use incognito/private mode
  1. 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

πŸ’‘ Usage Examples

Creating a Post

  1. Register/Login to your account
  2. Click "New Post" in the navigation
  3. Add title, content (with rich text formatting), and tags
  4. Publish or save as draft

Engaging with Content

  • 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

User Management

  • Profile: Customize your profile picture and information
  • Settings: Manage privacy, notifications, and appearance
  • Activity: View your posts, comments, and voting history

🎨 Customization

Styling

  • Main styles in blog/static/blog/main.css
  • Component styles in blog/static/blog/components.css
  • Color scheme defined in CSS variables

Configuration

  • Django settings in blogpost/settings.py
  • CKEditor configuration for rich text editing
  • Bleach settings for content sanitization

πŸ”§ API Endpoints

AJAX Endpoints

  • POST /post/<id>/vote/<type>/ - Vote on posts
  • POST /post/<id>/comment/ - Add comments
  • POST /comment/<id>/vote/ - Vote on comments
  • GET /tag-suggestions/ - Tag autocomplete

πŸ§ͺ Testing

Run the test suite:

python manage.py test

πŸ“± Mobile Support

The application includes comprehensive mobile support:

  • Responsive design for all screen sizes
  • Touch-friendly interface elements
  • Mobile-optimized navigation
  • Swipe gestures for interactions

πŸš€ Deployment

Production Checklist

  • 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

πŸ“ Project Structure

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

About

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.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published