MyGo 云音乐
Go와 MyGo로 만든 서드파티 네이버 클라우드 뮤직 데스크톱 클라이언트
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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.