mirror of
https://github.com/sstent/FitTrack_GarminSync.git
synced 2025-12-05 23:51:44 +00:00
feat: Implement Garmin sync, login improvements, and utility scripts
This commit is contained in:
27
GEMINI.md
Normal file
27
GEMINI.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# FitTrack_GarminSync Development Guidelines
|
||||
|
||||
Auto-generated from all feature plans. Last updated: 2025-10-10
|
||||
|
||||
## Active Technologies
|
||||
- Python 3.13 + FastAPI, `garth`, `garminconnect`, `httpx`, `pydantic` (003-loginimprovements-use-the)
|
||||
- Python 3.13 + FastAPI, garth, garminconnect, httpx, pydantic (003-loginimprovements-use-the)
|
||||
- centralDB (PostgreSQL/SQLite with SQLAlchemy) (003-loginimprovements-use-the)
|
||||
|
||||
## Project Structure
|
||||
```
|
||||
src/
|
||||
tests/
|
||||
```
|
||||
|
||||
## Commands
|
||||
cd src [ONLY COMMANDS FOR ACTIVE TECHNOLOGIES][ONLY COMMANDS FOR ACTIVE TECHNOLOGIES] pytest [ONLY COMMANDS FOR ACTIVE TECHNOLOGIES][ONLY COMMANDS FOR ACTIVE TECHNOLOGIES] ruff check .
|
||||
|
||||
## Code Style
|
||||
Python 3.13: Follow standard conventions
|
||||
|
||||
## Recent Changes
|
||||
- 003-loginimprovements-use-the: Added Python 3.13 + FastAPI, garth, garminconnect, httpx, pydantic
|
||||
- 003-loginimprovements-use-the: Added Python 3.13 + FastAPI, `garth`, `garminconnect`, `httpx`, `pydantic`
|
||||
|
||||
<!-- MANUAL ADDITIONS START -->
|
||||
<!-- MANUAL ADDITIONS END -->
|
||||
61
README.md
Normal file
61
README.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# FitTrack Garmin Sync Backend
|
||||
|
||||
This project provides a backend service for synchronizing fitness data from Garmin Connect.
|
||||
|
||||
## Getting Started
|
||||
|
||||
...
|
||||
|
||||
## Garmin Authentication
|
||||
|
||||
To enable Garmin synchronization, you need to link your Garmin Connect account with this service. This is done via a dedicated login endpoint.
|
||||
|
||||
### 1. Link your Garmin Account
|
||||
|
||||
Send a `POST` request to the `/api/garmin/login` endpoint with your Garmin Connect username (email) and password.
|
||||
|
||||
**Endpoint**: `POST /api/garmin/login`
|
||||
|
||||
**Request Body (JSON)**:
|
||||
|
||||
```json
|
||||
{
|
||||
"username": "your_garmin_email@example.com",
|
||||
"password": "your_garmin_password"
|
||||
}
|
||||
```
|
||||
|
||||
**Example using `curl`**:
|
||||
|
||||
```bash
|
||||
curl -X POST \
|
||||
http://localhost:8000/api/garmin/login \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d
|
||||
{
|
||||
"username": "your_garmin_email@example.com",
|
||||
"password": "your_garmin_password"
|
||||
}
|
||||
```
|
||||
|
||||
**Success Response (200 OK)**:
|
||||
|
||||
```json
|
||||
{
|
||||
"message": "Garmin account linked successfully."
|
||||
}
|
||||
```
|
||||
|
||||
**Error Response (401 Unauthorized)**:
|
||||
|
||||
```json
|
||||
{
|
||||
"detail": "Invalid Garmin credentials provided."
|
||||
}
|
||||
```
|
||||
|
||||
Upon successful login, your Garmin credentials and authentication tokens will be stored in the system. The system will handle token refreshes automatically to maintain continuous synchronization.
|
||||
|
||||
### 2. Subsequent Synchronization
|
||||
|
||||
Once linked, other Garmin synchronization endpoints (e.g., for activities, health metrics) will automatically use the stored and refreshed credentials to access your Garmin data. **These subsequent synchronization calls do not require any additional authentication headers from the client.**
|
||||
BIN
backend/data/activity_10953210489.fit
Normal file
BIN
backend/data/activity_10953210489.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_10960488888.fit
Normal file
BIN
backend/data/activity_10960488888.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11016391867.fit
Normal file
BIN
backend/data/activity_11016391867.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11016629526.fit
Normal file
BIN
backend/data/activity_11016629526.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11031484877.fit
Normal file
BIN
backend/data/activity_11031484877.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11031645690.fit
Normal file
BIN
backend/data/activity_11031645690.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11039416210.fit
Normal file
BIN
backend/data/activity_11039416210.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11046349652.fit
Normal file
BIN
backend/data/activity_11046349652.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11046536636.fit
Normal file
BIN
backend/data/activity_11046536636.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11060766605.fit
Normal file
BIN
backend/data/activity_11060766605.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11068041649.fit
Normal file
BIN
backend/data/activity_11068041649.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11094919759.fit
Normal file
BIN
backend/data/activity_11094919759.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11095227141.fit
Normal file
BIN
backend/data/activity_11095227141.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11095292412.fit
Normal file
BIN
backend/data/activity_11095292412.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11102962011.fit
Normal file
BIN
backend/data/activity_11102962011.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11103050472.fit
Normal file
BIN
backend/data/activity_11103050472.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11104500124.fit
Normal file
BIN
backend/data/activity_11104500124.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11108558791.fit
Normal file
BIN
backend/data/activity_11108558791.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11115951861.fit
Normal file
BIN
backend/data/activity_11115951861.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11138199962.fit
Normal file
BIN
backend/data/activity_11138199962.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11138335059.fit
Normal file
BIN
backend/data/activity_11138335059.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11146424760.fit
Normal file
BIN
backend/data/activity_11146424760.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11152996872.fit
Normal file
BIN
backend/data/activity_11152996872.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11203782301.fit
Normal file
BIN
backend/data/activity_11203782301.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11209482177.fit
Normal file
BIN
backend/data/activity_11209482177.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11366268315.fit
Normal file
BIN
backend/data/activity_11366268315.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11372659934.fit
Normal file
BIN
backend/data/activity_11372659934.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11424166762.fit
Normal file
BIN
backend/data/activity_11424166762.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11428763304.fit
Normal file
BIN
backend/data/activity_11428763304.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11436657523.fit
Normal file
BIN
backend/data/activity_11436657523.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11445277449.fit
Normal file
BIN
backend/data/activity_11445277449.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11458585949.fit
Normal file
BIN
backend/data/activity_11458585949.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11465830576.fit
Normal file
BIN
backend/data/activity_11465830576.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11473405100.fit
Normal file
BIN
backend/data/activity_11473405100.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11480529931.fit
Normal file
BIN
backend/data/activity_11480529931.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11486355343.fit
Normal file
BIN
backend/data/activity_11486355343.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11493810589.fit
Normal file
BIN
backend/data/activity_11493810589.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11501929180.fit
Normal file
BIN
backend/data/activity_11501929180.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11574095496.fit
Normal file
BIN
backend/data/activity_11574095496.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11619107761.fit
Normal file
BIN
backend/data/activity_11619107761.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11626299699.fit
Normal file
BIN
backend/data/activity_11626299699.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11646154584.fit
Normal file
BIN
backend/data/activity_11646154584.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11663296702.fit
Normal file
BIN
backend/data/activity_11663296702.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11663641497.fit
Normal file
BIN
backend/data/activity_11663641497.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11671658315.fit
Normal file
BIN
backend/data/activity_11671658315.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11677888353.fit
Normal file
BIN
backend/data/activity_11677888353.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11696804072.fit
Normal file
BIN
backend/data/activity_11696804072.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11729271961.fit
Normal file
BIN
backend/data/activity_11729271961.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11736313609.fit
Normal file
BIN
backend/data/activity_11736313609.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11767030945.fit
Normal file
BIN
backend/data/activity_11767030945.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11773259391.fit
Normal file
BIN
backend/data/activity_11773259391.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11782500731.fit
Normal file
BIN
backend/data/activity_11782500731.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11820584153.fit
Normal file
BIN
backend/data/activity_11820584153.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11828665312.fit
Normal file
BIN
backend/data/activity_11828665312.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11835710430.fit
Normal file
BIN
backend/data/activity_11835710430.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11870107583.fit
Normal file
BIN
backend/data/activity_11870107583.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11878500472.fit
Normal file
BIN
backend/data/activity_11878500472.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11878942135.fit
Normal file
BIN
backend/data/activity_11878942135.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11887801128.fit
Normal file
BIN
backend/data/activity_11887801128.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11917830774.fit
Normal file
BIN
backend/data/activity_11917830774.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11924713004.fit
Normal file
BIN
backend/data/activity_11924713004.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11931836285.fit
Normal file
BIN
backend/data/activity_11931836285.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11937630123.fit
Normal file
BIN
backend/data/activity_11937630123.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_11945208111.fit
Normal file
BIN
backend/data/activity_11945208111.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12039368370.fit
Normal file
BIN
backend/data/activity_12039368370.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12047035690.fit
Normal file
BIN
backend/data/activity_12047035690.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12231617218.fit
Normal file
BIN
backend/data/activity_12231617218.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_1224868538.fit
Normal file
BIN
backend/data/activity_1224868538.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_1231894416.fit
Normal file
BIN
backend/data/activity_1231894416.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12329860971.fit
Normal file
BIN
backend/data/activity_12329860971.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_1240162650.fit
Normal file
BIN
backend/data/activity_1240162650.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_1240246670.fit
Normal file
BIN
backend/data/activity_1240246670.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12424425356.fit
Normal file
BIN
backend/data/activity_12424425356.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_1250272093.fit
Normal file
BIN
backend/data/activity_1250272093.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_1250375629.fit
Normal file
BIN
backend/data/activity_1250375629.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12506623137.fit
Normal file
BIN
backend/data/activity_12506623137.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12521249497.fit
Normal file
BIN
backend/data/activity_12521249497.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12597491238.fit
Normal file
BIN
backend/data/activity_12597491238.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12613071437.fit
Normal file
BIN
backend/data/activity_12613071437.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_1263662112.fit
Normal file
BIN
backend/data/activity_1263662112.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_1265079347.fit
Normal file
BIN
backend/data/activity_1265079347.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12655240046.fit
Normal file
BIN
backend/data/activity_12655240046.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12679242861.fit
Normal file
BIN
backend/data/activity_12679242861.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12693930521.fit
Normal file
BIN
backend/data/activity_12693930521.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12705923098.fit
Normal file
BIN
backend/data/activity_12705923098.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12760227096.fit
Normal file
BIN
backend/data/activity_12760227096.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12760362629.fit
Normal file
BIN
backend/data/activity_12760362629.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12796096237.fit
Normal file
BIN
backend/data/activity_12796096237.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_1284021260.fit
Normal file
BIN
backend/data/activity_1284021260.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_12873187437.fit
Normal file
BIN
backend/data/activity_12873187437.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_13110578385.fit
Normal file
BIN
backend/data/activity_13110578385.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_13291475916.fit
Normal file
BIN
backend/data/activity_13291475916.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_13291487330.fit
Normal file
BIN
backend/data/activity_13291487330.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_13317671010.fit
Normal file
BIN
backend/data/activity_13317671010.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_13329638803.fit
Normal file
BIN
backend/data/activity_13329638803.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_13343318393.fit
Normal file
BIN
backend/data/activity_13343318393.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_13359648162.fit
Normal file
BIN
backend/data/activity_13359648162.fit
Normal file
Binary file not shown.
BIN
backend/data/activity_13390879389.fit
Normal file
BIN
backend/data/activity_13390879389.fit
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user