A RESTful API and client.
Main libraries:
git clone <repository>
cd mirlo
cp .env.example .env
docker-compose up
Go to localhost:3000/docs
and see the Swagger API docs.
This should run the seeding script by default. If it doesn't do so, you can add run the seed by running:
docker exec -it blackbird-api npx prisma db seed
cd client
cp .env.example .env
yarn
yarn start
Changes in background jobs aren't detected. You'll need to restart the docker container for them:
docker-compose up -d --force-recreate --no-deps background
If you want to upload music or upload images, you'll need a worker running.
docker exec -it blackbird-api node src/jobs/queue-worker.js run
NOTE: this is done automatically by the
blackbird-background
container in docker.
NOTE: In local development you can see the worker queue at /admin/queues on the server
Migrations will run automatically on docker-compose up
. To make changes to the database, change the schema.prisma file and then run:
docker exec -it blackbird-api npx prisma migrate dev
If your typescript for prisma is ever out of date, you can re-generate it with:
docker exec -it blackbird-api npx prisma generate
By default Mirlo uses Stripe as its payment processor.
NOTE: Every 90 days you'll have to re-log-in to the stripe CLI with
stripe login
To test webhooks, you'll have to run this:
stripe listen --forward-to localhost:3000/v1/webhooks/stripe
This will forward all stripe webhooks to your localhost:3000, and send them to the checkout/webhook URL. It'll also spit out a STRIPE_WEBHOOK_SIGNING_SECRET
. You'll need to set that in the .env file.
Then to trigger a specific workflow:
# this is what's needed to store a subscription
stripe trigger checkout.session.completed --add checkout_session:metadata.userId=3 --add checkout_session:metadata.tierId=2
You'll also want fake Stripe data. You can find the details on that here.
Some cron jobs exist:
docker exec -it blackbird-api yarn ts-node src/jobs/every-minute-tasks.ts
You can access dev MinIO at localhost:9001 with the MINIO_ROOT_USER and MINIO_ROOT_PASSWORD you set in .env
If you want to do logging in the database, you need to uncomment the log
line in the prisma/prisma.ts
file.
See the test/README.md instructions.
If you get errors when running the backbird-api and blackbird-background service like Error relocating /usr/lib/libgcc_s.so.1: unsupported relocation type 7
, you'll need to follow these steps.
- In terminal run
softwareupdate --install-rosetta
- In Docker Desktop, go to Settings -> General and ensure
Use Rosetta for x86/amd64 emulation on Apple Silicon
is checked. - Delete any previously created images
- Run
DOCKER_DEFAULT_PLATFORM=linux/amd64 docker compose up
A lot of the code here was originally written for the Resonate API and UI