freeCodeCamp/api
Oliver Eyton-Williams ae387fbd5c
Some checks failed
CI - E2E - 3rd party donation tests / Build & Test (20) (push) Has been cancelled
CI - Node.js / Lint (20) (push) Has been cancelled
CI - Node.js / Build (20) (push) Has been cancelled
CI - Node.js / Test (20) (push) Has been cancelled
CI - Node.js / Test - Upcoming Changes (20) (push) Has been cancelled
CI - Node.js / Test - i18n (italian, 20) (push) Has been cancelled
CI - Node.js / Test - i18n (portuguese, 20) (push) Has been cancelled
refactor(api): organise tooling (#59931)
2025-04-24 10:27:23 +05:30
..
__mocks__ chore(api): add env exam scripts (#58208) 2025-01-28 17:00:52 +01:00
prisma chore(api): add env exam scripts (#58208) 2025-01-28 17:00:52 +01:00
src refactor(api): organise tooling (#59931) 2025-04-24 10:27:23 +05:30
tools refactor(api): organise tooling (#59931) 2025-04-24 10:27:23 +05:30
.gitignore feat: create docker images for new api (#51538) 2023-09-13 02:15:25 +05:30
jest.config.ts test: speed up api tests (#53969) 2024-03-09 10:36:19 +05:30
jest.utils.test.ts test: minor fix to how cookies are passed around (#55259) 2024-06-21 08:36:46 -07:00
jest.utils.ts feat(api): remove rate limiting (#58289) 2025-01-23 15:35:50 -06:00
package.json refactor(api): organise tooling (#59931) 2025-04-24 10:27:23 +05:30
README.md docs(api): add troubleshooting section (#57896) 2025-01-07 08:35:36 +01:00
tsconfig.build.json refactor(api): organise tooling (#59931) 2025-04-24 10:27:23 +05:30
tsconfig.json refactor(api): import ts-reset in entrypoint (#51677) 2023-09-28 09:40:51 -07:00

Working on the new api

Connecting to local database

The api uses the ORM Prisma and it needs the MongoDB instance to be a replica set.

Atlas

If you use MongoDB Atlas, the set is managed for you.

Local

The simplest way to run a replica set locally is to use the docker-compose file in /tools.

cd tools
docker compose up -d

The new db will be empty, so you can run the seed script to populate it.

cd ../.. # back to the root of the repo
pnpm seed

Troubleshooting

If you have any issues connecting to the database (e.g. MongoServerError: not primary), try removing the volume and recreating the containers.

cd tools
docker compose down -v
docker compose up -d

Login in development/testing

During development and testing, the api exposes the endpoint GET auth/dev-callback. Calling this will log you in as the user with the email foo@bar.com by setting the session cookie for that user.

Generating Exams

pnpm run generate-exams <ENV_EXAM_ID> <NUMBER_OF_EXAMS_TO_GENERATE>