Skip to content

Latest commit

 

History

History
122 lines (73 loc) · 3.87 KB

File metadata and controls

122 lines (73 loc) · 3.87 KB

FastAPI Project - Frontend

The frontend is built with Vite, React, TypeScript, TanStack Query, TanStack Router and Tailwind CSS.

Requirements

Quick Start

bun install
bun run dev

Notice that this live server is not running inside Docker, it's for local development, and that is the recommended workflow. Once you are happy with your frontend, you can build the backend Docker image and start it, to test the production-like setup where FastAPI serves the built frontend at http://localhost:8000.

Check the file package.json to see other available options.

Removing the frontend

If you are developing an API-only app and want to remove the frontend, you can do it easily:

  • Remove the ./frontend directory.

  • In the backend/app/main.py file, remove the app.frontend() call.

  • In the backend/Dockerfile file, remove the frontend build stage and the COPY --from=frontend-build instruction.

  • In the compose.override.yml file, remove the playwright service.

Done, you have a frontend-less (api-only) app. 🤓


If you want, you can also remove the FRONTEND_HOST environment variable from:

  • .env

But it would be only to clean them up, leaving them won't really have any effect either way.

Generate Client

Automatically

  • Activate the backend virtual environment.
  • From the top level project directory, run the script:
bash ./scripts/generate-client.sh
  • Commit the changes.

Manually

  • Start the Docker Compose stack.

  • Download the OpenAPI JSON file from http://localhost/api/v1/openapi.json and copy it to a new file openapi.json at the root of the frontend directory.

  • To generate the frontend client, run:

bun run generate-client
  • Commit the changes.

Notice that everytime the backend changes (changing the OpenAPI schema), you should follow these steps again to update the frontend client.

Using a Remote API

By default, the built frontend uses the same origin as the FastAPI app. If you want to use a remote API while running the Vite development server, you can set the environment variable VITE_API_URL to the URL of the remote API. For example, you can set it in the frontend/.env file:

VITE_API_URL=https://my-domain.example.com

Then, when you run the frontend, it will use that URL as the base URL for the API.

Code Structure

The frontend code is structured as follows:

  • frontend/src - The main frontend code.
  • frontend/src/assets - Static assets.
  • frontend/src/client - The generated OpenAPI client.
  • frontend/src/components - The different components of the frontend.
  • frontend/src/hooks - Custom hooks.
  • frontend/src/routes - The different routes of the frontend which include the pages.

End-to-End Testing with Playwright

The frontend includes initial end-to-end tests using Playwright. To run the tests, you need to have the Docker Compose stack running. Start the stack with the following command:

docker compose up -d --wait backend

Then, you can run the tests with the following command:

bunx playwright test

You can also run your tests in UI mode to see the browser and interact with it running:

bunx playwright test --ui

To stop and remove the Docker Compose stack and clean the data created in tests, use the following command:

docker compose down -v

To update the tests, navigate to the tests directory and modify the existing test files or add new ones as needed.

For more information on writing and running Playwright tests, refer to the official Playwright documentation.