Backlog #1

Open
opened 2025-07-08 19:11:13 +02:00 by eloi · 0 comments
Owner

Fonctionnalités principale

Sisyphe est une application web de saisie de temps de travail.
Elle permet à des utilisateurs authentifiés d'entrer le nombre d'heures travaillées chaque jour pour différentes catégories.
Les utilisateurs peuvent indiquer leur temps de travail pour n'importe quelle date, passée ou future.
Les utilisateurs peuvent créer, éditer et supprimer des catégories.
Les catégories sont partagées entre tous les utilisateurs.
L'application peut fournir des rapports sur les temps travaillés.
Les rapports indiquent le détail des temps de travail par catégorie pour chaque utilisateur pour une période sélectionnée.
Les rapports incluent les totaux des temps de travail par utilisateurs et par catégorie pour la période sélectionnée.

Détails techniques

Framework front

On peut utiliser n'importe quel framework, tels que fomantic-ui, tailwind, bulma, foundation, bootstrap ou picocss.

Base de données

Utiliser une base de données pour stocker les données des utilisateurs.
flask-sqlalchemy et flask-alembic sont de bons candidats.
On pourra utiliser une base de données .sqlite pour l'environnement de développement et une base de données en mémoire pour les tests unitaires.

Authentification

Ne pas gérer d'authentification directement via l'application, mais permettre à des utilisateurs de s'authentifier via OpenID Connect en utilisant la bibliothèque authlib.
On pourra s'inspirer des clients de l'environnement de développement de Canaille pour avoir un exemple succinct d'utilisation d'authlib dans une application Flask.
On pourra utiliser Canaille comme serveur d'identité dans l'environnement de développement (attention à installer les bons extras comme oidc, front, sqlite et server). Canaille pourra être lancé en parallèle de Sisyphe grâce à des outils tels que Honcho.
On pourra utiliser pytest-iam pour tester la connexion OIDC dans les tests unitaires.

Bonus

Importer les données de timewarrior

Fournir une fonctionnalité qui permet d'importer les données produites par timewarrior export, dans le style de:

[
{"id":25,"start":"20250704T132903Z","end":"20250704T132906Z","tags":["comcom"]},
{"id":24,"start":"20250707T075638Z","end":"20250707T075750Z","tags":["equipe"]},
...
{"id":2,"start":"20250708T162000Z","end":"20250708T163535Z","tags":["equipe"]},
{"id":1,"start":"20250708T163535Z","tags":["equipe"]}
]
# Fonctionnalités principale Sisyphe est une application web de saisie de temps de travail. Elle permet à des utilisateurs authentifiés d'entrer le nombre d'heures travaillées chaque jour pour différentes catégories. Les utilisateurs peuvent indiquer leur temps de travail pour n'importe quelle date, passée ou future. Les utilisateurs peuvent créer, éditer et supprimer des catégories. Les catégories sont partagées entre tous les utilisateurs. L'application peut fournir des rapports sur les temps travaillés. Les rapports indiquent le détail des temps de travail par catégorie pour chaque utilisateur pour une période sélectionnée. Les rapports incluent les totaux des temps de travail par utilisateurs et par catégorie pour la période sélectionnée. # Détails techniques ## Framework front On peut utiliser n'importe quel framework, tels que [fomantic-ui](https://fomantic-ui.com/), [tailwind](https://tailwindcss.com/), [bulma](https://bulma.io/), [foundation](https://get.foundation/), [bootstrap](https://getbootstrap.com/) ou [picocss](https://picocss.com/). ## Base de données Utiliser une base de données pour stocker les données des utilisateurs. [flask-sqlalchemy](https://flask-sqlalchemy.readthedocs.io/en/stable/quickstart/) et [flask-alembic](https://flask-alembic.readthedocs.io/en/latest/) sont de bons candidats. On pourra utiliser une base de données .sqlite pour l'environnement de développement et une [base de données en mémoire](https://docs.sqlalchemy.org/en/20/tutorial/engine.html) pour les tests unitaires. ## Authentification Ne pas gérer d'authentification directement via l'application, mais permettre à des utilisateurs de s'authentifier via OpenID Connect en utilisant la bibliothèque [authlib](https://docs.authlib.org). On pourra s'inspirer des [clients de l'environnement de développement de Canaille](https://gitlab.com/yaal/canaille/-/blob/main/dev/client/__init__.py) pour avoir un exemple succinct d'utilisation d'authlib dans une application Flask. On pourra utiliser [Canaille](https://canaille.readthedocs.io) comme serveur d'identité dans l'environnement de développement (attention à installer les bons extras comme oidc, front, sqlite et server). Canaille pourra être lancé en parallèle de Sisyphe grâce à des outils tels que [Honcho](https://honcho.readthedocs.io). On pourra utiliser [pytest-iam](https://pytest-iam.readthedocs.io) pour tester la connexion OIDC dans les tests unitaires. # Bonus ## Importer les données de timewarrior Fournir une fonctionnalité qui permet d'importer les données produites par [timewarrior export](https://timewarrior.net/reference/timew-export.1/), dans le style de: ```json [ {"id":25,"start":"20250704T132903Z","end":"20250704T132906Z","tags":["comcom"]}, {"id":24,"start":"20250707T075638Z","end":"20250707T075750Z","tags":["equipe"]}, ... {"id":2,"start":"20250708T162000Z","end":"20250708T163535Z","tags":["equipe"]}, {"id":1,"start":"20250708T163535Z","tags":["equipe"]} ] ```
eloi changed title from Authentification to Backlog 2025-07-09 08:11:16 +02:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: yaal/sisyphe#1
No description provided.