A smart study planner that builds your revision schedule automatically based on your exam dates and availability.
- Input your exams with dates and estimated study hours
- Set daily available study hours and commitments
- Import commitments automatically from Google Calendar
- Edit commitments inside the planner
- Get an automatically generated color coded study schedule
- Receive warnings when there is not enough time for an exam
- Export study schedule to Google Calendar
- Get personalised study tips based on psychology research
- Optional: spaced repetition schedule based on the Ebbinghaus forgetting curve
pip install -e .python src/study_smart/app.pyTo view the documentation for schedule.py, run:
pdoc --docformat google src/study_smart/schedule.pyTo view the documentation for google_calendar.py, run:
pdoc --docformat google src/study_smart/google_calendar.pyTo run the unit tests:
pytest tests/To run tests with coverage report:
pytest --cov=study_smart tests/StudySmart can import your existing calendar events as commitments and export your study schedule back to Google Calendar. This feature is optional — the app works fully without it.
Note: This setup only needs to be done once. After the first authentication, token.json is created automatically and you won't need to repeat these steps.
- Go to console.cloud.google.com and sign in with your Google account
- Click the project dropdown at the top left → New Project
- Give it a name (
StudySmart) → click Create - Wait a moment for the project to be created, then make sure it is selected in the dropdown at the top
- In the left sidebar go to APIs & Services → Library
- Search for Google Calendar API
- Click on it → click Enable
- In the left sidebar go to APIs & Services → OAuth consent screen. On newer versions of Google Cloud Console this may appear as Google Auth Platform → Audience under project configuration
- Choose External as user type → click Create
- Fill in the required fields:
- App name: StudySmart
- User support email: your Gmail address
- Developer contact email: your Gmail address
- Click Save and Continue through the Scopes step — no changes needed here
- Go to Audience → scroll down to Test users → click Add users → add your Gmail address → click Add
- Click Save and Continue → Back to Dashboard
💡 You must add your own Gmail as a test user — otherwise Google will block authentication with an "access denied" error even though you created the project.
- In the left sidebar go to APIs & Services → Credentials (use the search bar at the top if you can't find it)
- Click Create credentials → OAuth Client ID
- Choose Desktop app as application type
- Give it a name (e.g.
StudySmart Desktop) → click Create - A popup will appear — click Download JSON
- Rename the downloaded file to exactly
credentials.json - Place
credentials.jsonin the root of the StudySmart repository (the same folder aspyproject.toml)
- Run the app from the repo root:
cd path/to/StudySmart
python src/study_smart/app.py- Add your exams in the 📚 My Exams tab
- Go to ⏰ My Schedule tab → click 📅 Import from Google Calendar
- A browser window will open asking you to sign in with Google — select your Google account
- You will see a warning: "Google hasn't verified this app" — this is expected! Click Continue → Go to StudySmart (unsafe). This warning appears because the app is in testing mode and has not gone through Google's full verification process, which is designed for apps published to the general public. For a personal locally-run study tool, testing mode is completely safe.
- Click Allow to grant calendar access
- The browser will show a success message — you can close the browser tab and return to the app
- A
token.jsonfile is automatically created in the repo root — this stores your authentication so you won't need to log in again next time
Hard-coded tips, based on psychological research.