Files
Tirsvad dfb5b4645b
English comments / english-comments (pull_request) Successful in 28s
Quality checks / quality-checks (pull_request) Successful in 39s
Quality / quality (pull_request) Successful in 39s
Tests / pytest (pull_request) Successful in 1m2s
Add README, three-language wiki and screenshots
Task: MIL-005#1
Task: MIL-005#2
Task: MIL-005#3
Task: MIL-005#4
2026-10-24 23:58:22 +08:00

2.0 KiB

English · Dansk · Bahasa Malaysia

Getting started

Requirements

  • Python 3.13 or newer
  • A Sheety project for your copy of the Google Sheet, with a prices sheet and a users sheet (Bearer authentication, PUT enabled on prices)
  • A SerpAPI key or the mock flight service credentials
  • An email account with an app password, to send the deal emails
  • Optional: pywhatkit, a browser and a logged-in WhatsApp Web session

Setup

Create a local virtual environment, upgrade pip and install the project:

py -3.13 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
python3.13 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"

Configuration

Copy .env.example to .env and fill in the values. Never commit .env. Keep 3 to 5 destinations in the sheet to stay inside the free tiers, and try the program with a test users sheet that holds only your own address.

Variable Meaning
SHEETY_PRICES_ENDPOINT Endpoint of the prices sheet
SHEETY_USERS_ENDPOINT Endpoint of the users sheet (firstName, lastName, email)
SHEETY_TOKEN Bearer token of the Sheety project
FLIGHT_PROVIDER serpapi or mock
SERPAPI_API_KEY SerpAPI key
MOCK_FLIGHTS_APP_ID, MOCK_FLIGHTS_APP_KEY Mock flight service credentials
SMTP_ADDRESS SMTP server of your mail provider (port 587)
EMAIL_ADDRESS, EMAIL_PASSWORD Sender address and its app password
WHATSAPP_NUMBER Your own number with country code

Run

Start the program. Without the SMTP settings or a WhatsApp number the message is printed instead.

python -m flight_club

Tests

The tests use no network, send no email and never read your .env.

python -m pytest

Test run