Hi. I’m looking at creating a business application for use on Windows PC’s that will basically be a document/task management database for projects, with only a few people connecting to a project at a time. The application will need to be able to archive files, whether that is by putting them in a secure directory, or using something like filestream on MSSQL.

I’ve had a few idea’s regarding the “backend” implementation;

  1. Standalone, with a SQLite DB file on a networked share, and 1 database file per project.
  2. Server based, with a networked database per project. Application connecting directly to the database.
  3. Also server based, but with a REST server handling the data.

Regarding GUI, I see either a native GUI (C# .NET) or a webview style being good options. Having a single exe on the PC is ideal.

Regarding language choice, I am open to any suggestions, but I am particularly interested in trying out C# and GO. I have dabbled with HTML/CSS/JS for frontend, and Python and PHP server side CMS in the past. I would prefer to avoid server side JS (but maybe I will change my opinion if I use some SPA JS frameworks for this projects), and also Electron (seems to be a bit of a stop-gap solution).

Ideally I would like to write the code once, and have it handle all of the above scenarios. Having a non-server option (backend #1) allows the program to be run by small businesses for example, who may not have a server pc, nor want to setup a local instance of. Backend #3 however allows for actual web-based access (eg, remote). So all seem to have different strengths.

Is this possible? For example, I write the backend code to connect to the database and handle the CRUD in one place. In another, I can expose that via a REST server, or connect directly from GUI. Similarly for the front end, it would be nice to write the interface once, and have it connect to various backends automatically. This would mean an Electron style app.

And to throw a spanner in the works, I would also like to connect to this program (or at least it’s data) from other programs via .NET plugins/API’s. These other programs are Windows only, so having my program be cross-platform isn’t not necessary.

submitted by /u/neRok00
[link] [comments]