monuelo / cast-sh

:pager: An instance of your terminal in your browser
Apache License 2.0
161 stars 26 forks source link

Frontend Migration and Dependency Management #76

Open satanb4 opened 4 years ago

satanb4 commented 4 years ago

Is your feature request related to a problem? Please describe. Currently, the frontend is bare-bones javascript implementation employing XtermJS v3.6 for the terminal emulation. This is creating limitations since the Buffer and User Input has been overhauled with a better User Interface.

Describe the solution you'd like Creating a Frontend Pipeline for dependency management while streamlining the code and keeping it minimal. Suggestion of Webpack by @vladdoster in #47 is a good idea. As well as creating a better user interface for the next version. This should be a target for Version v1.0

Describe alternatives you've considered iTermJs is an alternative that can be looked into.

Additional context I'm linking a good XtermJS implementation here The XtermJS site also has overhauled the API. I am also linking the VT Features as discussed on their dev channel for XtermJS here

satanb4 commented 4 years ago

For Version v0.0.1 after PR #68 has been merged, overhauling the UI for v1.0 can been discussed. For now v0.0.1 will be made functional but I wouldn't recommend it for Beta release.

monuelo commented 4 years ago

@satanb4, @vladdoster, So I think we're in sync, haha. Last night I was reviewing issues with the team and planning the beta and I saw exactly the same thing. I thought about using webpack or switching to reactjs.

monuelo commented 4 years ago

We will have a cast-sh demo along with the podcast in about a month, and we need some functionality for it. For that I think it would be nice to have the updated version of xtermjs.

monuelo commented 4 years ago

Ah, we also need to put a simple authentication, could be an env var as password. But we need it in one month. That's why I want to change to react. It's easier to handle and protect routes.

satanb4 commented 4 years ago

Then please look into making a Slack group or a Microsoft Teams. We need more communication to decide on features and roadmap?

monuelo commented 4 years ago

@satanb4 I'm also planning it. I Think making a slack could be a good idea.

vladdoster commented 4 years ago

If you want a team chat room, use gitter. Pretty defacto when it comes to OS projects imo.

vladdoster commented 4 years ago

I would suggest Vue over React. Vues ability for single file components would be a perfect use case for cast-sh where as React has a lot of overhead for in the end turns out to only be a single page app. Take this opinion with a grain of salt as my experience with React is minimal and could not be aware of a similar feature in React.

satanb4 commented 4 years ago

@vladdoster I was going to make the same suggestion. I have used Express, Angular and Vue but not React a lot, however, Vue seems to be a good choice for a framework since it carries over a lot of philosophies of using the DOM itself as well as being light-weight enough with the dependency management. Thoughts, @hericlesme ?

monuelo commented 4 years ago

@satanb4, @vladdoster, Vue seems to be a good choice... :thinking:

vladdoster commented 4 years ago

Mhm, we might want to brainstorm exactly a migration would look like.

By using Vue, are there premade components that suit us better that xterm?

  1. What infrastructure needs to be in place to support Vue?
  2. What code might need to be changed on the frontend/backend.
  3. We should look into Vue static analysis to make sure we follow best practices
  4. Can we recycle any previous html, js, css?

Maybe start a branch for vue-migration

monuelo commented 4 years ago

I created a Slack for the org. I think it's a good place to discuss this. :)

vladdoster commented 4 years ago

I created a Slack for the org. I think it's a good place to discuss this. :)

Please make a gitter. It also allows you to make a badge for it so people can go there to ask questions. there is no slack badge and it is cumbersome to signup. Gitter has github integration oauth2.

satanb4 commented 4 years ago

42 #47 and #63 can now be closed. And work for the beta can begin on #76

vladdoster commented 4 years ago

@hericlesme @satanb4 Are either of you comfortable with TypeScript? I would assume this would be the best for following industry standards as well as make it easier to test. I always forget just how much the frontend consists of in 2019, a bundle builder, some typed JS, a frontend framework. It is a lot.

vladdoster commented 4 years ago

The whole front-end stack is a little out of my wheelhouse.

satanb4 commented 4 years ago

I am comfortable with a Javascript workflow. And no need to focus on heavy duty front-end as long as the code is maintainable and is functional. We'll have a Design Document discussion with a task-list for the Beta release in which, tech stack will be a priority.

vladdoster commented 4 years ago

Are we using slack yet to communicate? I have held off on signing up for it until we are sure. @hericlesme @satanb4 ?

monuelo commented 4 years ago

@vladdoster, @satanb4 no... Sorry for the delay. I needed to spend some time without going here, but I'm back! 🚀 So, no we can continue to plan/discuss the changes. I'll create a Gitter for the organization and we can use it to communicate. 🤓

monuelo commented 4 years ago

@satanb4, @vladdoster Chat already created on Gitter (986f648). You can join clicking here. :tada: