A full-stack blog platform built for writers and readers. Clean architecture, type-safe throughout, deployed and production-ready.
Live: z-tales.vercel.app — Frontend
API: z-tales.onrender.com — Backend
Note: The backend runs on Render's free tier and may take ~30 seconds to wake up on the first request after a period of inactivity.
- React 19 + TypeScript
- React Router v7
- Redux Toolkit (global auth state)
- Tailwind CSS
- Framer Motion
- Vite
- Node.js + Express + TypeScript
- PostgreSQL (Supabase)
- JWT authentication
- Bcrypt password hashing
- Zod schema validation
- Helmet + express-rate-limit
- Authentication — Register, login, JWT-based session rehydration on page load
- Posts — Create, read, update, delete — with optional banner images
- Feed — Paginated post feed with author info, like counts, comment counts
- Likes — Toggle like/unlike on any post
- Comments — Threaded comments with one level of replies, inline editing for authors
- Admin panel — User management, role assignment, post moderation, post deletion
- RBAC — Role-based access control (user / admin) enforced at the API level
See CONTRIBUTING.md for full setup instructions.
Short version:
# Backend (terminal 1)
cd backend && npm install && npm run dev
# Frontend (terminal 2)
cd frontend && npm install && npm run dev| File | What it covers |
|---|---|
| Plan.md | Phase-by-phase build plan and progress |
| lectures.md | Concepts, decisions, and hard lessons from building this |
| DESIGN_SYSTEM.md | Colors, typography, spacing, components |
| CONTRIBUTING.md | Branch rules, commit conventions, local setup |
Browser (React + Redux)
│
│ HTTPS
▼
Vercel (Static hosting)
│
│ fetch() to Render
▼
Render (Express API)
│
│ pg Pool over TLS
▼
Supabase (PostgreSQL)
users — id, username, email, password_hash, role, created_at
posts — id, title, content, banner_image, author_id → users
comments — id, content, post_id → posts, author_id → users, parent_id → comments
likes — user_id → users, post_id → posts (composite PK)Built from scratch as a full-stack learning project