A modern blogging platform with Next.js 15, React 19, and Firebase. Custom JWT auth, analytics, engagement tools, and dark mode.
- ✍️ Blog Management - Create, edit, publish with markdown
- 👤 Custom Auth - JWT-based (no Firebase Auth)
- 📊 Analytics - Dashboard with charts and metrics
- 💬 Engagement - Comments, likes, shares, views
- 👥 Social - Profiles, follows, photo uploads
- 🌓 Dark Mode - Theme persistence
- 📧 Newsletter - Resend integration
- 📱 Responsive - Mobile-first design
Frontend: Next.js 15, React 19, TailwindCSS
Backend: Firebase, Vercel Blob, Resend
Auth: JWT, bcrypt
git clone https://github.com/darkomike/bloggie.git
cd bloggie
npm installNEXT_PUBLIC_FIREBASE_API_KEY=
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
NEXT_PUBLIC_FIREBASE_PROJECT_ID=
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
NEXT_PUBLIC_FIREBASE_APP_ID=
JWT_SECRET=
BLOB_READ_WRITE_TOKEN=
RESEND_API_KEY=npm run dev # Development at localhost:3000
npm run build # Production build
npm start # Production serversrc/
├── app/ # Pages & API routes
├── components/ # React components
├── lib/ # Services & utilities
├── models/ # Data models
└── utils/ # Helpers
posts, users, comments, likes, views, shares, follows, newsletter, contacts
- Server-side JWT with HTTP-only cookies
- bcrypt password hashing
- Protected routes
API: /api/auth/signup, /api/auth/login, /api/auth/logout, /api/auth/session
- Stats: Posts, views, comments, likes
- Charts: Performance, engagement, categories
- Activity: Recent posts, comments, liked posts
Post: id, title, slug, content, category, author, published
User: id, username, email, photoURL, bio
Comment: id, postId, user, text
Vercel (recommended): Push to GitHub → Import to Vercel → Add env vars → Deploy
- Comments: Check
comment.textandcomment.user.name - Photos: Verify 2MB limit and Blob token
- Dark mode: Check ThemeProvider
- Build: Run
npm run lint
- JWT authentication
- bcrypt hashing
- Input validation
- 2MB upload limit
- Firebase security rules
- Parallel data fetching
- Client-side caching
- Image optimization
- Code splitting
npm run dev # Development
npm run build # Build
npm run lint # Check codeMichael Ofosu Darko
GitHub: @darkomike
Portfolio: michaelofosudarko.vercel.app
Private and proprietary
Built with ❤️ using Next.js, React, and Firebase