A production-grade blog/content platform built using React, Redux Toolkit, Appwrite, Tailwind CSS, and Shadcn UI.
This project focuses on real-world SaaS patterns, clean architecture, and scalable frontend development.
Vercel -> https://react-appwrite-blog-tau.vercel.app/
This is a modern blog platform where users can:
- Authenticate securely
- Create and manage rich blog posts
- Interact through likes, bookmarks, and comments
- Browse content using search, tags, and pagination
- Switch between dark mode and color themes
The project is designed to be resume-worthy and interview-ready, not a tutorial clone.
- Email/password authentication (Appwrite)
- Session persistence on reload
- Protected routes
- Logout confirmation dialog
- Create, edit, delete posts
- Rich text editor
- Draft & published states
- Slug-based routing
- Cover image upload (Appwrite Storage)
- Author-only edit/delete permissions
- Like system (per user per post)
- Bookmark posts
- Comment system
- Add & delete comments
- User-based permissions
- Optimistic UI updates
- Search posts by title/content
- Category filtering
- Tag filtering
- Client-side pagination
- Skeleton loaders & empty states
- Shadcn UI components
- Tailwind CSS with design tokens
- Dark / light mode
- Multiple color themes
- Responsive layout
- Accessible dialogs and controls
- React (Vite)
- React Router v6
- Redux Toolkit
- Redux Thunks
- Tailwind CSS
- Shadcn UI
- Lucide Icons
- Appwrite
- Authentication
- Databases
- Storage
- Permissions
- react-hot-toast
- Custom theme utilities
src/ ├── app/ # Appwrite config & services ├── layouts/ # AppLayout with Navbar + Outlet ├── components/ # Reusable components │ └── ui/ # Shadcn UI components ├── pages/ # Route-based pages ├── redux/ │ ├── auth/ │ ├── posts/ │ ├── likes/ │ ├── bookmarks/ │ ├── comments/ │ └── store.js ├── utils/ # Theme & helper utilities └── main.jsx
- Create → Authenticated users
- Read → Public
- Update/Delete → Author only
- Create → Authenticated users
- Read → Public
- Delete → Comment owner
- One entry per user per post
- Indexed by
postIdanduserId
- Appwrite chosen to focus on frontend architecture
- Client-side pagination for limited datasets
- Optimistic UI for likes and comments
- Premium membership designed conceptually (not implemented)
- Feature scope intentionally frozen to avoid overengineering
Premium membership is designed but not implemented.
In a real-world system, this would include:
- Stripe / Razorpay integration
- Backend webhook verification
- Secure membership activation
- Expiry handling via cron jobs
This project demonstrates the UI and access-control layer only.
Create a .env file:
VITE_APPWRITE_URL=
VITE_APPWRITE_PROJECT_ID=
VITE_APPWRITE_DATABASE_ID=
VITE_APPWRITE_BUCKET_ID=-npm install -npm run dev
##👤 Author
Saras Mishra Frontend Developer