sporkle-app / sporkle

User Friendly, Cross-Platform, Git Client (made with Vue + NW.js)
https://sporkle-app.github.io
MIT License
20 stars 0 forks source link

Blank #3

Open TheTechRobo opened 5 years ago

TheTechRobo commented 5 years ago

I don't know if this is still developed but every time I start it up it just shows a blank screen.

TheJaredWilcurt commented 5 years ago

This got hung up on a few technical issues and I've not had time to come back to resolve them yet. I still intend to in the future. One major issue is I'd like to write tests with Jest, but don't know enough about Jest to be able to mock out the NW.js/Node functionality.

Another is I'd like to have 3 hi-fi designs in place for the app (light mode, dark mode, high contrast). But lack a designer or the time to hand craft it. Most of the design of the app doesn't fall neatly into what CSS frameworks typically offer, so I feel like pulling one in wouldn't offer a lot, as most of the app will still require custom styling. Which is fine, I just want a design in place first before executing.

TheTechRobo commented 2 years ago

Out of curiosity, what are the technical issues? I'd love to take a shot at fixing this :D

TheJaredWilcurt commented 2 years ago

Issues that prevented me:

  1. I tried to use CSS Grid, but no browsers supported animation with it. Now they do, but it's clunky and I should have just used flexbox to begin with.
    • I'd like to re-do the layout to use flexbox at this point.
  2. The general set up was based on an early prototype of what later became a Vue-CLI + NW.js boilerplate. I've since improved it lot:
  3. Unit tests would be good and those aren't fully functional with Vue 3 yet. I guess we could use Vue 2 for the time being, but that's just setting up a lot of tech debt for later to convert. Or we could wait for Vue 3's ecosystem to catch up and have better support.
  4. And the boilerplate uses Phoenix for automated builds and that's pretty dated and no longer maintained (because no one wants to touch typescript)
    • I've wanted to make my own automated build system for NW.js for a while but it turns out to be really freaking hard, so I'm not sure when/if I'll get to that.
    • Alternatively a common approach in the NW.js community is to just write a custom build script for each project. We could do that, but I've heard some rumors recently of people with GitHub Actions in place for their builds and I'd prefer to see an example of that first so that I can hopefully adapt it here.
  5. I'm no expert in Git, so I think that's another barrier for this project. My original approach was that the UI would just be an abstraction for simplifying calling the correct CLI commands for the user. So that would require documenting which ones to use for each feature. For example, I don't know where to begin on being able to specifically include/exclude only certain lines in a changed file in a commit. I know that it is possible (see: github desktop) but not sure how to add a specific line or range of lines to staging for a commit.

Basically the attempt I started two years ago would be mostly re-written at this point if I were to start again, and I since I still have the old GitHub Desktop app able to run and it does most of the stuff I'd want, it's hard for me to prioritize this project that has a lot of potential points of failure that would stop it from being completed, when I could work on something with a greater liklihood of success (like the Vue-CLI boilerplate, or even the automated build tool).

Summary of reasons to wait:

  1. Vue 3 testing will improve making this project simpler
  2. Automated build tools could be provided externally and simplify this project instead of doing it by hand.
  3. I can still get by with the old GitHub Desktop for a little longer, though when that stops working I will definitely be more motivated to get this up, at least as an MVP.
  4. Styling re-architecture will only get easier the longer we wait to start it with the numerous CSS features on the way from both Vue and the W3C.