Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/anmoldotx/writy

blog app for practice
https://github.com/anmoldotx/writy

cloudflare honojs nextjs npm-module postgresql prisma typescript zod

Last synced: 11 days ago
JSON representation

blog app for practice

Awesome Lists containing this project

README

        

# Writy : A private blog app

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.

## Features

- **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.

## Tech Stack

- **Frontend:** Next.js 14, ShadCN, Tailwind CSS
- **Backend:** Hono.js, Cloudflare
- **Database:** Prisma, PostgreSQL
- **Deployment:** Vercel (Frontend), Cloudflare (Backend)
- **Type Validation:** Zod, TypeScript

## Future Plans

I plan to expand this application by using a monorepo structure and containers for better code management and scalability.

## Screenshots

![Homepage](/readmeAssets/home.png)

## Installation and Setup

### Prerequisites

- Node.js (v20 or later)
- PostgreSQL

### Backend Setup

1. **Fork and then Clone the repository:**
```bash
git clone https://github.com/AnmolDotX/writy.git
cd writy
```

2. **Install dependencies: frontend & backend**
```bash
cd backend
npm install

cd frontend
npm install
```

3. **Set up the database:**
- Create a PostgreSQL and a Prisma accelerate database URL and update the `DATABASE_URL` with prisma accelerate and `DIRECT_URL` with postgresql url, in the `.env` file of backend.
- In the frontend `.env` just paste the backend server url example `http://localhost:8787`

4. **Run database migrations:**
```bash
npx prisma migrate dev --name name_of_migration
npx prisma generate --no-engine
```

5. **Start the backend server:**
```bash
npm run dev
```

### Type Validation

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.

## Contributing or Feature request

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