/notion-clone

Zotion - A simplified clone of Notion where users can create, edit, and organize their notes.

Primary LanguageTypeScript

Zotion

Banner

This project is a simplified clone of the popular productivity application, Notion. It's designed to replicate some of the core features of Notion, providing a platform where users can create, edit, and organize their notes in a flexible and intuitive interface.

It uses Convex as the backend, which is a real-time database that allows for instant data updates. The application also uses Edgestore, a distributed key-value store, to manage the images and files uploaded by the users.The user authentication is handled by Clerk, a secure and scalable user authentication API.

Live

Zotion - https://zotion-app.vercel.app/

Features

Productivity and Organizations

  • 📝 Notion-style editor for seamless note-taking
  • 📂 Infinite children documents for hierarchical organization
  • ➡️🔀⬅️ Expandable and fully collapsible sidebar for easy navigation
  • 🎨 Customizable icons for each document, updating in real-time
  • 🗑️ Trash can with soft delete and file recovery options

User Experience

  • 🌓 Light and Dark mode to suit your preferences
  • 📱 Full mobile responsiveness for productivity on the go
  • 🛬 Landing page for a welcoming user entry point
  • 🖼️ Cover image for each document to add a personal touch

Data Management

  • 🔄 Real-time database for instant data updates
  • 📤📥 File upload, deletion, and replacement options

Security and Sharing

  • 🔐 Authentication to secure your notes
  • 🌍 Option to publish your note to the web for sharing

Technologies

NextJS Shadcn-ui TypeScript Tailwind CSS zod Clerk Convex Edgestore Blocknote

Installation

  1. Clone the repository
  2. Install the dependencies
npm install
  1. Set up the environment variables
# Deployment used by `npx convex dev`
CONVEX_DEPLOYMENT=
NEXT_PUBLIC_CONVEX_URL=

NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=

EDGE_STORE_ACCESS_KEY=
EDGE_STORE_SECRET_KEY=
  1. Run Convex
npx convex dev
  1. Run the development server
npm run dev

Acknowledgements

CodewithAntonio