Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Javascript Testing Best Practices | 21,424 | 25 days ago | 59 | mit | JavaScript | |||||
📗🌐 🚢 Comprehensive and exhaustive JavaScript & Node.js testing best practices (December 2022) | ||||||||||
Payload | 10,614 | 5 | 20 | 19 hours ago | 248 | September 24, 2022 | 36 | mit | TypeScript | |
Built with React + TypeScript, Payload is a free and open-source Headless CMS. [✩Star] if you support our work! | ||||||||||
Winds | 8,486 | 2 years ago | bsd-3-clause | JavaScript | ||||||
A Beautiful Open Source RSS & Podcast App Powered by Getstream.io | ||||||||||
Project_mern_memories | 4,464 | a month ago | 104 | JavaScript | ||||||
This is a code repository for the corresponding video tutorial. Using React, Node.js, Express & MongoDB you'll learn how to build a Full Stack MERN Application - from start to finish. The App is called "Memories" and it is a simple social media app that allows users to post interesting events that happened in their lives. | ||||||||||
Hackernews React Graphql | 4,351 | 6 months ago | 23 | mit | TypeScript | |||||
Hacker News clone rewritten with universal JavaScript, using React and GraphQL. | ||||||||||
Blog | 4,197 | 3 months ago | 70 | HTML | ||||||
大前端技术为主,读书笔记、随笔、理财为辅,做个终身学习者。 | ||||||||||
Project_chat_application | 3,632 | 13 days ago | 70 | JavaScript | ||||||
This is a code repository for the corresponding YouTube video. In this tutorial we are going to build and deploy a real time chat application. Covered topics: React.js, Node.js, Express.js, and Socket.io. | ||||||||||
Builderbook | 3,486 | 4 months ago | 69 | mit | JavaScript | |||||
Open source web application to learn JS stack: React, Material-UI, Next.js, Node.js, Express.js, Mongoose, MongoDB database. | ||||||||||
Saas | 3,322 | 4 months ago | 11 | mit | TypeScript | |||||
Build your own SaaS business with SaaS boilerplate. Productive stack: React, Material-UI, Next, MobX, WebSockets, Express, Node, Mongoose, MongoDB. Written with TypeScript. | ||||||||||
Docx | 3,223 | 47 | 77 | 20 hours ago | 64 | September 22, 2022 | 82 | mit | TypeScript | |
Easily generate and modify .docx files with JS/TS with a nice declarative API. Works for Node and on the Browser. |
This clone tries to replicate some of the great note-taking features Notion has. If you don't know Notion.so yet, I highly recommend to check it out!
📌 Live Demo: notion-clone.kmuenster.com
📌 Medium Article: How To Build A Text Editor Like Notion
/
to turn the block into different content types)<a>
in text blocks)/image
command)The frontend is built with Next.js and fully server-side rendered. On the backend, a REST API handles saving user content and user management.
Next.js · React.js · SCSS/SASS
Express.js · MongoDB with Mongoose · Nodemailer · JWT (Cookie-based)
Clone the project
git clone https://github.com/konstantinmuenster/notion-clone.git
cd notion-clone
Add environment variables
Backend: Create an .env
file in the backend
directory:
FRONTEND_URL="http://localhost:3000"
DOMAIN="localhost"
JWT_KEY="yourSecretForTokenGeneration"
PORT=8080
MONGO_URI="mongodb+srv://username:[email protected]/database?retryWrites=true&w=majority"
MAIL_HOST="smtp.sendgrid.net"
MAIL_PORT=465
MAIL_USER="apiKey"
MAIL_SENDER="Your Name <[email protected]>"
MAIL_PASSWORD="yourSendGridApiKey"
Frontend: Create an .env.local
file in the frontend
directory:
NEXT_PUBLIC_API="http://localhost:8080" // references your Backend API endpoint
Install and run backend (http://localhost:8080)
cd backend
npm install
npm start
Install and run frontend (http://localhost:3000)
cd frontend
npm install
npm run dev
You can host the application on almost any provider that supports Node applications and custom domains. I decided to host the frontend on vercel.com and the backend on heroku.com. But you can host both, frontend and backend, on the same provider if you like to.
You have to create a new MongoDB cluster upfront. It will store all of your page and block data. You can create one for free on MongoDB Atlas.
Make sure, you create the following collections:
Make sure, you allow network access to everyone (due to Heroku).
If you want to deploy the backend on heroku.com, create a new app in your preferred region on heroku.com.
Make sure, you add all production environmental variables for the backend. You can see which variables are needed in the Installation part of this readme.
Make sure, you add a custom domain for your backend API. Since the application uses a Cookie-based authentication, we have to run backend and frontend on the same domain. I, for example, run the frontend on www.notion-clone.kmuenster.com
and the backend on api.notion-clone.kmuenster.com
.
Want to run scheduled jobs? To delete inactive pages and users, I run scheduled jobs frequently. If you want this feature as well, you have to add more dynos to your application and run the job
$ node jobs/index.js
via Heroku Scheduler.
Lastly, you can deploy your app using Heroku Git.
Make sure, that when you push the backend to Heroku, you make a Git subtree push since notion-clone
is a mono-repo containing backend and frontend. So run git subtree push --prefix backend heroku master
instead of git push heroku master
. Thus, we only push the backend part.
If you want to deploy the frontend on vercel.com, you can so easily using the Vercel CLI.
With the Vercel CLI, we don't have to make a subtree push, instead we can just switch to the frontend folder and run the vercel
command to deploy:
cd frontend
vercel
This will lead you through the setup guide for your frontend application. Afterwards the app should be successfully deployed.
Make sure, you add the Backend API endpoint as a production environmental variable on Vercel.com.
Make sure, you add a custom domain for your frontend (that ideally matches the domain which you have specified in your backend environmental variables 😉)
Konstantin Münster – konstantin.digital
Distributed under the MIT license.
See LICENSE
for more information.