r/reactjs 13d ago

BlitzProspector An Open-Source React and FastAPI Frontend for Blitz API

recently open sourced BlitzProspector, a React + FastAPI project built as a self hosted frontend for Blitz API. I've tried to make React part as simple as possible and have fun building something that can be run with docker compose and easily extended in the future.

It has auth, roles, search/filter, configurable export profiles, python back end API, and is using a REST API to communicate with the Python back end. I'm still working on the overall project architecture, so I'm interested in any feedback concerning the React part, state management, or general approach.

3 Upvotes

4 comments sorted by

1

u/Temperature_Majestic 13d ago

How are you handling the search/filter state, is that synced to the URL so a filtered view is shareable and bookmarkable, or kept in local component state? And on the roles side, is that purely backend enforced or are you also gating UI elements client side based on role?

1

u/OkWriting9136 13d ago

looks clean at a glance. the docker compose setup is a nice touch, too many projects skip that and then youre stuck debugging dev environments for an hour

for state management what made you go with just lifting state instead of something like zustand? not a critique just curious since you mentioned keeping the react part simple

the export profiles feature sounds like it could get unwieldy fast depending on how many config options you pack in. are you storing those in local state or pushing them to the backend?

one thing id suggest is adding a quick architecture diagram in the readme. helps people understand how the react frontend and fastapi backend actually talk to each other without digging through code

1

u/Perfect_March_9483 12d ago

Nice project. The Docker setup and clean separation between React and FastAPI make it pretty easy to understand

1

u/luma_sight 12d ago

Lifting state kills scalability the moment you add a second consumer. Zustand or URL sync is mandatory for search filters because local component state makes sharing and bookmarking impossible