Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .coverage
Binary file not shown.
25 changes: 25 additions & 0 deletions .github/workflows/python-tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Python tests

on:
push:
branches: [main, master, week-3]
pull_request:

jobs:
test:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.12"

- name: Install package and test tools
run: |
python -m pip install --upgrade pip
python -m pip install -e . pytest

- name: Run unit tests
run: pytest

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ __pycache__/
.DS_Store
credentials.json
token.json
.ipynb_checkpoints
25 changes: 16 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@ A smart study planner that builds your revision schedule automatically based on
- 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 revision schedule
- 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
- Optional: spaced repetition schedule based on the Ebbinghaus forgetting curve

## Installation
```bash
Expand Down Expand Up @@ -51,13 +52,19 @@ pytest --cov=study_smart tests/
```

## Google Calendar Integration
To use the Google Calendar import feature you need:
1. A Google account
2. A `credentials.json` file — get this from [Google Cloud Console](https://console.cloud.google.com) by creating a project, enabling the Google Calendar API, and creating OAuth 2.0 credentials (Desktop app)
3. Place `credentials.json` in the root of the project folder
4. On first run a browser window will open asking you to grant calendar access — after that a `token.json` file is saved automatically

To use the Google Calendar import feature, you need to set up your own Google OAuth credentials:

1. Go to Google Cloud Console (https://console.cloud.google.com)
2. Create a new project
3. Enable the Google Calendar API
4. Create OAuth 2.0 credentials (Desktop app)
5. Download the credentials as `credentials.json`
6. Place `credentials.json` in the root of the repository
7. On first run, a browser window will open asking you to grant calendar access

Note: `credentials.json` and `token.json` are excluded from version control for security reasons.

## Study Tips
Hard-coded tips, based on psychological research.
Hard-coded tips, based on psychological research.

1 change: 1 addition & 0 deletions docs/build_schedule_flowchart.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
398 changes: 398 additions & 0 deletions docs/report.ipynb

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions docs/software_flowchart.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/user_flowchart.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ authors = [
]
description = "A smart study planner that builds your revision schedule automatically based on your exam dates and availability."
readme = "README.md"
requires-python = ">=3.9"
requires-python = ">=3.12"
classifiers = [
"Programming Language :: Python :: 3",
"Operating System :: OS Independent",
Expand All @@ -19,6 +19,10 @@ license = "MIT"
license-files = ["LICEN[CS]E*"]
dependencies = [
"pandas",
"plotly",
"dash>=2.4.0",
"dash-bootstrap-components",
"openpyxl",
"google-auth",
"google-auth-oauthlib",
"google-api-python-client",
Expand Down
Binary file added src/my_studysmart.xlsx
Binary file not shown.
3 changes: 1 addition & 2 deletions src/study_smart/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from .schedule import (
build_schedule,
update_schedule,
generate_tips
)
from .google_calendar import import_commitments_from_google_calendar
from .google_calendar import (import_commitments_from_google_calendar, export_schedule_to_google_calendar)
Loading