NetFrames is a lightweight, connected display platform that allows digital picture frames or embedded screens to automatically fetch and display images from a central server. Designed for Raspberry Pi, Meadow, or mobile clients, NetFrames is ideal for personal photo galleries, public displays, or IoT art installations.
NetFrames.Server is a .NET Core Web API, exposing endpoints to:
- Upload an image
- Get list of images
- Get specific image by ID.
The purpose of this portal is to manage the image collection that client devices will display on its screens.
You can build this digital portrait using a YoshiPi.
Both the Server and WebPortal target .NET 10. Make sure you have the .NET 10 SDK installed.
The WebPortal connects to the Server's API via the ApiBaseUrl setting in Source/NetFrames.WebPortal/appsettings.json:
{
"ApiBaseUrl": "http://localhost:5233"
}Update this value depending on where the Server is running (see scenarios below).
When running both projects on the same machine, the default launch profiles handle the ports:
| Project | HTTP | HTTPS |
|---|---|---|
| NetFrames.Server | http://localhost:5233 |
https://localhost:7044 |
| NetFrames.WebPortal | http://localhost:5150 |
https://localhost:7118 |
These ports are configured in each project's Properties/launchSettings.json.
-
Start the Server:
cd Source/NetFrames.Server dotnet run -
In a separate terminal, start the WebPortal:
cd Source/NetFrames.WebPortal dotnet run -
Make sure
ApiBaseUrlis set tohttp://localhost:5233inappsettings.json(the default). -
Open
http://localhost:5150in your browser.
When running the Server on a separate machine (such as a Raspberry Pi), you need to configure the Server to listen on all network interfaces and point the WebPortal to the server's IP address.
On the remote machine (Server):
-
Update
Source/NetFrames.Server/Properties/launchSettings.jsonto bind to all interfaces:"applicationUrl": "http://0.0.0.0:5000"
Or pass the URL directly:
cd Source/NetFrames.Server dotnet run --urls "http://0.0.0.0:5000" -
Note the machine's IP address (e.g.
192.168.1.73).
On your local machine (WebPortal):
-
Update
ApiBaseUrlinSource/NetFrames.WebPortal/appsettings.jsonto point to the remote server:{ "ApiBaseUrl": "http://192.168.1.73:5000" } -
Run the WebPortal:
cd Source/NetFrames.WebPortal dotnet run -
Open
http://localhost:5150in your browser.
The following table show's whats available and what features are next in upcoming updates.
Finding bugs or wierd behaviors? File an issue with repro steps.


