Skip to content

A full-stack, collaborative Notion-style note-taking app with real-time editing, Firebase Auth, PostgreSQL, and Prisma — powered by Turborepo.

Notifications You must be signed in to change notification settings

naiyar2000/turbonote

Repository files navigation

NoteHub – A Notion-style Collaborative Notes App 🧠

NoteHub is a full-stack, real-time note-taking application inspired by Notion. It features:

  • ✅ Rich text editing (BlockNote)
  • ✅ Collaborative editing via WebSocket
  • ✅ Firebase Authentication (Google login)
  • ✅ PostgreSQL + Prisma ORM
  • ✅ File uploads via AWS S3 (optional)
  • ✅ Dark/light theme toggle
  • ✅ Monorepo architecture with Turborepo

🚀 Tech Stack

  • Frontend: Next.js 14 (App Router), TailwindCSS, ShadCN UI
  • Editor: @blocknote/mantine
  • Auth: Firebase (client + Admin SDK)
  • Backend: Node.js + Express (REST + WebSocket)
  • Database: PostgreSQL via Prisma
  • Monorepo Tooling: Turborepo
  • Dev Tools: ESLint, Prettier, Husky, Turbo cache

📂 Monorepo Structure

turbonote/
├── apps/
│   ├── web/           # Frontend (Next.js 14, App Router)
│   └── server/        # Backend (Node.js + Express + Prisma + Firebase Auth)
├── packages/
│   └── db/            # Shared Prisma schema + client
├── .gitignore
├── turbo.json         # Turborepo config
└── package.json       # Monorepo root


🛠️ Installation & Setup

1. Clone the Repository

git clone https://github.com/naiyar2000/turbonote.git
cd turbonote

2. Install Dependencies

Uses npm workspaces + Turborepo for package management.

npm install

3. Set Up PostgreSQL

You need a PostgreSQL database running locally or on Docker.


4. Create .env Files

In packages/db/.env:

DATABASE_URL="postgresql://postgres:postgres@localhost:5432/notion"

In apps/server/.env:

DATABASE_URL="postgresql://postgres:postgres@localhost:5432/notion"
PORT=4000

FIREBASE_PROJECT_ID=your_project_id
FIREBASE_CLIENT_EMAIL=your_service_account_email
FIREBASE_PRIVATE_KEY="your_private_key"

CLIENT_URL=http://localhost:3000

In apps/web/.env (optional for public envs):

NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=...
NEXT_PUBLIC_FIREBASE_PROJECT_ID=...
NEXT_PUBLIC_BACKEND_URL=http://localhost:4000

5. Generate Prisma Client

npx prisma generate --schema=packages/db/prisma/schema.prisma

Push schema to DB:

npx prisma db push --schema=packages/db/prisma/schema.prisma

6. Run the App

To run both frontend and backend together:

npm run dev

To run separately:

Web frontend

cd apps/web
npm run dev

or

npm run dev:web

Server backend

cd apps/server
npm run dev

or

npm run dev:server

✨ Features

  • ✅ Nested Pages & Folders
  • ✅ Firebase Authentication
  • ✅ Prisma + PostgreSQL DB
  • ✅ Realtime Socket setup (collaboration-ready)
  • ✅ Dark Mode Toggle
  • ✅ Mobile Responsive
  • ✅ Modern UI with ShadCN & Tailwind
  • ✅ Token-based API access
  • ✅ Feature flags per user (AI/collab toggle)

🚀 Roadmap

  • Realtime collaborative editing
  • Search, tag, archive system
  • Offline support & caching
  • Sharing & permissions (editor/viewer)
  • Deployment on EC2 via Docker

🐳 Coming Soon: Docker + EC2

A guide for containerizing and deploying to Amazon EC2 will be included soon.


📄 License

MIT License © 2025 Naiyar

Let me know if you'd like:

  • Badges (build, license, etc.)
  • Docker deployment steps
  • Firebase config template
  • Contribution guide

I'll add those instantly if needed.

About

A full-stack, collaborative Notion-style note-taking app with real-time editing, Firebase Auth, PostgreSQL, and Prisma — powered by Turborepo.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages