This project is a Medium-like but private blog application developed to practice and showcase my CRUD application capabilities. The project uses the latest tech stack, including Next.js 14 for the frontend, Hono.js for the backend, Cloudflare for deployment and edge functions, Prisma with PostgreSQL for the database, and Vercel for frontend deployment. For styling, I utilized ShadCN and Tailwind CSS, while Zod and TypeScript were used for type validation.
- CRUD Operations: Create, Read, Update, and Delete blog posts.
- User Authentication: Secure login and registration system.
- Type Validation: Consistent type definitions across frontend and backend using Zod and TypeScript.
- Frontend: Next.js 14, ShadCN, Tailwind CSS
- Backend: Hono.js, Cloudflare
- Database: Prisma, PostgreSQL
- Deployment: Vercel (Frontend), Cloudflare (Backend)
- Type Validation: Zod, TypeScript
I plan to expand this application by using a monorepo structure and containers for better code management and scalability.
- Node.js (v20 or later)
- PostgreSQL
-
Fork and then Clone the repository:
git clone https://github.com/AnmolDotX/writy.git cd writy
-
Install dependencies: frontend & backend
cd backend npm install cd frontend npm install
-
Set up the database:
- Create a PostgreSQL and a Prisma accelerate database URL and update the
DATABASE_URL
with prisma accelerate andDIRECT_URL
with postgresql url, in the.env
file of backend. - In the frontend
.env
just paste the backend server url examplehttp://localhost:8787
- Create a PostgreSQL and a Prisma accelerate database URL and update the
-
Run database migrations:
npx prisma migrate dev --name name_of_migration npx prisma generate --no-engine
-
Start the backend server:
npm run dev
This project follows an older approach of creating a common Zod module for both frontend and backend. This approach ensures that type validation for forms and APIs is consistent across the application.
If you'd like to contribute to this project, please fork the repository and use a feature branch. Pull requests are welcome. Also if you want any feature kindly request in the issues
tab of this project