Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation - Pick a frontend UI framework #119

Open
5 tasks
sbland opened this issue Oct 3, 2024 · 4 comments
Open
5 tasks

Implementation - Pick a frontend UI framework #119

sbland opened this issue Oct 3, 2024 · 4 comments
Assignees
Labels
implementation Technical implementation of the toolkit website

Comments

@sbland
Copy link
Collaborator

sbland commented Oct 3, 2024

We need to pick an appropriate Frontend UI framework

Framework Options:

  • React
  • React + Next(SSR)
  • Vue
  • Svelte
  • Angular

NOTE: I've opened this as a bit of a placeholder for implementation requirements.

If you intend to contribute to the frontend development please vote for a framework by commenting below and include a reason if not already defined. Feel free to suggest something not mentioned above.

@sbland sbland added the implementation Technical implementation of the toolkit website label Oct 3, 2024
@sbland sbland self-assigned this Oct 3, 2024
@AdrianDAlessandro
Copy link

@sbland Following on from today's meeting:

Can you look into what front-end options might work well with Django? In the past I've only used non-javascript options:

  • HTMX alongside Hyperscript for dynamically updating components without the need for page re-loading or JS frameworks.
  • django-plotly-dash for dashboards and visualisations using Plotly-Dash. Although this Django plugin is inconsistently maintained.

@sbland
Copy link
Collaborator Author

sbland commented Nov 28, 2024

@AdrianDAlessandro I think I can probably work with the templates and there are some solutions for using React within relying on a Rest API if needed.

From a general developing point I could do with some solutions to the following if anyone has some good library suggestions:

  • A way of previewing templates with different context values. Similar to https://storybook.js.org/
  • Any nice ways of creating common components without React. Perhaps this is just in using the classes but I'd be interested to know of any alternatives.

I've setup a Miro here to start sketching the UI requirements: https://miro.com/app/board/uXjVLA_OTE0=/?share_link_id=723817271690

@AdrianDAlessandro
Copy link

@sbland That Miro looks great! Thanks for starting that.

I'm not aware of a tool for building components like Storybook. I guess Django isn't really meant for customising the components, or the front-end elements in general. The advantage of the html templates is having tight integration with the backend and not needing to use something like a REST API just for your front-end to talk to your back-end.

I'm not 100% what you mean by common components. If you mean re-usable sections that can be used in different pages, I think the best (i.e. most "Django-ey") approach is making minimal templates that can be used inside other templates. If you mean really minimal components (buttons, dropdown, etc) then out-of-the-box solutions are best to start with and if we need more complicated stuff we can add it later.

That being said, I've done some googling, and here are a bunch of links for different tech options. This Reddit thread has a lot of useful stuff.

Components:

Adding reactivity:

Tagging @davehorsfall for visibility

@davehorsfall
Copy link
Contributor

Hi @sbland, thanks for creating this issue, and creating the Miro board, which is looking great.

You'll see in the rse-competencies-toolkit-webapp, that I've created a new PR with the purpose of introducing a Bootstrap 5 template, and also the framework for managing frontend assets through NPM. We can manage javascript packages, compile vendor assets, compile scss and other javascript activities as required. This will allow us to add any javascript packages we want to use, but still directly interface with the Django models through the HTML templates.

Please take look if you're able, and let me know your thoughts. We will be meeting on Thursday at 3pm to discuss in more detail, if you want to join.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
implementation Technical implementation of the toolkit website
Projects
None yet
Development

No branches or pull requests

3 participants