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.