A full-stack, modern blog publishing platform powered by Appwrite and React.
Explore Features »
Getting Started
·
Deployment
·
Contributing
·
Issues
A feature-rich, open-source blogging platform built with React, Appwrite, and Redux Toolkit. Write, edit, and publish content with ease using an intuitive UI and powerful backend.
- 🌗 Light/Dark mode toggle support
- 🔐 Authentication (Signup/Login/Logout)
- 📄 Create, edit, delete articles
- 📷 Upload featured images
- 🔒 Access-controlled CRUD operations
- 📋 Rich-text editor via TinyMCE
- 🤝 Redux Toolkit integration
- 🌐 HTML parsing using html-react-parser
- ✅ Form handling with react-hook-form
-
- Auth
- Database
- Storage (Bucket)
- Node.js >= 18.x
- Appwrite Project & API Keys
- Clone the repo:
git clone https://github.com/UdayIge/megaBlog.git
cd megaBlog- Install dependencies:
npm install- Set up environment variables in
.env:
VITE_APPWRITE_PROJECT_ID=your_project_id
VITE_APPWRITE_API_ENDPOINT=https://cloud.appwrite.io/v1
VITE_APPWRITE_DATABASE_ID=your_database_id
VITE_APPWRITE_COLLECTION_ID=your_collection_id
VITE_APPWRITE_BUCKET_ID=your_bucket_id
VITE_TINYMCE_API_KEY=''- Start development server:
npm run dev- Push code to GitHub
- Connect repo on Vercel
- Set up environment variables in Vercel dashboard
- Deploy and go live!
Create a vercel.json file:
{
"buildCommand": "npm run build",
"outputDirectory": "dist",
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}-
Create a new Appwrite project (megaBlog)
-
Create database:
blog -
Add collection:
articles- Attributes:
title,content,featuredImage,userId,status - Index on
status
- Attributes:
-
Create a storage bucket for image uploads
-
Provide CRUD permissions as needed
megaBlog/
├── appwrite-services/
│ ├── auth.js
│ └── config.js
├── components/
├── pages/
├── store/
├── conf/
├── App.jsx
├── main.jsx
└── .env
Vendor lock-in: Appwrite services are modular, and while this project uses Appwrite SDKs, abstraction layers are used to minimize vendor dependency.
Contributions are welcome! Here's how:
- Fork the repo
- Create a new branch
- Make changes and commit
- Push and open a pull request
- Use Prettier and ESLint
- Maintain code consistency
- Document changes
Distributed under the MIT License. See LICENSE for more info.
- File an issue
- Open discussions for suggestions
Built by @UdayIge