ĞMarché : nouvelle interface web

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

l’instance de test ici (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 : c’est du pur Rust, avec warp pour le serveur web et la syntaxe handlebars 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.

9 J'aimes

Mâgnifique !

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

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

1 J'aime

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

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

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 :

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 (une lib à laquelle j’ai d’ailleurs contribué :blush:).

Je t’ai ouvert quelques tickets du coup :stuck_out_tongue:

1 J'aime

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.

1 J'aime

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

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

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).

1 J'aime

C’est possible de faire l’UI qu’on veut, il suffit de modifier les templates html dans le dossier templates et le css dans le dossier static :wink:

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

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.

4 J'aimes

Je viens de remplacer warp par 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 et une pour Paris qui devrait servir bientôt en vrai !

3 J'aimes

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 :

1 J'aime

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 /

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.

1 J'aime

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.