2024-01-31 13:39:25 -06:00
..
2024-01-18 13:08:23 -06:00
2024-01-18 13:08:23 -06:00
2024-01-18 13:08:23 -06:00
2023-12-28 17:20:29 -06:00
2024-01-02 11:10:56 -06:00
2024-01-18 14:45:22 -06:00
2023-12-28 17:21:09 -06:00
2024-01-19 14:49:31 -06:00
2024-01-31 13:39:25 -06:00
2024-01-15 09:01:21 -06:00

Tailfin Logo

Tailfin

A self-hosted digital flight logbook

Python MongoDB FastAPI

Table of Contents

About

Tailfin is a digital flight logbook designed to be hosted on a personal server, computer, or cloud solution. This is the API segment and can be run independently. It is meant to be a base for future applications, both web and mobile.

I created this because I was disappointed with the options available for digital logbooks. The one provided by ForeFlight is likely most commonly used, but my proclivity towards self-hosting drove me to seek out another solution. Since I could not find any ready-made self-hosted logbooks, I decided to make my own.

Getting Started

Prerequisites

  • python 3.11+
  • mongodb 7.0.4

Installation

  1. Clone the repo
$ git clone https://git.github.com/azpsen/tailfin-api.git
$ cd tailfin-api
  1. (Optional) Create and activate virtual environment
$ python -m venv tailfin-env
$ source tailfin-env/bin/activate
  1. Install python requirements
$ pip install -r requirements.txt
  1. Configure the database connection

The default configuration assumes a running instance of MongoDB on localhost:27017, secured with username and password tailfin-api and tailfin-api-password. This can (and should!) be changed by modifying .env, as detailed in Configuration. Note that the MongoDB instance must be set up with proper authentication before starting the server. I hope to eventually release a docker image that will simplify this whole process.

  1. Start the server
$ python app.py

Configuration

To configure Tailfin, modify the .env file. Some of these options should be changed before running the server. All available options are detailed below:

DB_URI: Address of MongoDB instance. Default: localhost
DB_PORT: Port of MongoDB instance. Default: 27017
DB_NAME: Name of the database to be used by Tailfin. Default: tailfin

DB_USER: Username for MongoDB authentication. Default: tailfin-api
DB_PWD: Password for MongoDB authentication. Default: tailfin-api-password

REFRESH_TOKEN_EXPIRE_MINUTES: Duration in minutes to keep refresh token active before invalidating it. Default: 10080 (7 days)
ACCESS_TOKEN_EXPIRE_MINUTES: Duration in minutes to keep access token active before invalidating it. Default: 30

JWT_ALGORITHM: Encryption algorithm to use for access and refresh tokens. Default: HS256
JWT_SECRET_KEY: Secret key used to encrypt and decrypt access tokens. Default: please-change-me
JWT_REFRESH_SECRET_KEY: Secret key used to encrypt and decrypt refresh tokens. Default: change-me-i-beg-of-you

TAILFIN_ADMIN_USERNAME: Username of the default admin user that is created on startup if no admin users exist. Default: admin
TAILFIN_ADMIN_PASSWORD: Password of the default admin user that is created on startup if no admin users exist. Default: change-me-now

TAILFIN_PORT: Port to run the local Tailfin API server on. Default: 8081

Usage

Once the server is running, full API documentation is available at localhost:8081/docs

Roadmap

  • Multi-user authentication
  • Basic flight logging CRUD endpoints
  • Aircraft management and association with flight logs
  • Attach photos to log entries
  • GPS track recording
  • Implement JWT refresh tokens
  • PDF Export
  • Import from other log applications
  • Integrate database of airports and waypoints that can be queried to find nearest