An intelligent note-taking platform that uses Claude AI (Anthropic) to transform PDF documents into structured notes, quizzes, and summaries.
- 📄 PDF Upload & Processing: Upload PDF documents and extract text automatically
- 🤖 AI-Powered Note Generation: Generate structured notes from PDFs using Claude AI
- 📝 Quiz Generation: Automatically create quiz questions from document content
- 📊 Summaries: Get concise summaries of lengthy documents
- 🏢 Workspace Organization: Organize notes into spaces by topic or project
- 🔐 Secure Authentication: User authentication powered by Clerk
- 🎨 Modern UI: Beautiful interface built with Tailwind CSS and Radix UI
- Framework: Next.js 15.5.2 with App Router
- Frontend: React 19.1.0, TypeScript
- Styling: Tailwind CSS 4.0
- Database: PostgreSQL with Prisma ORM
- Authentication: Clerk
- AI: Claude AI (Anthropic) - NOT OpenAI
- UI Components: Radix UI + shadcn/ui
- Node.js 18+ and npm
- PostgreSQL database
- Claude API key (from Anthropic)
- Clerk account for authentication
- Clone the repository
git clone <repository-url>
cd ai-note- Install dependencies
npm install- Configure environment variables
Create a .env.local file in the root directory:
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_key
CLERK_SECRET_KEY=your_clerk_secret
# Database
DATABASE_URL=postgresql://user:password@localhost:5432/ai_note
# Claude AI (Anthropic) - NOT OpenAI
CLAUDE_API_KEY=sk-ant-api03-your-key-here
CLAUDE_MODEL=claude-3-5-sonnet-20241022📖 See ENV_SETUP.md for detailed setup instructions
- Set up the database
npm run db:push
# or
npm run db:migrate- Run the development server
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the application.
This application uses Claude AI by Anthropic instead of OpenAI for all AI features.
-
Generate Notes:
/api/ai/generate-notes- Converts PDF text into structured markdown notes
-
Generate Quiz:
/api/ai/generate-quiz- Creates interactive quiz questions from PDF content
-
Generate Summary:
/api/ai/generate-summary- Produces concise summaries of documents
📖 See CLAUDE_INTEGRATION.md for complete API documentation
- ✅ More accurate for educational content
- ✅ Better context understanding
- ✅ Longer context windows
- ✅ Competitive pricing
- ✅ Strong safety and ethics focus
ai-note/
├── src/
│ ├── app/
│ │ ├── (dashboard)/ # Dashboard routes
│ │ ├── api/
│ │ │ ├── spaces/ # Space management APIs
│ │ │ └── ai/ # Claude AI endpoints
│ │ ├── sign-in/ # Authentication pages
│ │ └── sign-up/
│ ├── components/ # React components
│ ├── lib/
│ │ ├── claude.ts # Claude AI service (main integration)
│ │ ├── prisma.ts # Database client
│ │ └── utils.ts # Utilities
│ └── middleware.ts # Auth middleware
├── prisma/
│ └── schema.prisma # Database schema
├── .env.local # Environment variables (not in git)
├── CLAUDE_INTEGRATION.md # Claude API documentation
└── ENV_SETUP.md # Environment setup guide
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run db:push # Push Prisma schema to database
npm run db:studio # Open Prisma Studio
npm run db:migrate # Run database migrations- Environment Setup Guide - Step-by-step environment configuration
- Claude Integration Guide - Complete AI API documentation
- Project Documentation - Detailed project specifications (French)
- ✅
.env.localis gitignored by default - ✅ Never commit API keys to version control
- ✅ All AI endpoints require authentication
- ✅ User permissions are validated on every request
⚠️ Remember to use different API keys for development and production
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is part of the INF6150 course at UQAM.
- Check that
.env.localexists and contains your Claude API key - Restart the development server after adding the key
- Verify PostgreSQL is running
- Check your
DATABASE_URLin.env.local - Run
npm run db:pushto sync the schema
- Verify Clerk keys are correct in
.env.local - Check Clerk dashboard for application status