The Notion Dashboard app integrates data from different services into a Notion database, helping you track and manage your activities seamlessly.
- LingQ Integration: Sync your daily word counts into a Notion database.
- WHOOP Integration:
- Track your workouts, including metrics like heart rate, duration, and calories burned
- Monitor sleep and recovery data with intelligent date handling for overnight sleep sessions
-
Clone the repository:
git clone https://github.com/jakegodsall/notion-dashboard.git cd notion-dashboard
-
Create and activate a virtual environment:
python3 -m venv .venv source .venv/bin/activate
-
Install dependencies:
pip install -r requirements.txt
-
Configure the app:
- Add your Notion API credentials and database configurations to the
src/config/notion.config.yml
file.
- Add your Notion API credentials and database configurations to the
The app provides a rich command-line interface with various commands for different integrations:
# Show all available commands
python main.py --help
# Show help for Whoop-specific commands
python main.py whoop --help
# Sync LingQ word counts
python main.py lingq
# Sync workouts for today
python main.py whoop workouts
# Sync workouts for a specific date
python main.py whoop workouts --date 2024-03-20
# Sync sleep and recovery data for today
python main.py whoop sleep
# Sync sleep and recovery for a specific date
python main.py whoop sleep --date 2024-03-20
# Sync sleep data, continuing backwards until first available record
python main.py whoop sleep --date 2024-03-20 --loop-until-first
The app includes a lambda.py
file for running as an AWS Lambda function. This is useful for deploying the app to AWS Lambda for serverless execution.
The project is set up using AWS SAM (Serverless Application Model) for easy deployment. To deploy:
- Install the AWS SAM CLI if not already installed:
brew install aws-sam-cli
- Build the project:
sam build
- Deploy the application:
sam deploy --guided
Follow the prompts to configure the environment variables and other configurations for deployment.
Create a notion.config.yml
file in src/config
with the following structure:
notion:
key: "notion-key"
integrations:
whoop-workout:
database_id: "database-id"
field_mappings:
date:
label: "Date"
key: "date"
type: "date"
duration:
label: "Duration"
key: "duration"
type: "number"
distance:
label: "Distance (km)"
key: "distance"
type: "number"
whoop-sleep-and-recovery:
database_id: "sleep-database-id"
field_mappings:
date:
label: "Date"
key: "date"
type: "date"
sleep_score:
label: "Sleep Score"
key: "sleep_performance_percentage"
type: "number"
recovery_score:
label: "Recovery Score"
key: "recovery_score"
type: "number"
- Ensure the configuration file exists at
src/config/notion.config.yml
with valid Notion API credentials.
- Check that your
PYTHONPATH
includes the project root directory:export PYTHONPATH=/path/to/notion-dashboard
- The sleep tracking system handles overnight sleep sessions by checking both the current and previous day for matching records
- If you see duplicate records, ensure you're not running multiple syncs for the same sleep session across different days
- Fork the repository.
- Create a new feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Open a pull request.
This project is licensed under the MIT License. See LICENSE
for details.