Loading repository data…
Loading repository data…
swechhyamaharjan / repository
PlanMyStudy is an AI-powered study planner that helps students automatically generate personalized study schedules based on their subjects and exam dates. Built with Next.js, TypeScript, and PostgreSQL, it allows users to manage subjects, track study tasks, and monitor their learning progress through an interactive dashboard.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
An AI-powered study planner that helps students automatically generate personalized study schedules based on their subjects and exam dates.
| Layer | Technology |
|---|---|
| Framework | Next.js 14 (App Router) |
| Language | TypeScript |
| Styling | CSS Modules + Tailwind CSS |
| Database | PostgreSQL via Prisma ORM |
| Auth | JWT + bcryptjs |
| AI | Google Gemini API (gemini-2.0-flash) |
| HTTP Client | Axios |
| Icons | React Icons (Feather) |
1. Clone the repository
git clone https://github.com/yourusername/planmystudy.git
cd planmystudy
2. Install dependencies
npm install
3. Set up environment variables
Create a .env.local file in the root:
# Database
DATABASE_URL="postgresql://user:password@localhost:5432/planmystudy"
# JWT
JWT_SECRET="your_jwt_secret_here"
# Google Gemini AI
GEMINI_API_KEY="your_gemini_api_key_here"
4. Set up the database
npx prisma migrate dev --name init
npx prisma generate
5. Run the development server
npm run dev
Open http://localhost:3000 in your browser.
planmystudy/
├── app/
│ ├── (auth)/
│ │ ├── signin/ # Login page
│ │ └── signup/ # Register page
│ ├── (dashboard)/
│ │ ├── dashboard/ # Main dashboard
│ │ ├── subjects/ # Subjects management
│ │ ├── exams/ # Exam scheduling
│ │ ├── tasks/ # Task management
│ │ └── setting/ # User settings
│ ├── api/
│ │ ├── auth/
│ │ │ ├── login/ # POST - Login
│ │ │ ├── register/ # POST - Register
│ │ │ └── logout/ # POST - Logout
│ │ ├── subjects/
│ │ │ ├── route.ts # GET, POST
│ │ │ └── [id]/ # PUT, DELETE
│ │ ├── exams/
│ │ │ ├── route.ts # GET, POST
│ │ │ └── [id]/ # PUT, DELETE
│ │ ├── studyTasks/
│ │ │ ├── route.ts # GET, POST
│ │ │ └── [id]/ # PUT, DELETE
│ │ ├── users/
│ │ │ ├── profile/ # GET, PUT
│ │ │ └── password/ # PUT
│ │ └── ai/
│ │ └── plan/ # POST - Generate AI study plan
│ └── components/
│ ├── Sidebar.tsx
│ └── PlanMyStudy.tsx
├── prisma/
│ └── schema.prisma
├── utils/
│ ├── checkAuth.ts
│ └── generateToken.ts
└── public/
model User {
id Int @id @default(autoincrement())
name String
email String @unique
password String
subjects Subject[]
studyTasks StudyTask[]
}
model Subject {
id Int @id @default(autoincrement())
name String
difficulty String
userId Int
user User @relation(fields: [userId], references: [id])
exams Exam[]
studyTasks StudyTask[]
}
model Exam {
id Int @id @default(autoincrement())
examDate DateTime
subjectId Int
subject Subject @relation(fields: [subjectId], references: [id])
}
model StudyTask {
id Int @id @default(autoincrement())
title String
taskDate DateTime
completed Boolean @default(false)
userId Int
subjectId Int
user User @relation(fields: [userId], references: [id])
subject Subject @relation(fields: [subjectId], references: [id])
}
The AI planner uses Google Gemini to analyze your subjects and exam schedule, then generates a realistic day-by-day study plan:
To use it, make sure you have at least one subject and one upcoming exam added.
checkAuth middlewareMIT License — feel free to use, modify, and distribute.
Built by Swechhya Maharjan