I'm not very comfortable with programming yet, but I'd like to build something tangible that I can interact with and share with other people. I'm considering either a simple notes app or a calculator with 2D graphing, and I'd like the result to work across multiple operating systems.
I mainly use Linux and macOS, and I'd like other people around me to be able to try the app too. I know C reasonably well from some embedded-systems experience, and I know enough C++ to realize I'd rather avoid it for now. My Python experience is limited. I'll probably use AI tools for assistance, but I want to understand, test, and modify the generated code, so a relatively approachable language and quick feedback would be ideal.
Would it be better to start with a web app, use something like Flutter, try C#, or build for one operating system first and add others later?
5 Answers
Flutter is worth considering if you specifically want a packaged app with a shared codebase, but it means learning Dart along with the framework. Before jumping into it, spend some time strengthening your programming fundamentals. Otherwise, AI-generated projects can contain a surprising amount of code and structure that you don’t yet understand.
For a first project, cross-platform support may add unnecessary complexity. Build the smallest useful version as a website, or choose one desktop platform and finish it there. If you want a more traditional desktop toolkit afterward, C# is relatively approachable and has good application-development tooling.
I originally wanted to distribute it as an app rather than just a website, but I agree that starting with one platform or the web would be less overwhelming. I’m considering beginning on macOS and adding Windows later.
The easiest cross-platform target is probably a web app. Browsers behave similarly across most operating systems, and HTML, CSS, and JavaScript give you a quick path to something usable. You can also make it installable as a Progressive Web App, so it feels more like an application without maintaining separate native builds.
That makes sense. I’m still a little wary of JavaScript frameworks, so I may start with plain HTML, CSS, and JavaScript before deciding whether I need a framework.
Don’t try to support every platform immediately. Make one small version work from start to finish, preferably with only the core feature, then improve it and add another platform. A notes app or calculator is manageable if you keep the first version extremely simple.
If you want native-looking desktop packages while still using web technologies, you can build the interface with HTML, CSS, and JavaScript and wrap it with something such as Tauri. That can produce applications for multiple systems, though you’ll still need to learn the tooling and may encounter some Rust-related setup.

That was exactly what happened when I asked an AI tool to make a tiny Flutter, C#, and Kotlin demo. The result did far more than I expected, and I realized I didn’t understand the underlying project structure well enough.