Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@ FROM node:22.11-slim AS build

WORKDIR /app

LABEL name="Priyanshu"
LABEL version="1.0.0"
LABEL description="Neotion - A Notion Clone"
LABEL maintainer="coderx85"
LABEL email="work.priyanshu085@gmail.com"
LABEL org.opencontainer.image.source="https://github.com/coderx85/neotion"

# Add ARG instructions for environment variables
ARG NEXT_PUBLIC_CONVEX_URL=https://localhost:3000
ARG NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY
Expand Down Expand Up @@ -52,4 +59,4 @@ LABEL org.opencontainer.immge.source.=https://docker.io/coderx85/neotion

EXPOSE 3000

CMD ["npm","run","docker:run"]
CMD ["npm","run","docker:dev"]
13 changes: 0 additions & 13 deletions Dockerfile.dev

This file was deleted.

51 changes: 46 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@
## 📑 Table of Contents

- [🚀 Overview](#-overview)
- [✨ Core Features (The 80/20)](#-core-features-the-8020)
- [🧩 All Features](#-all-features)
- [🧠 Technical Deep Dive](#technical-deep-dive)
- [Features](#features)
- [🖼️ Screenshots](#️-screenshots)
- [🛠️ Tech Stack](#️-tech-stack)
- [📁 Project Structure](#-project-structure)
- [📁 Project Structure](###project-structure)
- [🔧 Installation](#-installation)
- [💻 Usage](#-usage)
- [⚙️ Environment Variables](#️-environment-variables)
Expand All @@ -52,9 +52,20 @@ Neotion is a modern, open-source alternative to Notion, designed for users who n
<img src="public/hero.png" alt="Neotion Hero Image" width="700">
</p>

### 🧠 Technical Deep Dive

Curious about the engineering decisions behind Neotion? Check out [`learn.md`](./learn.md) for an in-depth look at:

- **Why we chose Convex** over traditional databases for real-time collaboration
- **How we solved real-time editor synchronization** with TipTap and atomic operations
- **The security architecture** that ensures user data isolation
- **Key lessons learned** from building a collaborative platform

Perfect for developers who want to understand the technical challenges and architectural decisions that make Neotion work.

---

## ✨ Core Features
## ✨ Features

This section highlights the key workflows that deliver the most value to our users. Understanding these features will get you up and running with Neotion's core functionality quickly.

Expand Down Expand Up @@ -160,6 +171,8 @@ The project follows a standard Next.js App Router structure, with clear separati

## 🔧 Installation

### Method 1: Local Development Setup

1. **Clone the repository:**

```bash
Expand All @@ -174,13 +187,41 @@ The project follows a standard Next.js App Router structure, with clear separati
```

3. **Set up environment variables:**
Create a `.env.local` file in the root of the project and add the variables from the table below.
Create a `.env.local` file in the root of the project and add the variables from the [Environment Variables](#️-environment-variables) table below.

4. **Run the development server:**
```bash
npm run dev
```

### Method 2: Docker Hub Deployment

1. **Pull the Docker image:**

```bash
docker pull coderx85/neotion:latest
```

2. **Run the Docker container:**

```bash
docker run -p 3000:3000 \
-e NEXT_PUBLIC_CONVEX_URL="your_convex_url" \
-e NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="your_clerk_publishable_key" \
-e CLERK_SECRET_KEY="your_clerk_secret_key" \
-e CONVEX_DEPLOYMENT="your_convex_deployment" \
-e EDGE_STORE_ACCESS_KEY="your_edge_store_access_key" \
-e EDGE_STORE_SECRET_KEY="your_edge_store_secret_key" \
coderx85/neotion:latest
```

3. **Access the application:**
Open your browser and navigate to `http://localhost:3000`

**Note:** Replace the placeholder values with your actual environment variables. For easier management, you can create a `.env` file and use `--env-file .env` instead of individual `-e` flags.

---

---

## 💻 Usage
Expand Down
37 changes: 37 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
services:
app:
build:
context: .
dockerfile: Dockerfile
args:
- NEXT_PUBLIC_CONVEX_URL=${NEXT_PUBLIC_CONVEX_URL}
- NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=${NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY}
- CLERK_SECRET_KEY=${CLERK_SECRET_KEY}
- NEXT_PUBLIC_BASE_URL=${NEXT_PUBLIC_BASE_URL}
- NEXT_PUBLIC_CLERK_SIGN_IN_URL=${NEXT_PUBLIC_CLERK_SIGN_IN_URL}
- NEXT_PUBLIC_CLERK_SIGN_UP_URL=${NEXT_PUBLIC_CLERK_SIGN_UP_URL}
- NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=${NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL}
- NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=${NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL}
- NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL=${NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL}
- NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL=${NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL}
- CONVEX_DEPLOYMENT=${CONVEX_DEPLOYMENT}
- EDGE_STORE_ACCESS_KEY=${EDGE_STORE_ACCESS_KEY}
- EDGE_STORE_SECRET_KEY=${EDGE_STORE_SECRET_KEY}
ports:
- "3001:3000"
environment:
- NODE_ENV=development
- PORT=3000
env_file:
- .env.local
depends_on:
- database

database:
image: postgres:latest
ports:
- "5432:5432"
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
Loading
Loading