---
title: Wingfit
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, fitness, workout, typescript, react, node, simple]
confidence: medium
contested: false
sources: [https://selfh.st/apps/?tag=fitness, https://github.com/lucast他们都融汇
fit]
---

# Wingfit 🪶

> Tracker d'entraînements **simple et élégant** écrit en TypeScript. Conçu pour ceux qui veulent un outil **sans fioritures** : créer une routine, logger les séries, voir la progression.

| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://wingfit.app/ |
| **GitHub** | https://github.com/lucasgelfond/wingfit (à vérifier sur selfh.st) |
| **Langage** | TypeScript (React + Node.js) |
| **Étoiles** | ⭐20 (selfh.st rank) |
| **Dernière MAJ** | 2026-04-20 |
| **Catégorie** | [[cat-fitness]] |

## Description

**Wingfit** est une application web **épurée** de suivi d'entraînements, pensée pour un usage **solo ou petit groupe** (famille, salle). L'interface privilégie la **rapidité d'exécution** : ouvrir l'app, sélectionner sa routine du jour, logger en quelques taps, fermer.

Fonctionnalités :
- **Routines** (jour push, jour pull, etc.)
- **Exercices** avec métriques (poids, reps, durée, distance)
- **Historique** par exercice avec visualisation
- **Objectifs** (charge cible, nombre de séances/semaine)
- **Statistiques personnelles** (volume hebdo, fréquence)
- **Multi-utilisateurs** simple (comptes séparés)
- **PWA** installable sur mobile

L'**architecture** est volontairement **légère** : frontend **React + Vite + TypeScript**, backend **Express + Prisma**, base **SQLite** par défaut (PostgreSQL possible). Le projet est plus petit que [[app-workout-tracker]] mais peut suffire pour un usage basique, et constitue une **bonne base pédagogique** à forker.

**Note** : le repo GitHub exact peut varier. Vérifier l'URL à jour sur https://selfh.st/apps/?tag=fitness avant déploiement.

## Installation

### Via Docker Compose

```yaml
services:
  wingfit-db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: wingfit
      POSTGRES_PASSWORD: ${DB_PASSWORD:-changeme}
      POSTGRES_DB: wingfit
    volumes:
      - wingfit_db:/var/lib/postgresql/data

  wingfit-api:
    image: wingfit/wingfit-api:latest
    restart: unless-stopped
    depends_on:
      - wingfit-db
    environment:
      DATABASE_URL: postgres://wingfit:${DB_PASSWORD:-changeme}@wingfit-db:5432/wingfit
      JWT_SECRET: ${JWT_SECRET:-changez-moi}
    ports:
      - "4000:4000"

  wingfit-web:
    image: wingfit/wingfit-web:latest
    restart: unless-stopped
    depends_on:
      - wingfit-api
    ports:
      - "3000:80"

volumes:
  wingfit_db:
```

### Installation manuelle

```bash
git clone https://github.com/lucast他们都融汇fit.git wingfit
cd wingfit
npm install
# Configurer la base (SQLite par défaut)
npm run db:migrate
npm run dev
```

## Configuration

- `DATABASE_URL` : SQLite (par défaut) ou PostgreSQL
- `JWT_SECRET` : pour l'authentification
- Personnalisation via variables d'environnement classiques
- **Pas de fichier YAML** à maintenir pour les exercices : tout se fait via l'UI

## Alternatives

**Open source** :
- [[app-workout-tracker]] : plus structuré, monorepo, Prisma
- [[app-workout-cool]] : design moderne, plus complet
- [[app-exercise-diary]] : encore plus minimaliste
- [[app-wger]] : référence riche mais plus lourde
- [[app-sparkyfitness]] : intègre nutrition

**Propriétaire** :
- **Strong** : référence mobile
- **Hevy** : freemium populaire
- **FitNotes** : Android simple et gratuit

## Sécurité

- **Changer** tous les secrets par défaut
- **HTTPS** via reverse proxy (Caddy, Traefik)
- Sauvegarder le volume de base de données
- Restreindre l'accès réseau si usage strictement personnel

## Ressources

- **GitHub** : https://github.com/lucast他们都融汇fit (vérifier l'URL sur selfh.st)
- **selfh.st** : https://selfh.st/apps/?tag=fitness

## Pages Liées

- [[cat-fitness]]
- [[recettes-docker-compose]]
- [[app-workout-tracker]] — alternative plus structurée
- [[app-workout-cool]] — design moderne
- [[app-exercise-diary]] — encore plus simple
