|
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 (like python, php, c#, etc.) I worked how many hours, etc.
I'm actually confused between 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, web-based on the other hand will force me keep running an apache server too which will be 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 it's database to include multi-user connectivity, client login, etc. but that's going too far at this point!
The idea is that this tool should be useful not just for me but other freelancers, students, 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. If web-based, it’ll be php/mysql based)
|
|
|
|
|
Real programmers use a Chaos Butterfly for all development tasks.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Today 'internal' is not always means at-the-same-location or on-the-same-network...
So beside multi-user issues (that you should include IMHO from the beginning), you should watch for network access - in that part web based app may help you...
"Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid." ― Albert Einstein
|
|
|
|
|
Think in layers. (Not tiers.) The eventual solution may support multiple client interfaces -- Windows, web, mobile, etc. If the underlying core of the application provides a proper API, then users can define their own -- in their language and choice of technology. You would provide your one client (a reference implementation) only as an example. It can be what you want, a Windows app with system tray icon if you want.
As to the database, that's deeper in the system. To there are ways to have the database specified by the user, but few have need of doing that.
There is an application I began writing back in 2009, which I originally wrote using SQL Server (Express), but later realized might be better using SQL Server Compact (so I could take it with me on a flash drive). I think a local database could be used the same way, but I've never tried it.
If I ever get back to working on it, I will make the choice of database a runtime option. Using ADO.net makes operating with different database systems pretty easy.
|
|
|
|
|
Take a look at Grindstone. They have a free desktop client and also a sync client if in future want to expand. Here is the link to it: Epiforge
"It is easy to decipher extraterrestrial signals after deciphering Javascript and VB6 themselves.", ISanti[ ^]
|
|
|
|
|
Logical design precedes physical design; you've missed the first step already by worrying about the implementation.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
.NET MAUI
If you think 'goto' is evil, try writing an Assembly program without JMP.
|
|
|
|
|
|
|
Web. The desktop is dead, even if Microsoft thinks they can push WinForms on *nix platforms.
Prahlad Yeri wrote: If web-based, it’ll be php/mysql based
Why? Why? Why?
|
|
|
|
|
You're advocating time sharing; that's older than the desktop. Same old.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
excel ???
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
I was going to suggest MS Access and ASP pages.
|
|
|
|
|
If the already mentioned existing solutions are not what you are looking for then:
I would use ASP.NET Core + Blazor.
Free hosting at Azure App Service (compute time limited), or cheap Linux Azure App Service hosting.
Including, you can use free Azure DevOps, build and deploy to Azure App Service.
These all above will introduce you and teach you something new .
|
|
|
|
|
Kestrel Windows Service Host... maybe web api, maybe none and hosting something more like Quartz for scheduling.
But why? Just to do it because passion and learning? Your time is probably worth more than it would cost to buy something that does what you want and/or you could dig into OSS and find something for free?
|
|
|
|
|
How would your project be different from existing apps for that, like asana and jira?
|
|
|
|
|
It might be worth it for you to take a look at TreeSheets:
<a href="https://strlen.com/treesheets/">TreeSheets</a>[<a href="https://strlen.com/treesheets/" target="_blank" title="New Window">^</a>]
<a href="https://github.com/aardappel/treesheets">GitHub - aardappel/treesheets: TreeSheets : Free Form Data Organizer (see treesheets.com)</a>[<a href="https://github.com/aardappel/treesheets" target="_blank" title="New Window">^</a>]
|
|
|
|
|
COTS. The technology is secondary if it's already written and you have to ask.
|
|
|
|
|
Are you going to re-install the client on every computer in your company when you make changes? You are still going to need a central database server, so why not also a web server?
|
|
|
|
|
So I have this customer who has this 20 year old web application.
It works, it's still actively developed, but it's beginning to show its age (well, I guess it's been doing that for years).
It's VB.NET Web Forms updated to the latest .NET Framework, 4.8.
It's pretty much what you'd expect of something like that.
SQL queries written directly into the HTML (or whatever you call the Web Forms HTML), a lot of roundtrips to the server, and XML web services.
Most logic is written in SQL Server views, functions and stored procedures, which don't really have any sort of reliable source control.
A lot of programmers wouldn't touch it with a stick.
Now there have been discussions over whether or not we should do a rewrite, or in any other way update to something more modern.
Maybe we can start by modernizing the generated HTML and CSS to make things more modern, like making the pages responsive.
Replacing VB with C# would be a good move to attract developers in the future and to make use of newer language and VS features and we can hopefully do that page by page (for example, LINQ queries are a pain in VB!).
Perhaps throw in some build and release pipelines (it's now copy/paste) and replace SVN with Git.
I know rewrites are hard, expensive, and probably more often than not don't end well.
Have you been in this situation?
What did you do?
Tips?
|
|
|
|
|
I am on the 'rewrite from scratch' side.
"In testa che avete, Signor di Ceprano?"
-- Rigoletto
|
|
|
|
|
Yeah, but unless you have a very solid plan and strategy that's destined to fail.
You don't just rewrite 20 years of development.
|
|
|
|
|
Quote: You don't just rewrite 20 years of development. More than 30, in my case.
"In testa che avete, Signor di Ceprano?"
-- Rigoletto
|
|
|
|
|
ditto
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
I have no experience with those technologies but have gone through rewrites that succeeded and others that failed, so I wrote an article[^] on the topic.
|
|
|
|