Git Product home page Git Product logo

quickflow's Introduction

Quickflow: A Better & Open-Source Alternative to Notion

Image of the app here

Quickflow is an open-source alternative to Notion that aims to provide a superior user experience.

Technologies Used

  • Next.js 13: A powerful React framework for building modern web applications.
  • Shadcn UI: Beautifully designed components that you can copy and paste into your apps.
  • Clerk: A complete suite of embeddable UIs, flexible APIs, and admin dashboards to authenticate and manage your users.
  • Convex: A Backend Application Platform that keeps you focused on building your product. Convex Functions, Database, File Storage, Scheduling, and Search fit together cohesively.
  • TailwindCSS: A utility-first CSS framework for streamlined web application styling.
  • EdgeStore: A service for storing and managing data.

Key Features

  • Real-time database ๐Ÿ”—
  • Notion-style editor ๐Ÿ“
  • Light and Dark mode ๐ŸŒ“
  • Infinite children documents ๐ŸŒฒ
  • Trash can & soft delete ๐Ÿ—‘๏ธ
  • Authentication ๐Ÿ”
  • File upload, deletion, and replacement
  • Icons for each document (changes in real-time) ๐ŸŒ 
  • Expandable and fully collapsable sidebar โžก๏ธ๐Ÿ”€โฌ…๏ธ
  • Full mobile responsiveness ๐Ÿ“ฑ
  • Publish your note to the web ๐ŸŒ
  • Landing page ๐Ÿ›ฌ
  • Cover image for each document ๐Ÿ–ผ๏ธ
  • Recover deleted files ๐Ÿ”„๐Ÿ“„

Setting Up the Project Locally

Prerequisites

Ensure that you have Node.js version 18.x.x or higher installed.

Cloning the Repository

git clone https://github.com/Nick-h4ck3r/quickflow.git
cd quickflow

Installing Dependencies

npm i

Setting Up Convex

  1. Create an account on convex.dev
  2. Run the following command:
npx convex dev
  1. Follow the prompts to log in and select a new project in terminal.

convex create new project

  1. A .env.local file will be created with CONVEX_DEPLOYMENT and NEXT_PUBLIC_CONVEX_URL variables.

Keep this terminal running, as the Convex dev server is running locally. If it crashes or closes, run npx convex dev again.

Setting Up Clerk for Authentication

  1. Create an account on clerk.com
  2. Create a new application in the dashboard.
  3. Enable social sign-ins (Google and GitHub recommended) and disable email option.
  4. Copy the NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY and CLERK_SECRET_KEY to your .env.local file.
  5. Now, click on JWT Templates (in left sidebar) option in convex project dashboard.

JWT Templates (in left sidebar) option in convex project dashboard.

  1. Click on Create New Template and select convex.

  2. Copy the issuer URL and update the domain in convex/auth.config.js:

export default {
  providers: [
    {
      domain: "https://your-issuer-url.clerk.accounts.dev",
      applicationID: "convex",
    },
  ],
};

Setting Up EdgeStore for Data Storage

  1. Create an account on edgestore.dev
  2. Create a new project in the dashboard.
  3. Copy the EDGE_STORE_ACCESS_KEY and EDGE_STORE_SECRET_KEY to your .env.local file.

Finalizing Environment Setup

Ensure your .env.local file looks like this:

CONVEX_DEPLOYMENT=
NEXT_PUBLIC_CONVEX_URL=

NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=

EDGE_STORE_ACCESS_KEY=
EDGE_STORE_SECRET_KEY=

Starting the Development Server

npm run dev

Deployment

To deploy the app on Vercel:

  1. Import the project to deploy on vecrel.
  2. Replace the build command with: npm run build && npx convex deploy
  3. To get production env for convex, go to convex project, change the environment to production.
  4. Click on settings, and copy the Deployment URL to NEXT_PUBLIC_CONVEX_URL. 5.After that, click on Generate Production Deploy Key, and copy it too.
  5. Add the following environment variables in vercel deployment.
    • CONVEX_DEPLOY_KEY: convex-generate-production-deploy-key-here
    • CONVEX_DEPLOYMENT: convex-generate-production-deploy-key-here
    • NEXT_PUBLIC_CONVEX_URL : convex-deployment-url-here
    • NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: Same as in .env.local
    • CLERK_SECRET_KEY: Same as in .env.local
    • EDGE_STORE_ACCESS_KEY: Same as in .env.local
    • EDGE_STORE_SECRET_KEY: Same as in .env.local

vercel environment variables

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Credits

Special thanks to Antonio for his invaluable tutorial, which served as the foundation for building this app. You can find the tutorial here.

License

MIT License

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.