# ĞMarché : nouvelle interface web

**URL:** https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827
**Category:** Tools
**Tags:** ğmarché
**Created:** [8 December 2020 16:31 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827 "2020-12-08T16:31:49Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![tuxmain](https://forum.duniter.org/user_avatar/forum.duniter.org/tuxmain/32/6423_2.png) [@tuxmain](https://forum.duniter.org/u/tuxmain)
#### Post date: [8 December 2020 16:31 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/1 "2020-12-08T16:31:49Z")

</div>

Je vous présente un reboot du site des ğmarchés !

[l’instance de test ici](http://gmarche.txmn.tk) (le mdp admin est _toto_)

L’objectif est pour l’instant uniquement de déposer des annonces de ce qu’on va proposer.

Je prévois de gérer plusieurs groupes locaux par serveur, et plusieurs marchés par groupe local. Toujours en gardant l’installation, l’administration, la modération et l’utilisation les plus simples possibles.

Les détails techniques&nbsp;: c’est du pur Rust, avec warp pour le serveur web et la syntaxe [handlebars](https://handlebarsjs.com/) pour la génération des pages. Les fichiers statiques et les pages sont installées dans le dossier de config, l’admin d’une instance peut donc les adapter à son goût.

---

<div class="post-metadata">

### Author: ![matograine](https://forum.duniter.org/letter_avatar/matograine/32/5_5575768a8748004e209b776fc1b2916d.png) [@matograine](https://forum.duniter.org/u/matograine)
#### Post date: [8 December 2020 18:07 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/2 "2020-12-08T18:07:25Z")

</div>

Mâgnifique !

Est-il déjà possible de créer plusieurs marchés depuis cette instance de test ?

---

<div class="post-metadata">

### Author: ![tuxmain](https://forum.duniter.org/user_avatar/forum.duniter.org/tuxmain/32/6423_2.png) [@tuxmain](https://forum.duniter.org/u/tuxmain)
#### Post date: [8 December 2020 18:15 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/3 "2020-12-08T18:15:40Z")

</div>

Pas encore… ça va demander de revoir l’organisation de la bdd.

---

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [8 December 2020 23:25 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/4 "2020-12-08T23:25:46Z")

</div>

C’était pas @nox qui avait commencé le projet en php ?

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [9 December 2020 00:37 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/5 "2020-12-09T00:37:11Z")

</div>

> [@tuxmain](#):
>
> Les détails techniques : c’est du pur Rust, avec warp pour le serveur web

Du coup je viens de zieuter ton code par curiosité et je vois que tu fais des appels bloquants en contexte async 😆

Il ne faut pas faire d’appels bloquants en contexte async, c’est la base de la programmation asynchrone, et c’est bien indiqué dans la doc de `tokio` :

[tokio - Rust](https://docs.rs/tokio/0.3.5/tokio/index.html#cpu-bound-tasks-and-blocking-code)

Tu utilises notamment le mutex `RwLock` de la std, or c’est une implémentation bloquante (le thread va bloquer tant qu’il n’obtient pas le lock). En contexte asynchrone il faut utiliser une implémentation asynchrone. Je te conseille [**async\_rwlock**](https://crates.io/crates/async_rwlock) (une lib à laquelle j’ai d’ailleurs contribué 😊).

Je t’ai ouvert quelques tickets du coup 😛

---

<div class="post-metadata">

### Author: ![nox](https://forum.duniter.org/user_avatar/forum.duniter.org/nox/32/3857_2.png) [@nox](https://forum.duniter.org/u/nox)
#### Post date: [9 December 2020 11:06 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/6 "2020-12-09T11:06:23Z")

</div>

oui effectivement @vit  
Mais j’étais parti sur une structure trop compliquée (à mon sens) et puis j’ai jamais vraiment codé  
régulièrement donc je pense que c’est mieux comme ça pour la pérennité du projet.  
D’ailleurs là, je ne code plus depuis plusieurs mois preuve que finalement je suis passé à autre chose.  
Je souhaite bon vent à ce projet.

---

<div class="post-metadata">

### Author: ![poka](https://forum.duniter.org/user_avatar/forum.duniter.org/poka/32/6827_2.png) [@poka](https://forum.duniter.org/u/poka)
#### Post date: [9 December 2020 21:55 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/7 "2020-12-09T21:55:05Z")

</div>

Je trouve ça chouette que tuxmain soit repartie sur un truc beaucoup plus simple et léger !

Mais je trouvais aussi super ce que tu avais commencé, surtout les pages de gmarche en elles mêmes, elles claques: [https://gmarche.monnaie-libre.fr/france/ile-de-france/paris/produits](https://gmarche.monnaie-libre.fr/france/ile-de-france/paris/produits)

Ce serait cool de retrouver un peut ce genre d’UI avec la version rust je trouve.

Edit:  
J’aimais mieux encore la V1 pour le coup: [https://gmarche.monnaie-libre.fr/v1/demo](https://gmarche.monnaie-libre.fr/v1/demo)

Pas besoin de compte comme la version rust. Il choppe la clé publique publique du pseudo si il est membre et renvoi vers la gateway de paiement cesium (la même avec des g1liens serait tiptop).

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [9 December 2020 22:09 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/8 "2020-12-09T22:09:53Z")

</div>

> [@poka](#):
>
> Ce serait cool de retrouver un peut ce genre d’UI avec la version rust je trouve.

C’est possible de faire l’UI qu’on veut, il suffit de modifier les templates html dans le dossier [**templates**](https://git.p2p.legal/tuxmain/gmarche-rs/src/branch/master/templates) et le css dans le dossier [**static**](https://git.p2p.legal/tuxmain/gmarche-rs/src/branch/master/static) 😉

---

<div class="post-metadata">

### Author: ![poka](https://forum.duniter.org/user_avatar/forum.duniter.org/poka/32/6827_2.png) [@poka](https://forum.duniter.org/u/poka)
#### Post date: [9 December 2020 22:10 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/9 "2020-12-09T22:10:41Z")

</div>

Je sais, c’était plus un appel a qui le veux 😉

---

<div class="post-metadata">

### Author: ![tuxmain](https://forum.duniter.org/user_avatar/forum.duniter.org/tuxmain/32/6423_2.png) [@tuxmain](https://forum.duniter.org/u/tuxmain)
#### Post date: [9 December 2020 22:24 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/10 "2020-12-09T22:24:37Z")

</div>

On pourrait intégrer plusieurs designs par défaut, à changer dans la config. Je vais d’abord terminer celui-ci, mais vous pouvez en proposer. Je veux juste que ce soit léger, accessible, responsive, sans framework lourd, utilisable sans JS (mais JS possible si besoin), sans requêtes extérieures.

Tous les fichiers web (pages, ressources…) sont inclus dans l’exécutable. Ils sont copiés dans le dossier de config s’ils n’existent pas déjà, et ces fichiers sont chargés au démarrage.

---

<div class="post-metadata">

### Author: ![tuxmain](https://forum.duniter.org/user_avatar/forum.duniter.org/tuxmain/32/6423_2.png) [@tuxmain](https://forum.duniter.org/u/tuxmain)
#### Post date: [17 December 2020 18:52 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/11 "2020-12-17T18:52:39Z")

</div>

Je viens de remplacer warp par [tide](https://crates.io/crates/tide), c’est beaucoup plus simple et flexible à coder. Le seul inconvénient est que la gestion du cache HTTP n’est pas encore implémentée pour les fichiers statiques.

@Attilax a lancé deux instances, [une de test](https://g1market.axiom-team.fr/demo) et [une pour Paris](https://g1market.axiom-team.fr/paris) qui devrait servir bientôt en vrai !

---

<div class="post-metadata">

### Author: ![matograine](https://forum.duniter.org/letter_avatar/matograine/32/5_5575768a8748004e209b776fc1b2916d.png) [@matograine](https://forum.duniter.org/u/matograine)
#### Post date: [17 December 2020 19:19 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/12 "2020-12-17T19:19:35Z")

</div>

Pour info, quand on publie sur l’instance de test, l’annonce est bien publiée, MAIS on est redirigé vers l’instance de Paris (du coup on croit que l’annonce n’est pas publiée).

Du coup, j’ai tout cassé le bô tableau sur l’instance de Paris en croyant que c’était du test. J’ai supprimé mes annonces depuis, mais encore heureux, j’avais vaguement retrnu les mots de passe.

l’instance de Paris est sur ce deux chemins :

- [https://g1market.axiom-team.fr/](https://g1market.axiom-team.fr/) \< c’est sur celui-ci qu’on est redirigé
- [https://g1market.axiom-team.fr/paris](https://g1market.axiom-team.fr/paris)

---

<div class="post-metadata">

### Author: ![poka](https://forum.duniter.org/user_avatar/forum.duniter.org/poka/32/6827_2.png) [@poka](https://forum.duniter.org/u/poka)
#### Post date: [17 December 2020 19:40 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/13 "2020-12-17T19:40:25Z")

</div>

En effet ya un bug dans sa conf nginx, je vais voir ça avec lui.

Edit: En fait @tuxmain c’est le submit gmarche qui semble renvoyer sur /

---

<div class="post-metadata">

### Author: ![tuxmain](https://forum.duniter.org/user_avatar/forum.duniter.org/tuxmain/32/6423_2.png) [@tuxmain](https://forum.duniter.org/u/tuxmain)
#### Post date: [17 December 2020 21:02 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/14 "2020-12-17T21:02:56Z")

</div>

Je viens de tester, les redirections sont bonnes dans le code, c’est dans la config que son `root_url` est mal défini.

Pour qu’une instance soit accessible à l’url `/paris/`, il faut que dans la config il y ait `"root_url": "/paris/"`, et il n’y a pas besoin de toucher à la config nginx (à part si on veut rediriger `/`).

Edit: ça peut aussi être parce que les templates n’ont pas été mises à jour. Je vais séparer les templates du contenu qui est plus à même d’être personnalisé (texte d’accueil par exemple), pour éviter qu’on doive supprimer le contenu personnalisé à chaque màj.

---

<div class="post-metadata">

### Author: ![Attilax](https://forum.duniter.org/user_avatar/forum.duniter.org/attilax/32/4237_2.png) [@Attilax](https://forum.duniter.org/u/Attilax)
#### Post date: [21 December 2020 10:20 UTC](https://forum.duniter.org/t/gmarche-nouvelle-interface-web/7827/15 "2020-12-21T10:20:39Z")

</div>

Désolé j’ai tout pété en voulant mettre à jour sur le git. Impossible de récupérer gmarché sur mon instance pour l’instant. Je ne sais pas pourquoi, mais ça marche plus.
