upvote
Ah, that's my fault for not making the error handling clearer in the UI. If the map is blank, it usually means the backend is missing the .env file with the free API keys (AISSTREAM_API_KEY and N2YO_API_KEY), so it's silently failing to fetch the streams.

Did the terminal throw any Python FastAPI errors, or did it just serve the Next.js frontend? I'm going to push an update later today to show a prominent "Backend Disconnected / Missing API Keys" warning on the UI so it doesn't just look dead. Thanks for testing it!

reply
On the topic of API Keys, for Opensky it's OPENSKY_CLIENT_ID and OPENSKY_CLIENT_SECRET, the readme has OPENSKY_USERNAME and OPENSKY_PASSWORD
reply
The perils of vibe coding.
reply
Looks like I had to use python-3.11 and install a few dependencies.
reply
Change the requirements.txt in the backend to the following

fastapi==0.103.1

uvicorn==0.23.2

yfinance>=0.2.40

feedparser==6.0.10

legacy-cgi==2.6.1

requests==2.31.0

apscheduler==3.10.3

pydantic==2.11.0

pydantic-settings==2.8.0

playwright>=1.58.0

beautifulsoup4>=4.12.0

sgp4>=2.22

cachetools>=5.3.0

cloudscraper>=1.2.71

reverse_geocoder>=1.5.1

lxml>=5.0

python-dotenv>=1.0

and be on python 3.13 and it should get you up and running

reply
Thanks, it helped some, but I'm still having an error:

  [1] node:internal/modules/cjs/loader:1368
  [1]   throw err;
  [1]   ^
  [1] 
  [1] Error: Cannot find module '/home/user/shadow/start-backend.js'
  [1]     at Function._resolveFilename (node:internal/modules/cjs/loader:1365:15)
  [1]     at defaultResolveImpl (node:internal/modules/cjs/loader:1021:19)
  [1]     at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1026:22)
  [1]     at Function._load (node:internal/modules/cjs/loader:1175:37)
  [1]     at TracingChannel.traceSync (node:diagnostics_channel:322:14)
  [1]     at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)
  [1]     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:171:5)
  [1]     at node:internal/main/run_main_module:36:49 {
  [1]   code: 'MODULE_NOT_FOUND',
  [1]   requireStack: []
  [1] }
reply
This is fun, Playwright is a python wrapper for a node lib. So we have Next.js (full stack js/ts), with a Python backend (???), that uses a wrapper for a js/ts lib, all we need now is to shell out to node from inside that script and we have peak inception lol.
reply
Same on a Mac
reply
Yeah this doesn't work on Mac either. This is just broken and nonfunctioning.
reply
Apparently, I had a bunch of front end developmental scripts that were calling the Windows version of python. Working on it now.
reply