# Coding Phase - Week 6 Report

**URL:** <https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604>\
**Category:** Plugin Website\
**Tags:** gsoc-2022, weekly, report\
**Created:** [25 July 2022 10:57 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604 "2022-07-25T10:57:34Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![Retr0ve](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/retr0ve/32/12960_2.png) [@Retr0ve](https://discourse.joplinapp.org/u/Retr0ve)\
**Post date:** [25 July 2022 10:57 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/1 "2022-07-25T10:57:34Z")

</div>

### Last Week

- Remove 11ty and Astro completely
- Support Mustache partials
- Implemented dynamic routing in customized generator
- Working on the PR regarding the media field in manifest.json of plugins

### This Week

- Write CI scripts to build the site on Github Pages every 30 minutes
- Implement search feature
- Continue to refine UI

---

<div class="post-metadata">

**Author:** ![PackElend](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/packelend/32/488_2.png) [@PackElend](https://discourse.joplinapp.org/u/PackElend)\
**Post date:** [25 July 2022 11:16 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/2 "2022-07-25T11:16:05Z")

</div>

> [@Retr0ve](#):
>
> - Continue to refine UI

looking forward to the update demo 🙂

---

<div class="post-metadata">

**Author:** ![Retr0ve](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/retr0ve/32/12960_2.png) [@Retr0ve](https://discourse.joplinapp.org/u/Retr0ve)\
**Post date:** [26 July 2022 09:39 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/3 "2022-07-26T09:39:03Z")

</div>

I updated the demo in my [personal repo](https://retr0ve.github.io/website-plugin/) since the pr hasn't been merged yet and the main repo is empty now. 😃

---

<div class="post-metadata">

**Author:** ![PackElend](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/packelend/32/488_2.png) [@PackElend](https://discourse.joplinapp.org/u/PackElend)\
**Post date:** [26 July 2022 10:02 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/4 "2022-07-26T10:02:15Z")

</div>

mobile looks good 🙂

would it be possible that the plug-in in click on shows basic information inline?  
Can add a button to install it directly from that overview?

 ![image](https://canada1.discourse-cdn.com/flex028/uploads/cozic/original/2X/1/10c4b10cd3402597f2aa9354dd63f50a719042fe.png)

---

<div class="post-metadata">

**Author:** ![Retr0ve](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/retr0ve/32/12960_2.png) [@Retr0ve](https://discourse.joplinapp.org/u/Retr0ve)\
**Post date:** [26 July 2022 10:07 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/5 "2022-07-26T10:07:28Z")

</div>

Sounds great, that can be done with a popover.

---

<div class="post-metadata">

**Author:** ![PackElend](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/packelend/32/488_2.png) [@PackElend](https://discourse.joplinapp.org/u/PackElend)\
**Post date:** [26 July 2022 10:24 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/6 "2022-07-26T10:24:59Z")

</div>

looking forward to a prototype 🙂

---

<div class="post-metadata">

**Author:** ![JackGruber](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/jackgruber/32/3231_2.png) [@JackGruber](https://discourse.joplinapp.org/u/JackGruber)\
**Post date:** [27 July 2022 14:52 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/7 "2022-07-27T14:52:11Z")

</div>

I'm afraid I've lost track of everything.

- Are the categories fixed to the valid categories or do they build up dynamically according to what the plugin maifest files provide?
- The topic preview images has only been discussed, but not yet implemented/specified?
- Is it planned to show the tags of the plugins on the page ?

---

<div class="post-metadata">

**Author:** ![Retr0ve](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/retr0ve/32/12960_2.png) [@Retr0ve](https://discourse.joplinapp.org/u/Retr0ve)\
**Post date:** [27 July 2022 15:46 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/8 "2022-07-27T15:46:38Z")

</div>

Hi,  
thanks for asking!

> [@JackGruber](#):
>
> Are the categories fixed to the valid categories or do they build up dynamically according to what the plugin maifest files provide?

Category fields are fixed to

```auto
const allPossibleCategories = ['appearance', 'developer tools', 'productivity', 'themes', 'integrations', 'viewer', 'search', 'tags', 'editor', 'files', 'personal knowledge management'];

```

And the homepage is generated dynamically based on the plugin categories field inside the manifest which can only contain the categories inside allPossibleCategories.

> [@JackGruber](#):
>
> The topic preview images has only been discussed, but not yet implemented/specified?

Do you mean screenshots or the ones PackElend mentioned above? If it's screenshots, I am working on adding a `screenshot` field to the manifest file. You can see the [PR](https://github.com/laurent22/joplin/pull/6672) in the main codebase. If you are talking about the hover overview on homepage, then yes, it hasn't been implemented yet.

> [@JackGruber](#):
>
> Is it planned to show the tags of the plugins on the page?

There is no plan to show tags on the homepage, but they will be shown on the detail page of each plugin. And it will also be used by the search feature.

---

<div class="post-metadata">

**Author:** ![PackElend](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/packelend/32/488_2.png) [@PackElend](https://discourse.joplinapp.org/u/PackElend)\
**Post date:** [27 July 2022 16:22 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/9 "2022-07-27T16:22:21Z")

</div>

> [@Retr0ve](#):
>
> Category fields are fixed to
> 
> ```auto
> const allPossibleCategories = ['appearance', 'developer tools', 'productivity', 'themes', 'integrations', 'viewer', 'search', 'tags', 'editor', 'files', 'personal knowledge management'];
> 
> ```
> 
> And the homepage is generated dynamically based on the plugin categories field inside the manifest which can only contain the categories inside allPossibleCategories.

just thinking out loud, could we switch to GitHub-label approach.

As a first step, we could simply store a JSON on GH which contains this array, to avoid code changes if categories are changed.

---

<div class="post-metadata">

**Author:** ![PackElend](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/packelend/32/488_2.png) [@PackElend](https://discourse.joplinapp.org/u/PackElend)\
**Post date:** [27 July 2022 16:23 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/10 "2022-07-27T16:23:47Z")

</div>

> [@Retr0ve](#):
>
> > [@JackGruber](#):
> >
> > Is it planned to show the tags of the plugins on the page?
> 
> There is no plan to show tags on the homepage, but they will be shown on the detail page of each plugin. And it will also be used by the search feature.

how does the user know, that tags are taken into account?  
There should be an options to filter by tags easily / well seen by user.

---

<div class="post-metadata">

**Author:** ![Retr0ve](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/retr0ve/32/12960_2.png) [@Retr0ve](https://discourse.joplinapp.org/u/Retr0ve)\
**Post date:** [28 July 2022 03:44 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/11 "2022-07-28T03:44:22Z")

</div>

> [@PackElend](#):
>
> As a first step, we could simply store a JSON on GH which contains this array, to avoid code changes if categories are changed.

This is built into the [https://github.com/laurent22/joplin/blob/dev/packages/generator-joplin/generators/app/templates/webpack.config.js](https://github.com/laurent22/joplin/blob/dev/packages/generator-joplin/generators/app/templates/webpack.config.js) in the plugin generator. So I think it might not be up to us to maintain it. But in case of future changes, I could fetch this piece of code and extract the `allPossibleCategories` variable dynamically.

> [@PackElend](#):
>
> how does the user know, that tags are taken into account?  
> There should be an options to filter by tags easily / well seen by user.

Filter by tags is not really a practical idea to me since the tags are not predefined and there can be tons of tags meaning the same thing which can simply create chaos. And also I don't think users really need to know about this. Users don't know what's the tags of a plugin beforehand, so they can not match it on purpose. My thought is that adding this to the search is just to build relevance, it works as keywords, which means users can reach this plugin when they search the tags of the plugin.

---

<div class="post-metadata">

**Author:** ![PackElend](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/packelend/32/488_2.png) [@PackElend](https://discourse.joplinapp.org/u/PackElend)\
**Post date:** [29 July 2022 15:15 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/12 "2022-07-29T15:15:17Z")

</div>

> [@Retr0ve](#):
>
> Filter by tags is not really a practical idea to me since the tags are not predefined and there can be tons of tags meaning the same thing which can simply create chaos.

This depends on how you manage them, it applies for the tags used here in the forum as well.  
There could be managed and unmanaged tags, I don't know yet.

From a user perspective point of view, I would like to know how the search function is working and how can I influence it at glance.  
Wondering why certain things appear although I may have not asked for them, is not an ideal UX :).

> [@Retr0ve](#):
>
> So I think it might not be up to us to maintain it. But in case of future changes, I could fetch this piece of code and extract the `allPossibleCategories` variable dynamically.

I'll discuss it with the mentors

---

<div class="post-metadata">

**Author:** ![Retr0ve](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/retr0ve/32/12960_2.png) [@Retr0ve](https://discourse.joplinapp.org/u/Retr0ve)\
**Post date:** [30 July 2022 10:51 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/13 "2022-07-30T10:51:41Z")

</div>

You are right, but the difference between the tags in forum and the keywords in manifest is that, in forum, a regular user cannot add new tags but in manifest everyone can describe their plugin with their own keywords. It made managing tags very difficult since these fields are maintained by plugin developers.  
I've thought about filtering and sorting plugins by tags and categories, but under the UI post, laurent suggests that we don't need a complex 'advanced search' and they also suggest removing the category filter next to the search bar, so I think laurent probably doesn't want this? And also, the field in manifest is named `keywords` instead of `tags`, so it might be less strange for it to directly play a role in the search. Anyway, we can continue this discussion under the UI post. If most users think filters for categories and keywords are necessary then I'm happy to bring these back.

---

<div class="post-metadata">

**Author:** ![PackElend](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/packelend/32/488_2.png) [@PackElend](https://discourse.joplinapp.org/u/PackElend)\
**Post date:** [30 July 2022 11:32 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/14 "2022-07-30T11:32:29Z")

</div>

> [@Retr0ve](#):
>
> in forum, a regular user cannot add new tags

it depends on how you configure it, there are discourse forums where you can add tags on your own

> [@Retr0ve](#):
>
> It made managing tags very difficult since these fields are maintained by plugin developers.

that is something we have to discuss in the community (in the long term).

> [@Retr0ve](#):
>
> Anyway, we can continue this discussion under the UI post.

agreed

---

<div class="post-metadata">

**Author:** ![PackElend](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/packelend/32/488_2.png) [@PackElend](https://discourse.joplinapp.org/u/PackElend)\
**Post date:** [11 August 2022 14:20 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/15 "2022-08-11T14:20:35Z")

</div>

> [@PackElend](#):
>
> > [@Retr0ve](#):
> >
> > So I think it might not be up to us to maintain it. But in case of future changes, I could fetch this piece of code and extract the `allPossibleCategories` variable dynamically.
> 
> I'll discuss it with the mentors

it is discussed.  
You can put a file in `https://github.com/laurent22/joplin/tree/dev/packages/lib` containing the categories.  
Please create a separate PR which does this. It shall include the modification of the plug-in template as well.

---

<div class="post-metadata">

**Author:** ![Retr0ve](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/retr0ve/32/12960_2.png) [@Retr0ve](https://discourse.joplinapp.org/u/Retr0ve)\
**Post date:** [11 August 2022 14:40 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/16 "2022-08-11T14:40:57Z")

</div>

Do you mean putting a JSON file containing categories under `https://github.com/laurent22/joplin/tree/dev/packages/lib` and we include this JSON in plugin manifest templates?

---

<div class="post-metadata">

**Author:** ![PackElend](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/packelend/32/488_2.png) [@PackElend](https://discourse.joplinapp.org/u/PackElend)\
**Post date:** [11 August 2022 15:10 UTC](https://discourse.joplinapp.org/t/coding-phase-week-6-report/26604/17 "2022-08-11T15:10:39Z")

</div>

yes to both, we want to place is separately to maintain it more easily
