Skip to content

laggery/Flightbook-API

Repository files navigation

Flightbook API

Flightbook is a personal logbook for paraglider and hang glider pilots. The flights must be registered manually and the logbook is not connected to any GPS.

Why is-it not connected to GPS? There exist a lot of application that are connected to the GPS but often you don’t want to register the track but you just like to have a trace of the flight. For example: Tandem pilots

How is construct this project? The entire project is construct in two parts.

History

I started with this project in 2013 and first it was used from some Friends and me. 2015 I published the first mobile application version and developed a Symfony web page. 2020 I decided to redevelop the mobile application with the Ionic Framework, the backend with nestjs and make the entire project open source.

Getting started

Start docker-compose.yml

docker-compose -f docker/docker-compose.yml up -d

Create a .env file

ENV=local
LOG_LEVELS=log,error,warn,debug,verbose

DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_USER=flightbook_dev
DATABASE_PASSWORD=dev
DATABASE_NAME=flightbook_dev
DATABASE_SYNCHRONIZE=false
DATABASE_SCHEMA=data
DATABASE_SSL=false

KEYCLOAK_BASE_URL=http://localhost:8080
KEYCLOAK_REALM=flightbook
KEYCLOAK_CLIENT_ID=flightbook-api
KEYCLOAK_CLIENT_SECRET=SEE_KEYCLOAK_CLIENT_SECRET --> open keycloak and get the client secret from the flightbook-api client
KEYCLOAK_ADMIN_USERNAME=admin
KEYCLOAK_ADMIN_PASSWORD=admin

AWS_S3_ENDPOINT=http://localhost
AWS_BUCKET=flightbook-bucket
AWS_ACCESS_KEY_ID=flightbook_dev
AWS_SECRET_ACCESS_KEY=flightbook_dev_secret

JWT_SECRET=mySecret
TOKEN_EXPIRATION=1000h

# Origin
ORIGIN_INSTRUCTOR=localhsot:4200

# Mobile App URL
MOBILE_APP_URL=http://localhost:8100

# Instructor App URL
INSTRUCTOR_APP_URL=http://localhost:4200

# Backend API URL
API_URL=http://localhost:8282

# Email
EMAIL_HOST:
EMAIL_USER:
EMAIL_PASSWORD:
EMAIL_PORT:
EMAIL_FROM:

# Payment
STRIPE_SECRET_KEY=sk_test
STRIPE_ENDPOINT_SECRET=whsec
STRIPE_PRICE=price

REVENUECAT_URL=https://api.revenuecat.com
REVENUECAT_ENTITLEMENT=
REVENUECAT_AUTH=
REVENUECAT_STRIPE_PUBLIC_KEY=

#map
MAP_URL=
MAP_ATTRIBUTIONS=
MAP_CROSS_ORIGIN=

# Google OAuth Credentials (from Google Cloud Console)
GOOGLE_CLIENT_ID=your-client-id-here.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-client-secret-here

FIREBASE_CREDENTIAL_JSON=

# Version Check (Mobile App)
ANDROID_MINIMAL_VERSION_BUILD=
ANDROID_LATEST_BUILD=
ANDROID_APP_ID=
IOS_MINIMAL_VERSION_BUILD=
IOS_LATEST_BUILD=
IOS_APP_ID=

Open minio http://localhost:9001/ and create a new bucket with name flightbook-bucket

Start nestjs app

npm run start:dev

Db migration scripts

MIGRATION_NAME=appointmentType npm run migration:generate

Google Cloud Console Setup

Create OAuth 2.0 Credentials

  1. Go to Google Cloud Console

  2. Create a new project or select an existing one

  3. Enable the Google Calendar API:

    • Navigate to "APIs & Services" → "Library"
    • Search for "Google Calendar API"
    • Click "Enable"
  4. Create OAuth 2.0 credentials:

    • Go to "APIs & Services" → "Credentials"
    • Click "Create Credentials" → "OAuth 2.0 Client ID"
    • Choose "Web application" as application type
    • Configure the OAuth consent screen if prompted
  5. Add authorized redirect URIs:

    • Add your backend callback URL: {API_URL}/schools/google-calendar/callback
    • Note: We use a single redirect URI for all schools. The school ID is passed via the OAuth state parameter
  6. Copy the Client ID and Client Secret

Security

If you discover security related issues, please email yannick.lagger@flightbook.ch instead of using the issue tracker.

Licence

Copyright (C) 2013-2020 Yannick Lagger, Switzerland. Flightbook is released under the GPL3 License

Other used open source project

Authors

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages