This project now has two connected experiences inside the same codebase:
ResearchPilot: a research assistant that gathers live source metadata, builds structured reports, expands topics, and keeps report history.AskMyNotes Study Copilot: a second page for the original notes workflow with up to 3 subjects, file uploads, grounded Q and A, and quiz generation.
frontend/: Next.js 16 + TypeScriptbackend/: Express + TypeScriptAI layer: Gemini API integration with local fallback behavior when no key is configured
- Open-ended research query input
- Live source discovery using academic and reference endpoints
- Structured output:
- Title
- Abstract
- Key Findings
- Sources
- Conclusion
- Follow-up Questions
- Topic expansion
- Session history
- Markdown export
- Up to 3 subjects per user
- Upload PDF, TXT, or MD files
- Text extraction and note summaries
- Ask grounded questions from uploaded notes
- Optional semantic retrieval with Gemini embeddings + Pinecone per subject
- Generate revision quizzes
Create backend/.env from backend/.env.example
PORT=3001
FRONTEND_URL=http://localhost:3000
GOOGLE_API_KEY=
GEMINI_API_KEY=
GEMINI_MODEL=gemini-2.5-flash
PINECONE_API_KEY=
PINECONE_INDEX_HOST=GOOGLE_API_KEY or GEMINI_API_KEY is optional but recommended. Without it, the app still runs using local fallback synthesis.
PINECONE_API_KEY and PINECONE_INDEX_HOST are optional. If set, Study Copilot indexes uploaded chunks per subject and uses semantic retrieval before answering questions.
Create frontend/.env.local from frontend/.env.example
NEXT_PUBLIC_BACKEND_URL=http://localhost:3001Since this is a full-stack mono-repo, you will need two terminal windows open—one for the backend and one for the frontend.
First, ensure you have Node.js installed. Then, install dependencies for both sides of the application:
Terminal 1 (Backend):
cd backend
npm installTerminal 2 (Frontend):
cd frontend
npm installBefore running the app, you need to set up your API keys.
- Backend:
Copy
backend/.env.exampleto a new file namedbackend/.env. Add your Gemini and Pinecone API keys (if you don't add them, the app will use local fallback data but won't use AI generation). - Frontend:
Copy
frontend/.env.exampletofrontend/.env.local.
Now start both servers simultaneously:
Terminal 1 (Backend):
# Make sure you are inside the 'backend' folder
npm run dev(The backend will start on http://localhost:3001)
Terminal 2 (Frontend):
# Make sure you are inside the 'frontend' folder
npm run dev(The frontend will start on http://localhost:3000)
Open your browser and navigate to: http://localhost:3000
Note: If port 3000 or 3001 is already in use by another app, stop the old process first.
- User data is stored locally in
backend/data/db.jsonduring development. - PDF parsing is supported in study mode.
- Gemini is used for richer report generation, topic expansion, note summarization, grounded answers, and quizzes when an API key is configured.
- Pinecone is used only when its environment variables are configured; otherwise the app falls back to local note-context retrieval.