A clean, full-stack blogging platform where users can write, publish, and explore posts across multiple categories.
- 🔐 Auth — Register, login, logout with JWT
- ✍️ Rich Text Editor — Write posts using Quill editor
- 🖼️ Image Uploads — Thumbnails and avatars via Cloudinary
- 📂 Categories — Filter posts by Agriculture, Business, Art, and more
- 👤 User Profiles — Update name, email, password and avatar
- 📋 Dashboard — Manage your own posts (view, edit, delete)
- 🌐 Authors Page — Browse all registered authors
| Layer | Tech |
|---|---|
| Frontend | React 18, Vite, React Router v7 |
| Styling | Plain CSS with CSS variables |
| Editor | react-quill-new |
| Backend | Node.js, Express |
| Database | MongoDB with Mongoose |
| Auth | JWT + bcryptjs |
| Storage | Cloudinary |
git clone https://github.com/notramm/indilogs.git
cd indilogscd server
npm installCreate server/.env:
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
PORT=5000
CLIENT_URL=http://localhost:5173
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secretnpm run devcd client
npm installCreate client/.env:
VITE_BASE_URL=http://localhost:5000/apinpm run devApp runs at http://localhost:5173
indilogs/
├── client/ # React + Vite frontend
│ ├── src/
│ │ ├── components/ # Header, Footer, PostItem, etc.
│ │ ├── pages/ # Home, Login, Register, Dashboard, etc.
│ │ ├── context/ # UserContext
│ │ └── constants/ # Quill config, categories
│ └── vite.config.js
│
└── server/ # Express backend
├── controllers/ # userControllers, postControllers
├── middleware/ # auth, error handling
├── models/ # User, Post, HttpError
├── routes/ # userRoutes, postRoutes
├── config/ # Cloudinary setup
└── index.js
Both frontend and backend are deployed on Vercel.
- Frontend uses
vercel.jsonwith Vite rewrites for SPA routing - Backend uses
@vercel/nodeto serve Express as a serverless function - Images are stored on Cloudinary (no local filesystem dependency)
Ram Muduli — @notramm