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
- 🛠️ Tech Stack
- 📝 Prerequisites
- ⚡ Setup Instructions
- 📜 Available Scripts
- ✨ Acknowledgments
- ©️ License
- 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
-
Frontend: TypeScript, Next.js, React, shadcn/ui, Lucide React Icons, Tailwind CSS, Mermaid, TipTap
-
Backend: Node.js, Drizzle ORM, PostgreSQL, Zod, Clerk, Google Gemini
Ensure that the following prerequisites are installed on your system by following the Setup Instructions:
- Node.js
- PostgreSQL
- Clerk
- Google Gemini API Key (via Google AI Studio)
- Clone this repository to your local machine.
git clone https://github.com/vikiru/noterra.git
cd noterra- Install dependencies.
pnpm install-
Setup Clerk and Google Gemini
- Create a Clerk account and obtain the necessary API keys.
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY= CLERK_SECRET_KEY=
- Create a new project in Google AI Studio and obtain the necessary API key.
GEMINI_API_KEY=
-
Set up environment variables by creating an
.envfile 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- Perform database migrations using Drizzle.
npx drizzle-kit push- Start the development server.
pnpm devThe application will be running and available at the following URL:
http://localhost:3000- Start the development server.
pnpm dev- Build the production version of the application.
pnpm build- Start the production server after building.
pnpm start- Launch Drizzle Studio for managing the database.
pnpm studio- Lint files using Biome.
pnpm lint- Format files using Biome.
pnpm format- Run TypeScript type checks without emitting files.
pnpm typecheck- Check unused dependencies and files with Knip
pnpm unused- tailwindcss-typography
- tailwind-debug-screens
- turndown
- html-react-parser
- isomorphic-dompurify
- JSDOM
- Lefthook
- Profanity
- Luxon
- Faker.js
- Shields Badges
- Semantic Release
- Favicon Generator
The contents of this repository are licensed under the MIT License.
MIT © 2025-present Visakan Kirubakaran.