A full-stack style blog frontend built with React, Vite, Redux Toolkit, React Router, Tailwind CSS, and Appwrite.
https://blog-beta-sage-79.vercel.app/
The app supports:
- User signup, login, and logout
- Protected routes for authenticated users
- Create, edit, delete, and view blog posts
- Rich text editing with TinyMCE
- Image upload and preview through Appwrite Storage
- React 19 + Vite
- React Router
- Redux Toolkit + React Redux
- React Hook Form
- Tailwind CSS
- Appwrite SDK
- TinyMCE React Editor
Before running the app, make sure you have:
- Node.js 18+ (recommended latest LTS)
- npm
- An Appwrite project with:
- Project ID
- Database ID
- Collection ID (for posts)
- Bucket ID (for post images)
- Endpoint URL
Create a .env file in the project root and add:
VITE_APPWRITE_URL=
VITE_APPWRITE_PROJECT_ID=
VITE_APPWRITE_DATABASE_ID=
VITE_APPWRITE_COLLECTION_ID=
VITE_APPWRITE_BUCKET_ID=These values are read in src/conf/conf.js.
npm installnpm run devOpen the URL shown in the terminal (usually http://localhost:5173).
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production build locallynpm run lint- Run ESLint
/- Home page/login- Sign in/signup- Create account/all-posts- View all posts (protected)/add-post- Create post (protected)/edit-post/:slug- Edit post (protected)/post/:slug- Single post page
src/
appwrite/ # Appwrite auth + database/storage services
components/ # Reusable UI and forms
pages/ # Route-level pages
store/ # Redux store and auth slice
conf/ # Environment variable mapping
- Posts are created as Appwrite documents.
- Post images are uploaded to Appwrite Storage.
- Authentication is handled using Appwrite Account sessions.
Make sure your Appwrite collection permissions allow authenticated users to create/read/update/delete their posts as needed.
This project is for learning and personal development.