Find a file
2022-08-20 23:48:51 +10:00
.github Refactor backend to import/export syntax and update deps 2022-08-20 21:35:38 +10:00
crabfit-backend Always send JSON responses 2022-08-20 21:52:09 +10:00
crabfit-browser-extension Update logo 🦀 2021-06-18 04:10:57 +10:00
crabfit-frontend Add translation for classic colour palette 2022-08-20 23:48:51 +10:00
.gitignore Loader for extension popup 2021-04-20 20:09:11 +10:00
dispatch.yaml Set up app engine dispatch rules 2022-08-19 15:52:10 +10:00
LICENSE Add GNU GPLv3 license 2021-05-26 18:51:18 +10:00
README.md Update deployment documentation 2022-08-20 22:01:45 +10:00

Crab Fit avatar

Align your schedules to find the perfect time that works for everyone. Licensed under the GNU GPLv3.

Crab Fit - Use your availability to find a time that works for everyone | Product Hunt

Contributing

Bugs or feature requests

If you find any bugs or have a feature request, please create an issue by clicking here.

🌐 Translations

If you speak a language other than English and you want to help translate Crab Fit, fill out this form: https://forms.gle/azz1yGqhpLUka45S9

Setup

  1. Clone the repo.
  2. Run yarn in both backend and frontend folders.
  3. Run yarn dev in the backend folder to start the API. Note: you will need a google cloud app set up with datastore enabled and set your GOOGLE_APPLICATION_CREDENTIALS environment variable to your service key path.
  4. Run yarn dev in the frontend folder to start the frontend.

🔌 Browser extension

The browser extension in crabfit-browser-extension can be tested by first running the frontend, and changing the iframe url in the extension's popup.html to match the local Crab Fit. Then it can be loaded as an unpacked extension in Chrome to test.

Deploy

Deployments are managed with GitHub Workflows.

To deploy cron jobs (i.e. monthly cleanup of old events), run gcloud app deploy cron.yaml.

🔌 Browser extension

Compress everything inside the crabfit-browser-extension folder and use that zip to deploy using Chrome web store and Mozilla Add-on store.