MyGo 云音乐
用 Go 与 MyGo 写成的第三方网易云音乐桌面客户端。原生界面,没有 WebView;边下边播,无损与 Hi-Res,逐字歌词与「律动」,刘海播放器。
Translation pending
Lisez en ligne des ouvrages d'auteurs africains et francophones : extrait gratuit, paiement par carte ou Mobile Money, liseuse moderne.
Translation pending
MediaTypeScript · PLpgSQLGitHub @cmkouakouOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Kalami est une plateforme web installable (PWA) de lecture en ligne. Des auteurs y publient des ouvrages classés par catégorie ; les lecteurs découvrent gratuitement le sommaire et un extrait, paient par carte bancaire ou Mobile Money, puis lisent dans une liseuse moderne protégée. Un assistant d'analyse stratégique (Kalami Stratégie) s'y rattachera ensuite.
/strategie) : assistant d'analyse stratégique en 9 étapes, mêmes
comptes, parcours et crédits propres — voir docs/SPRINTS-strategie.mdkalami/
├── docs/ → cahiers des charges, architecture, sprints
├── public/brand/ → logos Kalami (normal, inversé, monogramme)
├── supabase/
│ ├── config.toml → configuration de la CLI Supabase
│ ├── migrations/ → schéma SQL + politiques RLS versionnés
│ └── tests/ → tests RLS
├── src/
│ ├── app/ → pages et routes (App Router) ; globals.css = jetons
│ ├── components/ui/ → styles partagés (boutons, pastilles, cartes) et icônes
│ ├── i18n/ → textes de l'interface (fr ; en prévu en v2)
│ ├── lib/ → configuration, clients Supabase, logique métier
│ │ └── strategy/ → assistant stratégie : étapes, profil, lectures, actions
│ └── proxy.ts → traitement avant requête (redirections 301, session)
├── tests/unit/ → tests unitaires
├── tests/integration/ → tests RLS sur la base de développement
├── .env.example → variables d'environnement à définir
├── CHANGELOG.md PROJECT-TRACKER.md
npm install.env.example en .env.local et renseigner les valeurs (Supabase → Project Settings → API Keys).npx supabase link --project-ref <ref> puis npm run db:push.npm run dev puis ouvrir http://localhost:3000| Commande | Rôle |
|---|---|
npm run dev | Serveur de développement |
npm run lint / npm run typecheck | Qualité du code |
npm test | Tests unitaires |
npm run build | Build de production |
npm run db:new <nom> | Nouvelle migration SQL |
cmkouakou/Kalami ; chaque push sur main déploie en production..env.example (Preview et Production).kalami-livres.com ; domaines secondaires listés dans REDIRECT_DOMAINS.SUPABASE_SECRET_KEY contourne la RLS : uniquement côté serveur (src/lib/supabase/admin.ts).middleware.ts s'appelle désormais proxy.ts./api/livres/{id}/chapitres/{n} (clé serveur) :
la table chapters est illisible par les clients ; le seau manuscripts est privé.globals.css, thèmes Papier, Sépia, Nuit) ;
contraste AA 4,5:1 vérifié par tests/unit/contrast.test.ts./livres/{slug}/lire) décourage la copie et l'impression et affiche un
filigrane : ce sont des freins, pas une protection absolue (le texte est affiché)./auteur) : inscription libre après acceptation du contrat en vigueur ;
chaque livre (et chaque nouvelle version) passe par la validation de l'administration
(/admin/soumissions). Tant qu'aucun contrat n'est publié (/admin/contrat),
l'inscription est fermée. Les droits sont appliqués par la base (RLS + déclencheurs)./apercu/{id}) : version en attente lisible par l'auteur et l'administration
seulement, sans enregistrement de position ni d'annotations.src/lib/pdf/), gardé 24 h dans le
seau privé pdf-exports puis supprimé (tâche /api/cron/pdf, CRON_SECRET requis dans
Vercel). 3 téléchargements par droit. En local, définir CHROME_EXECUTABLE_PATH
(Chrome installé) dans .env.local./admin/textes-legaux (table
legal_documents) ; les textes livrés sont provisoires, à faire relire avant la mise
en production. Bandeau des témoins : choix consigné dans consent_records./api/cron/comptes
(même CRON_SECRET). Elle emporte les études dont l'utilisateur est propriétaire,
même partagées (avertissement affiché avant la confirmation).Voir CHANGELOG.md.
Claude Marcel
/api/paiement/checkout crée la commande au prix de la
base (create_book_order) puis une session Stripe Checkout ; seul le webhook signé
/api/stripe/webhook livre l'achat (stripe_process_event : montant contrôlé, événement
traité une fois). Le compte Stripe est partagé : seules les sessions metadata.app=kalami
sont traitées. Variables STRIPE_* : voir .env.example. Historique : /compte/achats.item: study_offer | coach_pack
(create_strategy_order : prix de strategy_offers ou du forfait, remise enseignant).
Remboursement depuis /admin/commandes seulement : API Stripe (clé d'idempotence), puis
admin_refund_order retire les droits. Un remboursement fait dans Stripe ne les retire pas./admin/codes-promo, vérifiés par la base
(promo_check dans les fonctions de commande, aperçu /api/paiement/promo). Une fois par
compte, compté au paiement. Le même écran porte l'interrupteur Stripe Tax (éteint par
défaut ; prix taxes comprises une fois allumé)./compte/achats/[commande] ; l'admin valide ou refuse dans
/admin/commandes (filtre « À valider »). Numéros marchands : /admin/mobile-money.
Les commandes non déclarées expirent après 24 h (/api/cron/commandes, CRON_SECRET).ledger_entries, brut = frais + taxes + commission + part auteur). Part de l'auteur 70 %
du net, disponible après 30 jours ; réglages et part propre par auteur dans
/admin/revenus, revenus de l'auteur dans /auteur/revenus. Frais Mobile Money par
opérateur dans /admin/mobile-money./auteur/revenus ; l'admin approuve, puis marque payé (référence + reçu facultatif) ou
refuse dans /admin/versements. Journal d'audit : /admin/journal. Reçus dans le seau
privé payout-proofs.public/sw.js) actif en production seulement. Liste blanche dans
public/sw-routes.js : seuls les fichiers statiques, les couvertures et les pages publiques
du catalogue sont gardés sur l'appareil ; liseuse, études, comptes et API jamais. Changer
VERSION dans sw.js vide les anciens caches. Icônes : node scripts/generer-icones.mjs.