Fly-Log is your personal flight logbook and travel analytics platform. Effortlessly track your flights, visualize your journeys on interactive maps, and discover unique travel statistics. Whether you'
翻譯準備中
生活風格JavaScript · TypeScriptGitHub @FedericoTartarini上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證An open-source and free flight tracker to map your journeys and travel statistics
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗This project analyzes personal flight history using Python and visualizes the data on an interactive map using a React and Vite-powered frontend.
The application has two main parts:
Follow these instructions to get a local copy up and running.
Clone the repository:
git clone <your-repository-url>
cd <repository-directory>
Prepare the data:
python directory.flights_with_coordinates.json file. This file is required by the frontend. You need to install the dependencies using uvInstall frontend dependencies:
npm install
Run the development server:
http://localhost:5173. The page will automatically reload if you make changes to the source code.npm run dev
npm run dev:netlify instead. Vite on its own does not
serve netlify/functions/, so those endpoints 404 under npm run dev.Build for production:
dist directory for deployment.npm run build
The ImageMagick helper script in scripts/optimize-assets.sh generates responsive WebP variants for images in src/assets. It creates -380.webp, -760.webp, -1200.webp, and -1800.webp sizes for each image, and includes explicit handling for the landing showcase image so it stays up to date whenever you replace it.
./scripts/optimize-assets.sh
Install Firebase CLI:
npm install -g firebase-tools
Login to Firebase:
firebase login:list # to see logged in accounts
firebase login # if not already logged in
firebase login:add # to add another account
firebase login:use # to select the project to use (run from project directory)
Initialize Firebase in your project:
firebase init
Deploy to Firebase:
firebase deploy
firebase deploy --only firestore:rules
This repo includes a sample Firestore rules file at firestore.rules that enforces per-user access to flight documents stored under /flights/{userId}/records/{docId}. Rules ensure that:
departure_date, departure_airport_iata, arrival_airport_iata, and airline_iata and departure_date must be a Firestore timestamp.To deploy those rules to your Firebase project use:
firebase deploy --only firestore:rules
Or, during firebase init, point the Firestore rules location to firestore.rules so rules are deployed together with hosting.
This project uses two testing frameworks:
Vitest is used for unit and integration testing of React components and utility functions.
Run all unit tests:
npm run test
Run tests in watch mode (automatically re-runs when files change):
npm run test:watch
Run tests with coverage report:
npm run test:coverage
Run tests in UI mode (interactive test runner):
npm run test:ui
Cypress is used for end-to-end testing of the complete application workflow.
Run Cypress tests in headless mode:
npm run cypress:run
Open Cypress Test Runner (interactive mode):
npm run cypress:open
Run Cypress tests against production build:
npm run build
npm run preview
npm run cypress:run
src/ alongside components (e.g., Component.test.jsx)test-utils/ (see test-utils/README.md for details on the global i18n test setup, how translations are injected during tests, and examples to override per-test).cypress/e2e/src/constants/testIds.jsExample unit test:
import { describe, it, expect } from "vitest";
import { render } from "../test-utils/render";
import { screen } from "@testing-library/react";
import { TEST_IDS } from "../constants/testIds";
import MyComponent from "./MyComponent";
describe("MyComponent", () => {
it("renders correctly", () => {
render(<MyComponent />);
expect(screen.getByText("Expected text")).toBeInTheDocument();
});
});
{
"scripts": {
"test": "vitest",
"test:watch": "vitest --watch",
"test:coverage": "vitest --coverage",
"test:ui": "vitest --ui",
"cypress:open": "cypress open",
"cypress:run": "cypress run"
}
}
See docs/developer-guide.md for the internal architecture map, data flow, and key module notes.