I’m a solo freelance programmer and want to write an app for internal project management, something I can add projects, milestones, tasks, etc. and track them as I work on them, occasionally remind me of things like take a break, lunch time, etc. and over time I can track on which category I worked how many hours, etc.
I’m actually confused about whether to build this as a Web or Windows Desktop app. I’m considering latter because it can run efficiently on my laptop in the system tray using least memory and resources, web-based on the other hand will force me keep running an apache server too which will be quite an overhead (unless I host it on google cloud or someplace which might be an option?)
The only reason for considering web-based is that eventually I’m planning to make this tool open source and with web-based, many others can find this useful too (including OSX/Linux users). At that point, I may consider expanding its data schema to include multi-user connectivity, client login, etc. but that’s going too far at this point!
The basic idea is that this tool should be useful not just for me but other freelancers, students, hobbyists, etc. who might be in my shoes. From that perspective, what do you think is the right technology to use? Web based or Windows based?
(I’ve extensively worked on C#/WinForms projects before and I’m thinking Visual Studio Express for desktop development)
Desktop apps are harder to distribute (certificates etc) and is an old way of doing things IMHO. I think that your app must be able to work in a Chromebook or iPad to be viable.
So the first decision you have to do is desktop or web.
Many developers use the taskbar notification area (often incorrectly called the system tray) improperly. See Notifications and the Notification Area for guidance.
For personal use only, yes. I have been executing Microsoft’s IIS for a website I use locally for only me. One thing I use it for is to make it easy for me use bookmarks. Another use is that I have many pages of notes that I can find easily.
Those are not the same. Open-source projects currently exist in a repository, usually a Git repository such as in GitHub or GitLab. The projects can be found that way. They can be installed into websites if they are website applications. Whereas you could install your application and, depending on the design, perhaps it can be used by everyone from your one site.
A cloud typically refers to just data. You can have data (a database) in a cloud database that is used by both a website and a smartphone application, which is often done. You could use the same database in a desktop application. Some cloud databases are free if the database is small; at least I think so. Azure allows one small database per account. For you, as a beginner, if you are not self-hosting the website for personal use and want to make the website available over the internet then you can get it hosted for a minimal cost.
VS Express does not exist any more. The free version is called VS Community.
You have many options. As a C# programmer you should learn Entity Framework for databases. You can keep your database logic separate from the rest of your application and then it will be easier to use the same code in multiple environments. The main processing could be separate from your UI and that will help to use the same code in multiple environments.
I suggest beginning with a WPF desktop application and if you design your application in a manner that supports it, you can later create a website for it. But there are many other possibilities. I think beginning with a WPF desktop application will provide the opportunity to learn that environment. Learning EF will be useful for all environments you are likely to use as a C# and VS programmer.
IMHO you should definitely use what you already know best. You don’t want this eating up all your free time, you want to devote that to client work and getting paid.