Skip to content
/ noterra Public
generated from vikiru/boilerplate

AI-powered learning tool to generate comprehensive notes and flashcards | TypeScript, Next.js, Gemini, PostgreSQL, Drizzle

License

Notifications You must be signed in to change notification settings

vikiru/noterra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

Noterra is an AI-powered learning tool that leverages Gemini AI to generate comprehensive notes and flashcards based on given user prompts.

📖 Table of Contents

🌟 Features

  • Generate comprehensive notes and flashcards based on given user prompts - powered by Gemini 2.5 Flash
  • Mermaid.js diagram rendering via Mermaid
  • Powerful note editing functionality (including undo/redo) powered by TipTap Editor
  • User authentication and authorization powered by Clerk
  • Manage the visibility of notes and flashcards:
    • Mark notes as public or private
    • Control the visibility of flashcards (public and shared notes can have private flashcards)
    • Share private notes with others via link
  • Export notes as various file formats including TXT, Markdown, and PDF

🛠️ Tech Stack

📝 Prerequisites

Ensure that the following prerequisites are installed on your system by following the Setup Instructions:

⚡ Setup Instructions

  1. Clone this repository to your local machine.
git clone https://github.com/vikiru/noterra.git
cd noterra
  1. Install dependencies.
pnpm install
  1. Setup Clerk and Google Gemini

    NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
    CLERK_SECRET_KEY=
    GEMINI_API_KEY=
  2. Set up environment variables by creating an .env file in the root directory of the project.

GEMINI_API_KEY=
# Replace these with your database username, password, host, port, and database name.
DATABASE_URL='postgresql://<username>:<password>@<host>:<port>/<database name>'

NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=

NEXT_PUBLIC_CLERK_SIGN_IN_URL=/auth/login
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/auth/signup
NEXT_PUBLIC_CLERK_SIGN_IN_FORCE_REDIRECT_URL=/dashboard
NEXT_PUBLIC_CLERK_SIGN_UP_FORCE_REDIRECT_URL=/onboarding
  1. Perform database migrations using Drizzle.
npx drizzle-kit push
  1. Start the development server.
pnpm dev

The application will be running and available at the following URL:

http://localhost:3000

📜 Available Scripts

  1. Start the development server.
pnpm dev
  1. Build the production version of the application.
pnpm build
  1. Start the production server after building.
pnpm start
  1. Launch Drizzle Studio for managing the database.
pnpm studio
  1. Lint files using Biome.
pnpm lint
  1. Format files using Biome.
pnpm format
  1. Run TypeScript type checks without emitting files.
pnpm typecheck
  1. Check unused dependencies and files with Knip
pnpm unused

✨ Acknowledgments

©️ License

The contents of this repository are licensed under the MIT License.

MIT © 2025-present Visakan Kirubakaran.

About

AI-powered learning tool to generate comprehensive notes and flashcards | TypeScript, Next.js, Gemini, PostgreSQL, Drizzle

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •