Project is live at https://readersstation.onrender.com/
ReadersStation is a Django-powered social blogging platform where users can publish posts, follow other contributors, bookmark favorite content, and explore trending feeds by category. It features authentication, user profiles, rich post management, search and filter capabilities, and an intuitive UI optimized with WhiteNoise for static assets.
GitHub Repository: https://github.com/GaneshNeupane01/ReadersStation.git
- User registration, login, and profile management
- Create, read, update, and delete (CRUD) posts
- Image uploads via Cloudinary
- Follow and bookmark other users and posts ,commenting on posts ,leaderboard
- Topic-based search and trending feeds
- Responsive design with Bootstrap
- Optimized static asset delivery with WhiteNoise
- Backend: Python, Django 5.0.4
- Database: SQLite
- Deployment: Gunicorn, WhiteNoise
- Frontend: HTML5, CSS3, Bootstrap
- Media Storage: Cloudinary
- Version Control: Git, GitHub
- Python 3.11+
- pip
- virtualenv
- Docker & Docker Compose (optional for containerized setup)
- Cloudinary account (for media storage)
git clone https://github.com/GaneshNeupane01/ReadersStation.git
cd ReadersStationpython -m venv venv
# Linux/macOS
source venv/bin/activate
# Windows
venv\Scripts\activatepip install -r requirements.txtCreate a .env file in the project root (or set environment variables) with your Cloudinary credentials:
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secretUpdate settings.py to load these variables (using os.environ).
python manage.py migratepython manage.py createsuperuserpython manage.py runserverVisit http://127.0.0.1:8000/ to see the app.
docker build -t readersstation .Provide Cloudinary credentials via environment variables:
docker run -d -p 8000:8000 \
-e CLOUDINARY_CLOUD_NAME=your_cloud_name \
-e CLOUDINARY_API_KEY=your_api_key \
-e CLOUDINARY_API_SECRET=your_api_secret \
readersstationThe app will be available at http://localhost:8000/.
- All media files (user profile images, post images) are stored in Cloudinary.
- In models, images use:
from cloudinary_storage.storage import MediaCloudinaryStorage
image = models.ImageField(
upload_to='Blog/profile_images/',
null=True,
blank=True,
storage=MediaCloudinaryStorage()
)- Ensure your Cloudinary credentials are set as environment variables for both local and Docker setups.
readersstation/
├─ manage.py
├─ readersstation/
│ ├─ settings.py
│ ├─ urls.py
│ └─ wsgi.py
├─ Blog/
│ ├─ models.py
│ ├─ views.py
│ └─ templates/
├─ static/
├─ media/
└─ requirements.txt
└─ Dockerfile
Email: ganeshneupane1357@gmail.com Portfolio: https://ganesh-neupane.com.np
