diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d2b2e42 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +firebase-debug.log diff --git a/app/.firebase/hosting..cache b/app/.firebase/hosting..cache new file mode 100644 index 0000000..af3388d --- /dev/null +++ b/app/.firebase/hosting..cache @@ -0,0 +1,16 @@ +qr-site-eoc.png,1784377354061,22578093a3b844ee571d1a3fd9f5645d998dcb7bab91091cda4670a128c76845 +qr-eoc.png,1784377328514,0655c403ba8c604c60c152a2992e575854a91c6772a00f65ea9f9cb9350c1879 +merci.html,1784377329575,0b7753f38859e17969ac137552c1d80f745df87d12c704fe82cb2a8666f4320b +manifest.json,1784368525512,d2a9cb252dfa131dde8f9ab6d11e13c96ce8d636a19dc9ecf6600ac9b9658599 +logo-eoc.png,1784368525513,b0f229f44dd962f01902f9da5859c5f29bdaaa30871a4b43b77e19409c75c0a4 +icon-maskable-512.png,1784373310650,3087d63699bb5c6ebffbb5dace8fbaa49baa00f832922abefff84b28245e6de3 +icon-512.png,1784373302174,9c0b118772bb7855cc3a1351f60bc690078d6ba609aef374ed4710f5e7502e48 +icon-192.png,1784368525513,918719d8ffe8e5172b43fbed009a1ba71ec4226d2a74ea4f73e42e9cfdf59648 +confidentialite.html,1784377329265,52793b1736eb1af155e7771fec419f9f6daaf84caf94e1fd0df54bc1121f4125 +apple-touch-icon.png,1784368525513,dca45735bad3a152ba45ac4b41d1599f78402a6bd44f1d397dc6d8f0a7a6dcf6 +abonnement.html,1784368525512,64d5517f343fdc6a66f7ff3a1d8919d29b89fc6b54ee8e97553ff2e89ef8c659 +_tmp-settings.txt,1784377330342,86c185793d974b11ee2a617fde8f05b21724435393f7c98aa36a9dafae2486f4 +_tmp-product.txt,1784377329926,bc0449f5f06d7de0849378f80397ab0fe4e4a17f2f24e87d24f5d4b0ee6cda62 +.well-known/assetlinks.json,1784373302376,307add09a9f4d9cbc6120e76957f1e464cd7482442b4316b0743741c67563f12 +sw.js,1784379540443,26d87778cbe908285c05308ff0ad1ca6375c827401a882bf56678ea9ce5706d6 +index.html,1784379522378,34e80fb8e8338de0970ebd3cd2cb8ef99ce9e8a74d9724574c175b0095fdb6d9 diff --git a/app/.well-known/assetlinks.json b/app/.well-known/assetlinks.json new file mode 100644 index 0000000..337bf43 --- /dev/null +++ b/app/.well-known/assetlinks.json @@ -0,0 +1,8 @@ +[{ + "relation": ["delegate_permission/common.handle_all_urls"], + "target": { + "namespace": "android_app", + "package_name": "ca.echecocube.jeu.twa", + "sha256_cert_fingerprints": ["C2:0E:34:58:F6:9F:E3:16:67:0A:56:18:67:9B:5F:3F:63:38:FF:96:3D:95:20:4A:C8:05:AC:62:B2:30:61:1B"] + } + }] diff --git a/app/DEPLOIEMENT.md b/app/DEPLOIEMENT.md new file mode 100644 index 0000000..abeb995 --- /dev/null +++ b/app/DEPLOIEMENT.md @@ -0,0 +1,19 @@ +# Déployer la nouvelle version d'Échec O Cube + +Ce dossier `app/` contient la version améliorée de l'application +(zoom 50%-160% + cadran de partie), prête à publier sur Firebase Hosting. + +## Modifications apportées (18 juillet 2026) +1. **Zoom** : A− descend maintenant jusqu'à 50 % (avant : minimum 100 %). + À 50-90 %, tout le plateau est visible d'un coup. Choix mémorisé (clé eocTaille2, + migration automatique de l'ancienne préférence). +2. **Cadran numérique EOC** : nouveau bouton « Cadran » dans les contrôles. + Un chrono par joueur (5/10/15 min), suit le tour automatiquement, + toucher un cadran bascule aussi manuellement, alerte rouge sous 30 s. + Optionnel : masqué par défaut, n'impose rien à ceux qui n'en veulent pas. + +## Publier (une des deux façons) +A. Depuis l'outil où l'app a été créée (Firebase Studio / Antigravity) : + remplacer index.html par celui-ci, puis Déployer. +B. En ligne de commande (une fois connecté avec `firebase login`) : + cd app && npx firebase-tools deploy --only hosting --project diff --git a/app/_tmp-product.txt b/app/_tmp-product.txt new file mode 100644 index 0000000..ff22d8f --- /dev/null +++ b/app/_tmp-product.txt @@ -0,0 +1,556 @@ +/* + * ------------------------------------------------------------ + * IMPORTANT: The contents of this file are auto-generated. + * + * This file may be updated by the Shopify admin theme editor + * or related systems. Please exercise caution as any changes + * made to this file may be overwritten. + * ------------------------------------------------------------ + */ +{ + "sections": { + "main": { + "type": "product-information", + "blocks": { + "media-gallery": { + "type": "_product-media-gallery", + "static": true, + "settings": { + "media_presentation": "carousel", + "media_columns": "one", + "image_gap": 0, + "large_first_image": false, + "icons_style": "arrow", + "slideshow_controls_style": "counter", + "slideshow_mobile_controls_style": "counter", + "thumbnail_position": "left", + "thumbnail_width": 57, + "thumbnail_radius": 0, + "aspect_ratio": "adapt", + "constrain_to_viewport": true, + "media_fit": "contain", + "media_radius": 14, + "extend_media": true, + "zoom": true, + "video_loop": false, + "hide_variants": true, + "padding-block-start": 0, + "padding-block-end": 0, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": {} + }, + "product-details": { + "type": "_product-details", + "static": true, + "settings": { + "width": "fill", + "custom_width": 100, + "width_mobile": "fill", + "custom_width_mobile": 100, + "height": "fit", + "details_position": "flex-start", + "gap": 12, + "sticky_details_desktop": true, + "inherit_color_scheme": true, + "color_scheme": "", + "background_media": "none", + "video_position": "cover", + "background_image_position": "cover", + "border": "none", + "border_width": 1, + "border_opacity": 100, + "border_radius": 0, + "padding-block-start": 0, + "padding-block-end": 0, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": { + "text_9WaLn7": { + "type": "text", + "name": "t:names.title", + "settings": { + "text": "

{{ closest.product.title }}

", + "width": "100%", + "max_width": "normal", + "alignment": "center", + "type_preset": "h3", + "font": "var(--font-body--family)", + "font_size": "1rem", + "line_height": "normal", + "letter_spacing": "normal", + "case": "none", + "wrap": "pretty", + "color": "var(--color-foreground)", + "background": false, + "background_color": "#00000026", + "corner_radius": 0, + "padding-block-start": 50, + "padding-block-end": 0, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": {} + }, + "price_a7krng": { + "type": "price", + "settings": { + "show_sale_price_first": true, + "show_installments": true, + "show_tax_info": true, + "type_preset": "h5", + "width": "100%", + "alignment": "center", + "font": "var(--font-body--family)", + "font_size": "1rem", + "line_height": "normal", + "letter_spacing": "normal", + "case": "none", + "color": "var(--color-foreground)", + "padding-block-start": 0, + "padding-block-end": 50, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": {} + }, + "divider_HrJgFt": { + "type": "_divider", + "name": "t:names.divider", + "settings": { + "thickness": 1, + "corner_radius": "square", + "width_percent": 100, + "padding-block-start": 12, + "padding-block-end": 12 + }, + "blocks": {} + }, + "variant_picker_R3rGDr": { + "type": "variant-picker", + "settings": { + "variant_style": "buttons", + "show_swatches": true, + "alignment": "left", + "padding-block-start": 12, + "padding-block-end": 24, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": {} + }, + "buy_buttons_eYQEYi": { + "type": "buy-buttons", + "settings": { + "stacking": false, + "show_pickup_availability": false, + "gift_card_form": false, + "padding-block-start": 0, + "padding-block-end": 24, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": { + "quantity": { + "type": "quantity", + "static": true, + "settings": {}, + "blocks": {} + }, + "add-to-cart": { + "type": "add-to-cart", + "static": true, + "settings": { + "style_class": "button" + }, + "blocks": {} + }, + "accelerated-checkout": { + "type": "accelerated-checkout", + "static": true, + "settings": {}, + "blocks": {} + } + }, + "block_order": [] + }, + "accordion_NKWPiW": { + "type": "accordion", + "name": "t:names.accordion", + "settings": { + "icon": "caret", + "dividers": true, + "type_preset": "h6", + "inherit_color_scheme": false, + "color_scheme": "scheme-3", + "border": "none", + "border_width": 1, + "border_opacity": 100, + "border_radius": 0, + "padding-block-start": 0, + "padding-block-end": 0, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": { + "accordion_row_NdBezV": { + "type": "_accordion-row", + "settings": { + "heading": "Description", + "open_by_default": true, + "icon": "none", + "width": 20 + }, + "blocks": { + "text_n7A9da": { + "type": "text", + "settings": { + "text": "{{ closest.product.description }}", + "width": "fit-content", + "max_width": "normal", + "alignment": "left", + "type_preset": "custom", + "font": "var(--font-secondary--family)", + "font_size": "1rem", + "line_height": "normal", + "letter_spacing": "normal", + "case": "none", + "wrap": "pretty", + "color": "", + "background": false, + "background_color": "#00000026", + "corner_radius": 0, + "padding-block-start": 12, + "padding-block-end": 0, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": {} + } + }, + "block_order": [ + "text_n7A9da" + ] + } + }, + "block_order": [ + "accordion_row_NdBezV" + ] + } + }, + "block_order": [ + "text_9WaLn7", + "price_a7krng", + "divider_HrJgFt", + "variant_picker_R3rGDr", + "buy_buttons_eYQEYi", + "accordion_NKWPiW" + ] + } + }, + "settings": { + "content_width": "content-full-width", + "desktop_media_position": "right", + "equal_columns": false, + "limit_details_width": true, + "gap": 0, + "enable_sticky_add_to_cart": true, + "color_scheme": "scheme-2", + "padding-block-start": 0, + "padding-block-end": 0 + } + }, + "product_recommendations_qnzPkn": { + "type": "product-recommendations", + "blocks": { + "text_GbxcYC": { + "type": "text", + "name": "t:names.header", + "settings": { + "text": "

Vous aimerez aussi

", + "width": "100%", + "max_width": "normal", + "alignment": "center", + "type_preset": "h4", + "font": "var(--font-primary--family)", + "font_size": "", + "line_height": "normal", + "letter_spacing": "normal", + "case": "none", + "wrap": "pretty", + "color": "", + "background": false, + "background_color": "#00000026", + "corner_radius": 0, + "padding-block-start": 67, + "padding-block-end": 0, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": {} + }, + "static-product-card": { + "type": "_product-card", + "name": "t:names.product_card", + "static": true, + "settings": { + "product_card_gap": 16, + "inherit_color_scheme": true, + "color_scheme": "", + "border": "none", + "border_width": 1, + "border_opacity": 100, + "border_radius": 0, + "padding-block-start": 0, + "padding-block-end": 0, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": { + "product_card_gallery_YYPH6q": { + "type": "_product-card-gallery", + "name": "t:names.product_card_media", + "settings": { + "image_ratio": "portrait", + "border": "none", + "border_width": 1, + "border_opacity": 100, + "border_radius": 0, + "padding-block-start": 0, + "padding-block-end": 0, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": {} + }, + "group_396y6r": { + "type": "_product-card-group", + "settings": { + "content_direction": "row", + "vertical_on_mobile": true, + "horizontal_alignment": "space-between", + "vertical_alignment": "flex-start", + "align_baseline": false, + "horizontal_alignment_flex_direction_column": "flex-start", + "vertical_alignment_flex_direction_column": "center", + "gap": 12, + "width": "fill", + "custom_width": 100, + "width_mobile": "fill", + "custom_width_mobile": 100, + "height": "fit", + "custom_height": 100, + "inherit_color_scheme": true, + "color_scheme": "", + "background_media": "none", + "video_position": "cover", + "background_image_position": "cover", + "border": "none", + "border_width": 1, + "border_opacity": 100, + "border_radius": 0, + "toggle_overlay": false, + "overlay_color": "#00000026", + "overlay_style": "solid", + "gradient_direction": "to top", + "link": "", + "open_in_new_tab": false, + "padding-block-start": 2, + "padding-block-end": 0, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": { + "group_tEHPmM": { + "type": "_product-card-group", + "name": "t:names.group", + "settings": { + "content_direction": "column", + "vertical_on_mobile": true, + "horizontal_alignment": "flex-start", + "vertical_alignment": "center", + "align_baseline": false, + "horizontal_alignment_flex_direction_column": "flex-start", + "vertical_alignment_flex_direction_column": "flex-start", + "gap": 0, + "width": "custom", + "custom_width": 60, + "width_mobile": "fill", + "custom_width_mobile": 100, + "height": "fit", + "custom_height": 100, + "inherit_color_scheme": true, + "color_scheme": "", + "background_media": "none", + "video_position": "cover", + "background_image_position": "cover", + "border": "none", + "border_width": 1, + "border_opacity": 100, + "border_radius": 0, + "toggle_overlay": false, + "overlay_color": "#00000026", + "overlay_style": "solid", + "gradient_direction": "to top", + "link": "", + "open_in_new_tab": false, + "padding-block-start": 0, + "padding-block-end": 0, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": { + "text_CayfE3": { + "type": "text", + "settings": { + "text": "

{{ closest.product.title }}

", + "width": "100%", + "max_width": "normal", + "alignment": "left", + "type_preset": "h5", + "font": "var(--font-primary--family)", + "font_size": "", + "line_height": "normal", + "letter_spacing": "normal", + "case": "none", + "wrap": "pretty", + "color": "", + "background": false, + "background_color": "#00000026", + "corner_radius": 0, + "padding-block-start": 0, + "padding-block-end": 0, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": {} + }, + "price_ahRCgD": { + "type": "price", + "settings": { + "show_sale_price_first": true, + "show_installments": false, + "show_tax_info": false, + "type_preset": "h5", + "width": "100%", + "alignment": "left", + "font": "var(--font-body--family)", + "font_size": "1rem", + "line_height": "normal", + "letter_spacing": "normal", + "case": "none", + "color": "var(--color-foreground)", + "padding-block-start": 0, + "padding-block-end": 0, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": {} + } + }, + "block_order": [ + "text_CayfE3", + "price_ahRCgD" + ] + }, + "group_PihxwT": { + "type": "_product-card-group", + "name": "t:names.group", + "settings": { + "content_direction": "column", + "vertical_on_mobile": true, + "horizontal_alignment": "flex-start", + "vertical_alignment": "center", + "align_baseline": false, + "horizontal_alignment_flex_direction_column": "flex-start", + "vertical_alignment_flex_direction_column": "flex-start", + "gap": 0, + "width": "fill", + "custom_width": 40, + "width_mobile": "fill", + "custom_width_mobile": 100, + "height": "fit", + "custom_height": 100, + "inherit_color_scheme": true, + "color_scheme": "", + "background_media": "none", + "video_position": "cover", + "background_image_position": "cover", + "border": "none", + "border_width": 1, + "border_opacity": 100, + "border_radius": 0, + "toggle_overlay": false, + "overlay_color": "#00000026", + "overlay_style": "solid", + "gradient_direction": "to top", + "link": "", + "open_in_new_tab": false, + "padding-block-start": 0, + "padding-block-end": 0, + "padding-inline-start": 0, + "padding-inline-end": 0 + }, + "blocks": { + "swatches_EdNBpW": { + "type": "swatches", + "settings": { + "product_swatches_alignment": "flex-end", + "product_swatches_alignment_mobile": "flex-start", + "hide_padding": false, + "product_swatches_padding_top": 0, + "product_swatches_padding_bottom": 0, + "product_swatches_padding_left": 0, + "product_swatches_padding_right": 0 + }, + "blocks": {} + } + }, + "block_order": [ + "swatches_EdNBpW" + ] + } + }, + "block_order": [ + "group_tEHPmM", + "group_PihxwT" + ] + } + }, + "block_order": [ + "product_card_gallery_YYPH6q", + "group_396y6r" + ] + } + }, + "block_order": [ + "text_GbxcYC" + ], + "name": "t:names.product_recommendations", + "settings": { + "product": "{{ closest.product }}", + "recommendation_type": "related", + "layout_type": "grid", + "carousel_on_mobile": false, + "max_products": 4, + "columns": 4, + "mobile_columns": "2", + "columns_gap": 16, + "rows_gap": 16, + "icons_style": "arrow", + "icons_shape": "none", + "section_width": "page-width", + "gap": 28, + "color_scheme": "scheme-3", + "padding-block-start": 48, + "padding-block-end": 48 + } + } + }, + "order": [ + "main", + "product_recommendations_qnzPkn" + ] +} diff --git a/app/_tmp-settings.txt b/app/_tmp-settings.txt new file mode 100644 index 0000000..074df0e --- /dev/null +++ b/app/_tmp-settings.txt @@ -0,0 +1,629 @@ +/* + * ------------------------------------------------------------ + * IMPORTANT: The contents of this file are auto-generated. + * + * This file may be updated by the Shopify admin theme editor + * or related systems. Please exercise caution as any changes + * made to this file may be overwritten. + * ------------------------------------------------------------ + */ +{ + "current": { + "logo": "shopify://shop_images/LOGO-_OFFICIEL.jpg", + "logo_inverse": "shopify://shop_images/logo-echec-o-cube.jpg", + "logo_height": 100, + "logo_height_mobile": 100, + "favicon": "shopify://shop_images/LOGO-PETIT-EOC-OFFICIEL-JUIN_605d1477-ebb3-4356-a0ac-ffc7e7ad731e.png", + "type_body_font": "red_hat_text_n4", + "type_subheading_font": "newsreader_n2", + "type_heading_font": "newsreader_n2", + "type_accent_font": "red_hat_text_n4", + "type_size_paragraph": "12", + "type_line_height_paragraph": "body-loose", + "type_font_h1": "heading", + "type_size_h1": "120", + "type_line_height_h1": "display-tight", + "type_font_h2": "heading", + "type_size_h2": "72", + "type_font_h3": "heading", + "type_size_h3": "48", + "type_font_h4": "subheading", + "type_size_h4": "24", + "type_case_h4": "none", + "type_font_h5": "body", + "type_size_h5": "12", + "type_line_height_h5": "display-loose", + "type_case_h5": "uppercase", + "type_font_h6": "body", + "type_size_h6": "12", + "type_line_height_h6": "display-loose", + "type_letter_spacing_h6": "heading-normal", + "type_case_h6": "uppercase", + "page_width": "wide", + "badge_corner_radius": 6, + "badge_text_transform": "uppercase", + "primary_button_border_width": 0, + "button_border_radius_primary": 10, + "type_font_button_primary": "body", + "button_text_case_primary": "default", + "secondary_button_border_width": 1, + "button_border_radius_secondary": 10, + "button_text_case_secondary": "uppercase", + "pills_border_radius": 34, + "cart_type": "drawer", + "cart_price_font": "primary", + "show_add_discount_code": false, + "icon_stroke": "thin", + "input_border_width": 1, + "inputs_border_radius": 10, + "popover_border_radius": 12, + "popover_border": "solid", + "popover_border_width": 0, + "popover_border_opacity": 0, + "currency_code_enabled_product_pages": true, + "currency_code_enabled_product_cards": false, + "product_corner_radius": 14, + "card_corner_radius": 14, + "card_title_case": "uppercase", + "show_variant_image": false, + "variant_swatch_width": 19, + "variant_swatch_height": 18, + "variant_swatch_radius": 6, + "variant_button_radius": 10, + "variant_button_width": "default-width-buttons", + "content_for_index": [], + "blocks": { + "855628211100114053": { + "type": "shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507", + "disabled": false, + "settings": {} + }, + "15683396631634586217": { + "type": "shopify://apps/inbox/blocks/chat/841fc607-4181-4ad1-842d-e24d7f8bad6b", + "disabled": true, + "settings": { + "greeting_message": "", + "button_color": "#c61e14", + "secondary_color": "#ffffff", + "ternary_color": "#6a6a6a", + "button_icon": "hand_wave", + "button_text": "chat_with_us", + "button_horizontal_position": "bottom_right", + "button_vertical_position": "lowest" + } + }, + "8838267387977255474": { + "type": "shopify://apps/jotform-ai-chatbot/blocks/app-embed/8b752cf5-34d6-4e3e-96cf-8a6ef85fb35a", + "disabled": false, + "settings": {} + } + }, + "color_schemes": { + "scheme-1": { + "settings": { + "background": "#d5bc9d52", + "foreground_heading": "#000000", + "foreground": "#000000", + "primary": "#666666", + "primary_hover": "#000000", + "border": "#e6e6e6", + "shadow": "#000000", + "primary_button_background": "#000000", + "primary_button_text": "#ffffff", + "primary_button_border": "#000000", + "primary_button_hover_background": "#383838", + "primary_button_hover_text": "#ffffff", + "primary_button_hover_border": "#383838", + "secondary_button_background": "#efefef", + "secondary_button_text": "#000000", + "secondary_button_border": "#efefef", + "secondary_button_hover_background": "#dedede", + "secondary_button_hover_text": "#000000", + "secondary_button_hover_border": "#dedede", + "input_background": "#ffffff", + "input_text_color": "#000000", + "input_border_color": "#00000021", + "input_hover_background": "#f5f5f5", + "variant_background_color": "#ffffff", + "variant_text_color": "#000000", + "variant_border_color": "#e6e6e6", + "variant_hover_background_color": "#ffffff", + "variant_hover_text_color": "#000000", + "variant_hover_border_color": "#000000", + "selected_variant_background_color": "#000000", + "selected_variant_text_color": "#ffffff", + "selected_variant_border_color": "#000000", + "selected_variant_hover_background_color": "#1a1a1a", + "selected_variant_hover_text_color": "#ffffff", + "selected_variant_hover_border_color": "#1a1a1a" + } + }, + "scheme-2": { + "settings": { + "background": "#d0bd9175", + "foreground_heading": "#000000", + "foreground": "#000000", + "primary": "#000000", + "primary_hover": "#666666", + "border": "#0000001c", + "shadow": "#000000", + "primary_button_background": "#000000", + "primary_button_text": "#ffffff", + "primary_button_border": "#100f0fc4", + "primary_button_hover_background": "#383838", + "primary_button_hover_text": "#ffffff", + "primary_button_hover_border": "#383838", + "secondary_button_background": "rgba(0,0,0,0)", + "secondary_button_text": "#000000", + "secondary_button_border": "#000000", + "secondary_button_hover_background": "rgba(0,0,0,0)", + "secondary_button_hover_text": "#383838", + "secondary_button_hover_border": "#383838", + "input_background": "#ffffff", + "input_text_color": "#000000", + "input_border_color": "#000000", + "input_hover_background": "#f5f5f5eb", + "variant_background_color": "#ffffff", + "variant_text_color": "#000000", + "variant_border_color": "#e6e6e6", + "variant_hover_background_color": "#f5f5f5", + "variant_hover_text_color": "#000000", + "variant_hover_border_color": "#e6e6e6", + "selected_variant_background_color": "#000000", + "selected_variant_text_color": "#ffffff", + "selected_variant_border_color": "#000000", + "selected_variant_hover_background_color": "#1a1a1a", + "selected_variant_hover_text_color": "#ffffff", + "selected_variant_hover_border_color": "#1a1a1a" + } + }, + "scheme-3": { + "settings": { + "background": "#f2f2f2", + "foreground_heading": "#000000", + "foreground": "#000000", + "primary": "#666666", + "primary_hover": "#000000", + "border": "#d0d0d0", + "shadow": "#000000", + "primary_button_background": "#000000", + "primary_button_text": "#ffffff", + "primary_button_border": "#000000", + "primary_button_hover_background": "#383838", + "primary_button_hover_text": "#ffffff", + "primary_button_hover_border": "#383838", + "secondary_button_background": "rgba(0,0,0,0)", + "secondary_button_text": "#000000", + "secondary_button_border": "#000000", + "secondary_button_hover_background": "rgba(0,0,0,0)", + "secondary_button_hover_text": "#000000", + "secondary_button_hover_border": "#000000", + "input_background": "#ffffff", + "input_text_color": "#000000", + "input_border_color": "#000000", + "input_hover_background": "#f5f5f5", + "variant_background_color": "#ffffff", + "variant_text_color": "#000000", + "variant_border_color": "#e6e6e6", + "variant_hover_background_color": "#f5f5f5", + "variant_hover_text_color": "#000000", + "variant_hover_border_color": "#e6e6e6", + "selected_variant_background_color": "#000000", + "selected_variant_text_color": "#ffffff", + "selected_variant_border_color": "#000000", + "selected_variant_hover_background_color": "#1a1a1a", + "selected_variant_hover_text_color": "#ffffff", + "selected_variant_hover_border_color": "#1a1a1a" + } + }, + "scheme-4": { + "settings": { + "background": "#b2834d99", + "foreground_heading": "#ffffff", + "foreground": "#ffffff", + "primary": "#ffffff", + "primary_hover": "#000000", + "border": "#383838", + "shadow": "#000000", + "primary_button_background": "#ffffff", + "primary_button_text": "#383838", + "primary_button_border": "#ffffff", + "primary_button_hover_background": "#e6e6e6", + "primary_button_hover_text": "#000000", + "primary_button_hover_border": "#e6e6e6", + "secondary_button_background": "rgba(0,0,0,0)", + "secondary_button_text": "#ffffff", + "secondary_button_border": "#ffffff", + "secondary_button_hover_background": "rgba(0,0,0,0)", + "secondary_button_hover_text": "#dedede", + "secondary_button_hover_border": "#dedede", + "input_background": "#383838", + "input_text_color": "#ffffff", + "input_border_color": "#ffffff", + "input_hover_background": "#5c5c5c", + "variant_background_color": "#ffffff", + "variant_text_color": "#000000", + "variant_border_color": "#e6e6e6", + "variant_hover_background_color": "#f5f5f5", + "variant_hover_text_color": "#000000", + "variant_hover_border_color": "#e6e6e6", + "selected_variant_background_color": "#000000", + "selected_variant_text_color": "#ffffff", + "selected_variant_border_color": "#000000", + "selected_variant_hover_background_color": "#1a1a1a", + "selected_variant_hover_text_color": "#ffffff", + "selected_variant_hover_border_color": "#1a1a1a" + } + }, + "scheme-5": { + "settings": { + "background": "#E32D2D", + "foreground_heading": "#100f0fc4", + "foreground": "#100f0fc4", + "primary": "#ffffff", + "primary_hover": "#DA2929", + "border": "#666666", + "shadow": "#000000", + "primary_button_background": "#ffffff", + "primary_button_text": "#000000", + "primary_button_border": "#ffffff", + "primary_button_hover_background": "#dedede", + "primary_button_hover_text": "#000000", + "primary_button_hover_border": "#dedede", + "secondary_button_background": "rgba(0,0,0,0)", + "secondary_button_text": "#ffffff", + "secondary_button_border": "#ffffff", + "secondary_button_hover_background": "rgba(0,0,0,0)", + "secondary_button_hover_text": "#1F1B1B", + "secondary_button_hover_border": "#141212", + "input_background": "#000000", + "input_text_color": "#ffffff", + "input_border_color": "#ffffff", + "input_hover_background": "#181818", + "variant_background_color": "#ffffff", + "variant_text_color": "#000000", + "variant_border_color": "#e6e6e6", + "variant_hover_background_color": "#f5f5f5", + "variant_hover_text_color": "#000000", + "variant_hover_border_color": "#e6e6e6", + "selected_variant_background_color": "#000000", + "selected_variant_text_color": "#ffffff", + "selected_variant_border_color": "#000000", + "selected_variant_hover_background_color": "#1a1a1a", + "selected_variant_hover_text_color": "#ffffff", + "selected_variant_hover_border_color": "#1a1a1a" + } + }, + "scheme-6": { + "settings": { + "background": "rgba(0,0,0,0)", + "foreground_heading": "#ffffff", + "foreground": "#edececcf", + "primary": "#ffffff", + "primary_hover": "#de4040", + "border": "rgba(0,0,0,0)", + "shadow": "rgba(0,0,0,0)", + "primary_button_background": "rgba(0,0,0,0)", + "primary_button_text": "#000000", + "primary_button_border": "#ffffff", + "primary_button_hover_background": "#dedede", + "primary_button_hover_text": "#000000", + "primary_button_hover_border": "#dedede", + "secondary_button_background": "rgba(0,0,0,0)", + "secondary_button_text": "#ffffff", + "secondary_button_border": "#ffffff", + "secondary_button_hover_background": "rgba(0,0,0,0)", + "secondary_button_hover_text": "#acacac", + "secondary_button_hover_border": "#acacac", + "input_background": "#ffffff", + "input_text_color": "#000000", + "input_border_color": "#000000", + "input_hover_background": "#f5f5f5", + "variant_background_color": "#ffffff", + "variant_text_color": "#000000", + "variant_border_color": "#e6e6e6", + "variant_hover_background_color": "#f5f5f5", + "variant_hover_text_color": "#000000", + "variant_hover_border_color": "#e6e6e6", + "selected_variant_background_color": "#000000", + "selected_variant_text_color": "#dc6f6f", + "selected_variant_border_color": "#000000", + "selected_variant_hover_background_color": "#1a1a1a", + "selected_variant_hover_text_color": "#ffffff", + "selected_variant_hover_border_color": "#1a1a1a" + } + }, + "scheme-7e8b55d6-382b-4ed4-b4da-3709fe247c81": { + "settings": { + "background": "rgba(0,0,0,0)", + "foreground_heading": "#000000", + "foreground": "#000000", + "primary": "#666666", + "primary_hover": "#d3bfbf", + "border": "#e6e6e6", + "shadow": "#000000", + "primary_button_background": "#000000", + "primary_button_text": "#ffffff", + "primary_button_border": "#000000", + "primary_button_hover_background": "#383838", + "primary_button_hover_text": "#ffffff", + "primary_button_hover_border": "#383838", + "secondary_button_background": "#efefef", + "secondary_button_text": "#000000", + "secondary_button_border": "#efefef", + "secondary_button_hover_background": "#dedede", + "secondary_button_hover_text": "#000000", + "secondary_button_hover_border": "#dedede", + "input_background": "rgba(0,0,0,0)", + "input_text_color": "#000000", + "input_border_color": "#00000021", + "input_hover_background": "#f5f5f5", + "variant_background_color": "#ffffff", + "variant_text_color": "#000000", + "variant_border_color": "#e6e6e6", + "variant_hover_background_color": "#ffffff", + "variant_hover_text_color": "#000000", + "variant_hover_border_color": "#000000", + "selected_variant_background_color": "#000000", + "selected_variant_text_color": "#ffffff", + "selected_variant_border_color": "#000000", + "selected_variant_hover_background_color": "#1a1a1a", + "selected_variant_hover_text_color": "#ffffff", + "selected_variant_hover_border_color": "#1a1a1a" + } + } + } + }, + "presets": { + "Atelier": { + "color_schemes": { + "scheme-1": { + "settings": { + "background": "#ffffff", + "foreground_heading": "#000000", + "foreground": "#000000", + "primary": "#666666", + "primary_hover": "#000000", + "border": "#e6e6e6", + "shadow": "#000000", + "primary_button_background": "#000000", + "primary_button_text": "#ffffff", + "primary_button_border": "#000000", + "primary_button_hover_background": "#383838", + "primary_button_hover_text": "#ffffff", + "primary_button_hover_border": "#383838", + "secondary_button_background": "#efefef", + "secondary_button_text": "#000000", + "secondary_button_border": "#efefef", + "secondary_button_hover_background": "#dedede", + "secondary_button_hover_text": "#000000", + "secondary_button_hover_border": "#dedede", + "input_background": "#ffffff", + "input_text_color": "#000000", + "input_border_color": "#00000021", + "input_hover_background": "#f5f5f5", + "variant_background_color": "#ffffff", + "variant_text_color": "#000000", + "variant_border_color": "#e6e6e6", + "variant_hover_background_color": "#ffffff", + "variant_hover_text_color": "#000000", + "variant_hover_border_color": "#000000", + "selected_variant_background_color": "#000000", + "selected_variant_text_color": "#ffffff", + "selected_variant_border_color": "#000000", + "selected_variant_hover_background_color": "#1a1a1a", + "selected_variant_hover_text_color": "#ffffff", + "selected_variant_hover_border_color": "#1a1a1a", + "logo_height": 36, + "logo_height_mobile": 28 + } + }, + "scheme-2": { + "settings": { + "background": "#ffffff", + "foreground_heading": "#000000", + "foreground": "#000000", + "primary": "#000000", + "primary_hover": "#666666", + "border": "#0000001c", + "shadow": "#000000", + "primary_button_background": "#000000", + "primary_button_text": "#ffffff", + "primary_button_border": "#000000", + "primary_button_hover_background": "#383838", + "primary_button_hover_text": "#ffffff", + "primary_button_hover_border": "#383838", + "secondary_button_background": "rgba(0,0,0,0)", + "secondary_button_text": "#000000", + "secondary_button_border": "#000000", + "secondary_button_hover_background": "rgba(0,0,0,0)", + "secondary_button_hover_text": "#383838", + "secondary_button_hover_border": "#383838", + "input_background": "#ffffff", + "input_text_color": "#000000", + "input_border_color": "#000000", + "input_hover_background": "#f5f5f5eb", + "variant_background_color": "#ffffff", + "variant_text_color": "#000000", + "variant_border_color": "#e6e6e6", + "variant_hover_background_color": "#f5f5f5", + "variant_hover_text_color": "#000000", + "variant_hover_border_color": "#e6e6e6", + "selected_variant_background_color": "#000000", + "selected_variant_text_color": "#ffffff", + "selected_variant_border_color": "#000000", + "selected_variant_hover_background_color": "#1a1a1a", + "selected_variant_hover_text_color": "#ffffff", + "selected_variant_hover_border_color": "#1a1a1a", + "logo_height": 36, + "logo_height_mobile": 28 + } + }, + "scheme-3": { + "settings": { + "background": "#f2f2f2", + "foreground_heading": "#000000", + "foreground": "#000000", + "primary": "#666666", + "primary_hover": "#000000", + "border": "#d0d0d0", + "shadow": "#000000", + "primary_button_background": "#000000", + "primary_button_text": "#ffffff", + "primary_button_border": "#000000", + "primary_button_hover_background": "#383838", + "primary_button_hover_text": "#ffffff", + "primary_button_hover_border": "#383838", + "secondary_button_background": "rgba(0,0,0,0)", + "secondary_button_text": "#000000", + "secondary_button_border": "#000000", + "secondary_button_hover_background": "rgba(0,0,0,0)", + "secondary_button_hover_text": "#000000", + "secondary_button_hover_border": "#000000", + "input_background": "#ffffff", + "input_text_color": "#000000", + "input_border_color": "#000000", + "input_hover_background": "#f5f5f5", + "variant_background_color": "#ffffff", + "variant_text_color": "#000000", + "variant_border_color": "#e6e6e6", + "variant_hover_background_color": "#f5f5f5", + "variant_hover_text_color": "#000000", + "variant_hover_border_color": "#e6e6e6", + "selected_variant_background_color": "#000000", + "selected_variant_text_color": "#ffffff", + "selected_variant_border_color": "#000000", + "selected_variant_hover_background_color": "#1a1a1a", + "selected_variant_hover_text_color": "#ffffff", + "selected_variant_hover_border_color": "#1a1a1a", + "logo_height": 36, + "logo_height_mobile": 28 + } + }, + "scheme-4": { + "settings": { + "background": "#383838", + "foreground_heading": "#ffffff", + "foreground": "#ffffff", + "primary": "#ffffff", + "primary_hover": "#000000", + "border": "#383838", + "shadow": "#000000", + "primary_button_background": "#ffffff", + "primary_button_text": "#383838", + "primary_button_border": "#ffffff", + "primary_button_hover_background": "#e6e6e6", + "primary_button_hover_text": "#000000", + "primary_button_hover_border": "#e6e6e6", + "secondary_button_background": "rgba(0,0,0,0)", + "secondary_button_text": "#ffffff", + "secondary_button_border": "#ffffff", + "secondary_button_hover_background": "rgba(0,0,0,0)", + "secondary_button_hover_text": "#dedede", + "secondary_button_hover_border": "#dedede", + "input_background": "#383838", + "input_text_color": "#ffffff", + "input_border_color": "#ffffff", + "input_hover_background": "#5c5c5c", + "variant_background_color": "#ffffff", + "variant_text_color": "#000000", + "variant_border_color": "#e6e6e6", + "variant_hover_background_color": "#f5f5f5", + "variant_hover_text_color": "#000000", + "variant_hover_border_color": "#e6e6e6", + "selected_variant_background_color": "#000000", + "selected_variant_text_color": "#ffffff", + "selected_variant_border_color": "#000000", + "selected_variant_hover_background_color": "#1a1a1a", + "selected_variant_hover_text_color": "#ffffff", + "selected_variant_hover_border_color": "#1a1a1a", + "logo_height": 36, + "logo_height_mobile": 28 + } + }, + "scheme-5": { + "settings": { + "background": "#000000", + "foreground_heading": "#ffffff", + "foreground": "#ffffff", + "primary": "#ffffff", + "primary_hover": "#acacac", + "border": "#666666", + "shadow": "#000000", + "primary_button_background": "#ffffff", + "primary_button_text": "#000000", + "primary_button_border": "#ffffff", + "primary_button_hover_background": "#dedede", + "primary_button_hover_text": "#000000", + "primary_button_hover_border": "#dedede", + "secondary_button_background": "rgba(0,0,0,0)", + "secondary_button_text": "#ffffff", + "secondary_button_border": "#ffffff", + "secondary_button_hover_background": "rgba(0,0,0,0)", + "secondary_button_hover_text": "#acacac", + "secondary_button_hover_border": "#acacac", + "input_background": "#000000", + "input_text_color": "#ffffff", + "input_border_color": "#ffffff", + "input_hover_background": "#181818", + "variant_background_color": "#ffffff", + "variant_text_color": "#000000", + "variant_border_color": "#e6e6e6", + "variant_hover_background_color": "#f5f5f5", + "variant_hover_text_color": "#000000", + "variant_hover_border_color": "#e6e6e6", + "selected_variant_background_color": "#000000", + "selected_variant_text_color": "#ffffff", + "selected_variant_border_color": "#000000", + "selected_variant_hover_background_color": "#1a1a1a", + "selected_variant_hover_text_color": "#ffffff", + "selected_variant_hover_border_color": "#1a1a1a", + "logo_height": 36, + "logo_height_mobile": 28 + } + }, + "scheme-6": { + "settings": { + "background": "rgba(0,0,0,0)", + "foreground_heading": "#ffffff", + "foreground": "#ffffff", + "primary": "#ffffff", + "primary_hover": "#acacac", + "border": "rgba(0,0,0,0)", + "shadow": "rgba(0,0,0,0)", + "primary_button_background": "#ffffff", + "primary_button_text": "#000000", + "primary_button_border": "#ffffff", + "primary_button_hover_background": "#dedede", + "primary_button_hover_text": "#000000", + "primary_button_hover_border": "#dedede", + "secondary_button_background": "rgba(0,0,0,0)", + "secondary_button_text": "#ffffff", + "secondary_button_border": "#ffffff", + "secondary_button_hover_background": "rgba(0,0,0,0)", + "secondary_button_hover_text": "#acacac", + "secondary_button_hover_border": "#acacac", + "input_background": "#ffffff", + "input_text_color": "#000000", + "input_border_color": "#000000", + "input_hover_background": "#f5f5f5", + "variant_background_color": "#ffffff", + "variant_text_color": "#000000", + "variant_border_color": "#e6e6e6", + "variant_hover_background_color": "#f5f5f5", + "variant_hover_text_color": "#000000", + "variant_hover_border_color": "#e6e6e6", + "selected_variant_background_color": "#000000", + "selected_variant_text_color": "#ffffff", + "selected_variant_border_color": "#000000", + "selected_variant_hover_background_color": "#1a1a1a", + "selected_variant_hover_text_color": "#ffffff", + "selected_variant_hover_border_color": "#1a1a1a", + "logo_height": 36, + "logo_height_mobile": 28 + } + } + } + } + } +} diff --git a/app/abonnement.html b/app/abonnement.html new file mode 100644 index 0000000..e5c2764 --- /dev/null +++ b/app/abonnement.html @@ -0,0 +1,196 @@ + + + + + + + + + +Abonnements - Membre fondateur EOC 2027 - ÉCHEC O CUBE + + + + + +

ABONNEMENTS ÉCHEC O CUBE

+ +
+ 🎮 C'EST GRATUIT MAINTENANT +

Le jeu est entièrement GRATUIT jusqu'au 1ᵉʳ janvier 2027. Rien à payer, rien à entrer : ouvrez le jeu et jouez tout de suite.

+ ▶ JOUER GRATUITEMENT +

Les abonnements ci-dessous ouvriront le 1ᵉʳ janvier 2027. Vous pouvez déjà voir les prix — mais il n'y a rien à payer aujourd'hui.

+
+ +
+
ÉDITION DE LANCEMENT · PREMIÈRE HEURE
+

Devenez Membre fondateur

+
+
MEMBRE FONDATEUR
+
EOC 2027 · LA RUCHE
+
+

ÉCHEC O CUBE est un jeu de stratégie inventé au Québec en 1999. Votre abonnement débloque tout le jeu, vous ouvre la communauté, et soutient directement son lancement officiel prévu en 2027.

+
+

Dans le jeu, sur jeu.echecocube.ca, et dans la communauté sur echecocube.ca.

+

À QUOI ÇA SERT

Débloque tous les modes et niveaux, et finance le lancement d'un jeu d'ici.

+

CE QUE VOUS RECEVEZ

Un code personnel valide un an et votre titre de Membre fondateur EOC 2027.

+
+
+ +
+ 🐝 OFFRE FONDATEUR — PAYEZ D'AVANCE +

Le jeu est gratuit jusqu'au 1ᵉʳ janvier 2027 — mais les fondateurs peuvent réserver leur année MAINTENANT.

+

Vous payez une seule fois aujourd'hui, vous recevez votre code membre immédiatement, et vous l'activez le 1ᵉʳ janvier : votre année complète commence à l'activation — pas une journée perdue. Votre achat compte pour la campagne La Ruche et votre titre de Membre fondateur EOC 2027 est réservé.

+ + +

L'offre Fondateur ouvre très bientôt — inscrivez-vous dans le jeu pour être avisé en premier.

+
+ +
+ JEU DE BASE +
3,99 $ / mois
+
ou 39,99 $ / année (deux mois offerts)
+
Après paiement, EOC vous envoie votre code personnel valide un an.
+ + + +
+ +
+ TOUT INCLUS · LA RUCHE +
7,99 $ / mois
+
ou 79,99 $ / année - La Ruche (deux mois offerts)
+
Toutes les options. Après paiement, EOC vous envoie votre code personnel valide un an et votre titre de Membre fondateur EOC 2027.
+ + + + 💬 Lire le blogue et la communauté (facultatif) +

Le jeu est GRATUIT jusqu'au 1ᵉʳ janvier 2027 — la caisse ouvre à cette date. En joignant la communauté dès maintenant, vous êtes avisé en premier et votre tarif de Membre fondateur est réservé. Chaque code est personnel et valide un an; le renouvellement sera toujours annoncé clairement d'avance et l'annulation sera simple, conformément à la Loi sur la protection du consommateur du Québec.

+
+ + + +Retour au jeu + +
ÉCHEC O CUBE - Inventé par Alain Dupont, Québec, 1999 - Droit d'auteur OPIC Canada No 477714
+Boutique officielle : echecocube.ca - Lancement public : 2027 avec La Ruche
+ + diff --git a/app/apple-touch-icon.png b/app/apple-touch-icon.png new file mode 100644 index 0000000..88a749c Binary files /dev/null and b/app/apple-touch-icon.png differ diff --git a/app/confidentialite.html b/app/confidentialite.html new file mode 100644 index 0000000..52b4b6f --- /dev/null +++ b/app/confidentialite.html @@ -0,0 +1,58 @@ + + + + + + + +Politique de confidentialité - ÉCHEC O CUBE + + + + +
+

Politique de confidentialité

+
ÉCHEC O CUBE — mise à jour le 9 juillet 2026
+ +

1. Qui nous sommes

+

ÉCHEC O CUBE est un jeu de stratégie édité au Québec (Canada). Pour toute question sur cette politique ou sur vos données, écrivez à contact@echecocube.ca.

+ +

2. Quelles données nous recueillons

+ + +

3. Pourquoi nous les utilisons

+

Votre prénom et votre courriel servent à vous donner accès au jeu pendant la période gratuite et à vous prévenir des nouveautés et du lancement officiel. Nous n'utilisons pas vos données à d'autres fins.

+ +

4. Où elles sont conservées

+

Le courriel d'inscription est recueilli de façon sécurisée par notre outil de formulaires (Jotform), hébergement du site par Google Firebase, et conservé par ÉCHEC O CUBE. Nous ne vendons ni ne louons vos données, et nous ne les partageons pas à des fins publicitaires.

+ +

5. Vos droits

+

Vous pouvez demander en tout temps l'accès, la correction ou la suppression de vos données en écrivant à contact@echecocube.ca. Nous donnons suite dans un délai raisonnable, conformément aux lois applicables au Québec et au Canada.

+ +

6. Enfants

+

Le jeu s'adresse à tous les âges. Un parent ou tuteur peut nous contacter pour toute demande concernant les données d'un enfant.

+ +

7. Modifications

+

Cette politique peut être mise à jour. La date en haut indique la dernière version.

+ +Retour au jeu +
+ + diff --git a/app/firebase.json b/app/firebase.json new file mode 100644 index 0000000..8a90eae --- /dev/null +++ b/app/firebase.json @@ -0,0 +1,6 @@ +{ + "hosting": { + "public": ".", + "ignore": ["firebase.json", "DEPLOIEMENT.md"] + } +} diff --git a/app/icon-192.png b/app/icon-192.png new file mode 100644 index 0000000..d289ec8 Binary files /dev/null and b/app/icon-192.png differ diff --git a/app/icon-512.png b/app/icon-512.png new file mode 100644 index 0000000..55e9202 Binary files /dev/null and b/app/icon-512.png differ diff --git a/app/icon-maskable-512.png b/app/icon-maskable-512.png new file mode 100644 index 0000000..157e1bc Binary files /dev/null and b/app/icon-maskable-512.png differ diff --git a/app/index.html b/app/index.html new file mode 100644 index 0000000..4f73e59 --- /dev/null +++ b/app/index.html @@ -0,0 +1,2784 @@ + + + + + + + + + + + + +ÉCHEC O CUBE - Prototype officiel 7x7 - Règlement V3.0 + + + + +
+ +
Prototype officiel 7x7 - Règlement V3.0
+
+ +
+
+

JOUEUR 1

+
0
+
Net estimé : -71
+
41 pâles   15 foncés
+
+
+

JOUEUR 2

+
0
+
Net estimé : -71
+
41 pâles   15 foncés
+
+
+
+ + +
+
+ JOUEUR 1 + 10:00 +
+
+ +
+ + + + min +
+
+
+ JOUEUR 2 + 10:00 +
+
+ +
+ + + + + + + + + + + + 100% + +
+ + +
+
Film de la partie
+
+ + + + + +
+
+ + +
+
+ +
+
CLAVARDAGE
+
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Mode rouge : touchez une intersection libre pour marquer une zone morte (mode familial : placement par consensus, article 18). Touchez un rouge existant pour le retirer : un rouge peut être annulé en tout temps et retourne à la réserve. Le rouge ne consomme aucun tour.
+ +
+ + +
+
+ + +
+
+ Analyse du plateau final + +
+ +
Bienvenue. Le premier pion est libre; ensuite chaque pion doit toucher une couleur contraire.
+
+
Notation : les lettres A-H suivent les rainures verticales, les chiffres 1-8 les rainures horizontales (1 en bas). Un croisement se nomme D5; un pion se note par ses deux croisements : D5-E5 (horizontal) ou D5-D6 (vertical); un rouge par son croisement unique.
+ +
ÉCHEC O CUBE - Inventé par Alain Dupont, Québec, 1999 - Droit d'auteur OPIC Canada No 477714
+Prototype conforme au Livre de règles officiel V3.0 (29 juin 2026) - Plateaux 7x7 découverte, 9x9 récréatif et 11x11 compétition FEOC
+Version du 13 juillet 2026 : couleurs du plateau ET des pions au choix, partage du plateau dans le Chat Blogue, annulation avec compte exact
+ + + +
+
+ +
GRATUIT JUSQU'AU 1ᵉʳ JANVIER 2027
+

ÉCHEC O CUBE est gratuit jusqu'au 1ᵉʳ janvier 2027 : accès complet, sans frais. Profitez-en dès maintenant — inscrivez-vous une fois sur cet appareil pour jouer.

+
+ + +
+ +
+

Un seul courriel, une seule fois sur cet appareil. Sert à vous prévenir des nouveautés et du lancement officiel de La Ruche. Politique de confidentialité.

+
+
+ +
+
+ + +
GRATUIT — jusqu'au 1ᵉʳ janvier 2027
+

Placez, connectez, observez, fermez le cube — et criez ÉCHEC O CUBE !

+
+ + + + + +
+ +
+ TAILLE DE L'ÉCRAN + + 100% + +
+
+ PLATEAU + + + +
+ +
+ DESIGN + + + + + +
+ +
+ MES COULEURS + Plateau + + Pâles + + Foncés + + +
+ +
+ MA PLUIE DE VICTOIRE + +
+ +
+
ÉDITION FONDATEUR · BOUTIQUE
+
Casquettes, t-shirts et objets de collection ÉCHEC O CUBE. Chaque achat te rend Membre fondateur 2027 — livraison GRATUITE au Canada.
+
Une pièce ne sera jamais vendue en boutique : le plateau 9x9 en bois, Collection Vintage 1999, signé et numéroté par l'inventeur. Elle sera dévoilée à l'ouverture de La Ruche, au printemps 2027. Les fondateurs seront avisés en premier.
+ 🛍️ VOIR LA BOUTIQUE +
Blogue et communauté →
+
+
+
+ +
+
+

Niveau de l'ordinateur

+

Comme dans les vrais tournois, montez les classes une à une. Les quatre niveaux sont inclus dans le jeu de base.

+
+ + + + + +
+
+
+ +
+
+

Jouer en ligne

+

Chacun sur son appareil, partout dans le monde. L'un crée la partie et reçoit un code; l'autre entre ce code sur son propre appareil et la partie commence.

+
+ + +
+ + +
+
+ +
+

Important : celui qui crée la partie garde l'application ouverte et l'écran allumé jusqu'à l'arrivée de son ami, sinon le code cesse d'exister. La partie passe par le serveur infonuagique sécurisé ÉCHEC O CUBE (Google Firebase) : fiable sur tous les réseaux, cellulaire compris.

+
+
+ +
+
+ +

Chat Blogue EOC

+
+

Discutez entre joueurs : parties, tournois, jeu en bois et application. Choisissez un salon public, ou créez votre groupe privé et partagez son code avec vos amis.

+
+ Votre nom d'affichage : + +
+
+ + + +
+ + +
+
+ +
+

Prudence : ne partagez jamais votre adresse, votre école, votre numéro de téléphone ni aucun renseignement personnel. Jeunes joueurs : demandez à un adulte de vous accompagner. Respect et bonne humeur — c'est l'esprit ÉCHEC O CUBE.

+
+ +
+
+ +
+
+

Abonnement ÉCHEC O CUBE

+

Essai gratuit de 30 jours du jeu de base : ordinateur (Débutant et Intermédiaire) et deux joueurs sur cet appareil. Ensuite, jeu de base : 3,99 $/mois ou 39,99 $/an. Tout inclus (jeu en ligne, Chat Blogue EOC, tournois, tous les niveaux) : 7,99 $/mois ou 79,99 $/an - La Ruche. Après paiement, EOC vous envoie un code personnel valide un an.

+
+ +
+ + +
+
+ +
+

Vous avez reçu votre code personnel EOC après paiement : entrez-le ci-dessus. Un code par personne, valide un an, activation instantanée, aucune connexion requise.

+
+
+ +
+
+

Règles et guide de l'application EOC

+

L'application suit le Livre de règles officiel V3.0 (29 juin 2026) et fait l'arbitre à votre place : elle refuse les coups illégaux et explique toujours pourquoi.

+ +

1. Jouer sur l'application

+
    +
  1. Choisissez votre pion avec les boutons « Pâle - 1 pt » ou « Foncé - 2 pts », puis touchez une rainure du plateau pour le poser.
  2. +
  3. Le premier pion de la partie est libre. Ensuite, chaque pion doit toucher une couleur contraire : pâle touche foncé, foncé touche pâle, jamais deux pareils. L'application refuse le coup sinon.
  4. +
  5. Bouton « Rouge (zone morte) » : touchez ensuite une intersection pour poser un rouge debout (0 point, aucun tour consommé). Touchez un rouge existant pour le retirer en tout temps.
  6. +
  7. Quand votre pion ferme un carré, l'application vous le dit : touchez « ÉCHEC O CUBE ! » pour marquer les points et rejouer (tour bonus), ou « Terminer sans annoncer ». Si vous oubliez, l'adversaire peut réclamer vos points avant de jouer — comme dans la vraie règle (article 16).
  8. +
  9. Le dernier pion posé brille en doré sur le plateau, et le journal sous le plateau note tous les coups en notation officielle (exemple : pâle D5-E5).
  10. +
+ +

2. Les boutons pratiques de l'appli

+
    +
  1. « Annuler le coup » : reprend le dernier coup joué (jusqu'à 10), parfait pour apprendre sans stress. Offert contre l'ordinateur et à deux sur le même appareil.
  2. +
  3. « Nouvelle partie » : retourne au menu. Votre partie locale est sauvegardée automatiquement à chaque coup — « Reprendre la partie en cours » vous ramène exactement où vous étiez.
  4. +
  5. A− / A+ : grossit toute l'interface (mémorisé). Le zoom à deux doigts fonctionne aussi en tout temps.
  6. +
  7. En fin de partie : « Analyser le plateau » enlève l'écran du décompte pour étudier les cases libres; « Revoir le décompte » le ramène.
  8. +
  9. « Chat Blogue EOC » : salons publics et groupes privés entre joueurs. Le bouton « Mon plateau » partage une image de votre plateau générée par l'application — c'est la SEULE image permise : jamais de photo, de vidéo ni de message vocal, jamais d'adresse, d'école ni de téléphone; pseudonymes seulement et les jeunes accompagnés d'un adulte.
  10. +
+ +

3. Plateaux et designs

+
    +
  1. Trois grandeurs au menu (Règlement V3.0, article 4) : 7x7 découverte, 9x9 récréatif (72 pâles et 33 foncés par joueur, 15 rouges), 11x11 compétition FEOC (115 et 50 par joueur, 20 rouges). Le choix s'applique à la prochaine partie.
  2. +
  3. En ligne avec un ami : toujours 7x7, pour que les deux appareils soient identiques.
  4. +
  5. Cinq designs acryliques au menu : Bois, Chat, Néon, Érable, Océan. Le design ne change que les couleurs et la décoration — jamais les règles.
  6. +
  7. « MA COULEUR » : chaque joueuse et joueur choisit sa couleur dans la palette; le design garde sa forme (oreilles, éclairs, feuille, vagues) et prend cette couleur. « Couleurs du design » ramène l'original.
  8. +
  9. Sur 11x11 aux niveaux Intermédiaire et Difficile, l'ordinateur peut réfléchir quelques secondes de plus : c'est normal, le plateau est grand.
  10. +
+ +

4. Les règles officielles en bref (article 26, V3.0)

+
    +
  1. Premier joueur choisi par pile ou face; premier pion libre.
  2. +
  3. Chaînage : chaque pion suivant touche une couleur contraire. Pâle ne touche jamais pâle, foncé ne touche jamais foncé.
  4. +
  5. Les pions sont couchés dans les rainures; le foncé long déborde dans les coins-gorges.
  6. +
  7. Le rouge est debout dans l'intersection : zone morte, 0 point, aucun tour consommé, annulable en tout temps.
  8. +
  9. Fermer un carré valide donne des points seulement si on annonce ÉCHEC O CUBE; l'annonce oubliée peut être réclamée par le joueur suivant.
  10. +
  11. Tour bonus : on rejoue tant qu'on ferme des carrés.
  12. +
  13. Pointage sur la ligne structurante seulement : carré 1x1 standard 6 pts, enrichi 9 pts, maximal ou 2x2 12 pts. Un rouge dans la ligne structurante : 0 point.
  14. +
  15. Fin : dernier pion posé ou blocage. Décompte final : points marqués, moins 1 pt par pâle restant et 2 pts par foncé restant. Le « Net estimé » affiché sous votre score suit ce calcul en direct.
  16. +
  17. Notation : lettres sur les rainures verticales, chiffres sur les horizontales (1 en bas). Un croisement se nomme D5; un pion se note D5-E5 (horizontal) ou D5-D6 (vertical); un carré par ses coins opposés : D5-E6.
  18. +
+ +

5. Conseils pour bien débuter

+
    +
  1. Surveillez le « Net estimé » : chaque foncé gardé en main coûte 2 points à la fin. Faites-les travailler.
  2. +
  3. Les foncés créent le contact (ils débordent dans les coins-gorges) : ce sont eux qui ouvrent le jeu aux pâles.
  4. +
  5. Avant de fermer un carré, regardez si votre coup en offre un plus gros à l'adversaire juste après.
  6. +
  7. Utilisez « Annuler le coup » pour essayer des idées : c'est le meilleur professeur de l'application.
  8. +
  9. Commencez sur 7x7 au niveau Débutant, puis montez les classes une à une, comme dans les vrais tournois.
  10. +
+
+
+
+ +
+
+

Décompte final (article 22)

+

+ + + + + + +
Joueur 1Joueur 2
Points marqués
Pâles restants (x1)
Foncés restants (x2)
Total net
+
+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/logo-eoc.png b/app/logo-eoc.png new file mode 100644 index 0000000..af19464 Binary files /dev/null and b/app/logo-eoc.png differ diff --git a/app/manifest.json b/app/manifest.json new file mode 100644 index 0000000..7fc1bad --- /dev/null +++ b/app/manifest.json @@ -0,0 +1,19 @@ +{ + "name": "ÉCHEC O CUBE", + "short_name": "EOC", + "description": "Le jeu de stratégie inventé au Québec en 1999. Placer, connecter, observer, fermer.", + "lang": "fr", + "id": "/", + "scope": "./", + "start_url": "./index.html", + "display": "standalone", + "orientation": "portrait", + "background_color": "#a26967", + "theme_color": "#a26967", + "categories": ["games", "board"], + "icons": [ + {"src": "icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any"}, + {"src": "icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any"}, + {"src": "icon-maskable-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable"} + ] +} diff --git a/app/merci.html b/app/merci.html new file mode 100644 index 0000000..eddf036 --- /dev/null +++ b/app/merci.html @@ -0,0 +1,102 @@ + + + + + + + + + + +Merci - ÉCHEC O CUBE + + + + + +

MERCI, MEMBRE ÉCHEC O CUBE !

+ +
+ PAIEMENT REÇU +

Votre abonnement ÉCHEC O CUBE est confirmé. Bienvenue parmi les membres !

+ +
Vérification de votre paiement...
+ Ouvrir le jeu et activer mon code +

Question ou problème ? Écrivez à contact@echecocube.ca — réponse rapide, promis.

+
+ +
ÉCHEC O CUBE - Inventé par Alain Dupont, Québec, 1999 - Droit d'auteur OPIC Canada No 477714
+Boutique officielle : echecocube.ca - Campagne La Ruche : printemps 2027
+ + + + diff --git a/app/qr-eoc.png b/app/qr-eoc.png new file mode 100644 index 0000000..9a0f1eb Binary files /dev/null and b/app/qr-eoc.png differ diff --git a/app/qr-site-eoc.png b/app/qr-site-eoc.png new file mode 100644 index 0000000..e98995e Binary files /dev/null and b/app/qr-site-eoc.png differ diff --git a/app/sw.js b/app/sw.js new file mode 100644 index 0000000..0f1dd39 --- /dev/null +++ b/app/sw.js @@ -0,0 +1,38 @@ +/* ECHEC O CUBE - service worker v33 (palette officielle Alain + Atelier textes + adresse unique) + Page du jeu : RESEAU D'ABORD (les mises a jour arrivent tout de suite), cache de secours hors ligne. + Images et fichiers fixes : cache d'abord (rapide), mis a jour en arriere-plan. */ +const CACHE = 'eoc-v44'; +const FICHIERS = ['./', './index.html', './logo-eoc.png', './icon-192.png', './icon-512.png', './manifest.json']; +self.addEventListener('install', e => { + e.waitUntil(caches.open(CACHE).then(c => c.addAll(FICHIERS)).then(() => self.skipWaiting())); +}); +self.addEventListener('activate', e => { + e.waitUntil(caches.keys().then(ks => Promise.all(ks.filter(k => k !== CACHE).map(k => caches.delete(k)))).then(() => self.clients.claim())); +}); +self.addEventListener('fetch', e => { + if (e.request.method !== 'GET') return; + const url = new URL(e.request.url); + const estPage = e.request.mode === 'navigate' || url.pathname === '/' || url.pathname.endsWith('.html'); + if (estPage) { + /* Reseau d'abord : version la plus recente garantie; cache seulement si hors ligne. */ + e.respondWith(fetch(e.request).then(rep => { + if (rep.ok && url.origin === location.origin) { + const copie = rep.clone(); + caches.open(CACHE).then(c => c.put(e.request, copie)); + } + return rep; + }).catch(() => caches.match(e.request).then(r => r || caches.match('./index.html')))); + } else { + /* Cache d'abord pour le reste, avec mise a jour en arriere-plan. */ + e.respondWith(caches.match(e.request).then(r => { + const maj = fetch(e.request).then(rep => { + if (rep.ok && url.origin === location.origin) { + const copie = rep.clone(); + caches.open(CACHE).then(c => c.put(e.request, copie)); + } + return rep; + }).catch(() => r); + return r || maj; + })); + } +}); diff --git a/assets/affiche-carre-claire.png b/assets/affiche-carre-claire.png new file mode 100644 index 0000000..ce73bc8 Binary files /dev/null and b/assets/affiche-carre-claire.png differ diff --git a/assets/affiche-carre.png b/assets/affiche-carre.png new file mode 100644 index 0000000..a112aff Binary files /dev/null and b/assets/affiche-carre.png differ diff --git a/assets/affiche-story-claire.png b/assets/affiche-story-claire.png new file mode 100644 index 0000000..fcc5f72 Binary files /dev/null and b/assets/affiche-story-claire.png differ diff --git a/assets/affiche-story.png b/assets/affiche-story.png new file mode 100644 index 0000000..6150435 Binary files /dev/null and b/assets/affiche-story.png differ diff --git a/assets/app-arene-son.png b/assets/app-arene-son.png new file mode 100644 index 0000000..eaffda0 Binary files /dev/null and b/assets/app-arene-son.png differ diff --git a/assets/courriel-bienvenue-apercu.png b/assets/courriel-bienvenue-apercu.png new file mode 100644 index 0000000..defa2e4 Binary files /dev/null and b/assets/courriel-bienvenue-apercu.png differ diff --git a/assets/courriel-la-ruche-apercu.png b/assets/courriel-la-ruche-apercu.png new file mode 100644 index 0000000..0a95567 Binary files /dev/null and b/assets/courriel-la-ruche-apercu.png differ diff --git a/assets/courriel-recompense-apercu.png b/assets/courriel-recompense-apercu.png new file mode 100644 index 0000000..7db69e7 Binary files /dev/null and b/assets/courriel-recompense-apercu.png differ diff --git a/assets/ecran-app.png b/assets/ecran-app.png new file mode 100644 index 0000000..9b98700 Binary files /dev/null and b/assets/ecran-app.png differ diff --git a/assets/formulaire-apercu.png b/assets/formulaire-apercu.png new file mode 100644 index 0000000..dd7e4e5 Binary files /dev/null and b/assets/formulaire-apercu.png differ diff --git a/assets/jeu-cadran-coordonnees.png b/assets/jeu-cadran-coordonnees.png new file mode 100644 index 0000000..fa8bbc0 Binary files /dev/null and b/assets/jeu-cadran-coordonnees.png differ diff --git a/assets/jeu-zoom-100.png b/assets/jeu-zoom-100.png new file mode 100644 index 0000000..37b42eb Binary files /dev/null and b/assets/jeu-zoom-100.png differ diff --git a/assets/jeu-zoom-50.png b/assets/jeu-zoom-50.png new file mode 100644 index 0000000..881f8d1 Binary files /dev/null and b/assets/jeu-zoom-50.png differ diff --git a/assets/logo-eoc.png b/assets/logo-eoc.png new file mode 100644 index 0000000..af19464 Binary files /dev/null and b/assets/logo-eoc.png differ diff --git a/assets/presentation-echecocube.pdf b/assets/presentation-echecocube.pdf new file mode 100644 index 0000000..87f6821 Binary files /dev/null and b/assets/presentation-echecocube.pdf differ diff --git a/assets/presentation-echecocube.pptx b/assets/presentation-echecocube.pptx new file mode 100644 index 0000000..39b46cf Binary files /dev/null and b/assets/presentation-echecocube.pptx differ diff --git a/assets/presentation-slide1.png b/assets/presentation-slide1.png new file mode 100644 index 0000000..10f9896 Binary files /dev/null and b/assets/presentation-slide1.png differ diff --git a/assets/presentation-slide2.png b/assets/presentation-slide2.png new file mode 100644 index 0000000..c080a89 Binary files /dev/null and b/assets/presentation-slide2.png differ diff --git a/assets/presentation-slide3.png b/assets/presentation-slide3.png new file mode 100644 index 0000000..1c9fec5 Binary files /dev/null and b/assets/presentation-slide3.png differ diff --git a/assets/presentation-slide4.png b/assets/presentation-slide4.png new file mode 100644 index 0000000..e0126ca Binary files /dev/null and b/assets/presentation-slide4.png differ diff --git a/assets/presentation-slide5.png b/assets/presentation-slide5.png new file mode 100644 index 0000000..5f2de0f Binary files /dev/null and b/assets/presentation-slide5.png differ diff --git a/assets/presentation-slide6.png b/assets/presentation-slide6.png new file mode 100644 index 0000000..69bb68d Binary files /dev/null and b/assets/presentation-slide6.png differ diff --git a/assets/preuve-jeu-fonctionne.png b/assets/preuve-jeu-fonctionne.png new file mode 100644 index 0000000..82af005 Binary files /dev/null and b/assets/preuve-jeu-fonctionne.png differ diff --git a/assets/preuve-revoir-partie.png b/assets/preuve-revoir-partie.png new file mode 100644 index 0000000..c37b868 Binary files /dev/null and b/assets/preuve-revoir-partie.png differ diff --git a/assets/promo-app-carre.png b/assets/promo-app-carre.png new file mode 100644 index 0000000..326d94c Binary files /dev/null and b/assets/promo-app-carre.png differ diff --git a/assets/promo-logo-carre.png b/assets/promo-logo-carre.png new file mode 100644 index 0000000..04e9019 Binary files /dev/null and b/assets/promo-logo-carre.png differ diff --git a/assets/strategie-echecocube.pdf b/assets/strategie-echecocube.pdf new file mode 100644 index 0000000..3e41aa5 Binary files /dev/null and b/assets/strategie-echecocube.pdf differ diff --git a/docs/etude-design-mobile-echecocube.md b/docs/etude-design-mobile-echecocube.md new file mode 100644 index 0000000..df07d31 --- /dev/null +++ b/docs/etude-design-mobile-echecocube.md @@ -0,0 +1,96 @@ +# Étude design mobile — suggestions pour Échec O Cube + +> Synthèse des bons principes de design d'application mobile (le type de contenu +> enseigné par des chaînes comme *Développeur Libre*), traduits en **suggestions +> concrètes** pour l'app Échec O Cube. +> +> Note d'honnêteté : YouTube bloque la lecture automatique de ses vidéos, donc ce +> document n'est pas la transcription mot à mot d'une vidéo. C'est une étude des +> **principes établis** (ergonomie, hiérarchie, lisibilité, performance) appliqués +> à ton app. Envoie-moi les points clés d'une vidéo précise et je l'intègre. + +--- + +## Les 8 principes qui comptent (et ce qu'on en fait) + +### 1. La zone du pouce (déjà appliqué) +49 % des gens jouent à une main. Les actions importantes vont **en bas**, à portée +du pouce ; le haut sert à l'information. +- **Fait** sur l'écran récompenses : bouton principal fixé en bas, cibles agrandies. +- **À faire dans le jeu** : garder les commandes de partie (placer, annuler, valider) + dans le tiers inférieur de l'écran. + +### 2. Un seul objectif par écran +Chaque écran doit avoir **une action principale évidente**. Trop de boutons = personne +ne sait quoi faire. +- **Suggestion** : sur l'écran de jeu, une seule action mise en avant à la fois + (ex. « Valider mon coup »), le reste discret. + +### 3. Hiérarchie visuelle claire +L'œil doit savoir où regarder en premier : gros titre, puis sous-texte, puis détails. +- **Suggestion** : titres de section en gras, textes secondaires en gris, un seul + accent de couleur pour l'action. (Déjà le cas sur l'écran récompenses.) + +### 4. Beaucoup d'espace (respiration) +Le vide n'est pas perdu : il rend l'app calme et facile à lire. +- **Suggestion** : ne pas remplir chaque coin. Marges généreuses autour du plateau + et des menus. + +### 5. Lisibilité avant tout +Texte assez gros (≥ 16 px pour le corps), fort contraste, éviter le gris pâle sur +blanc. +- **Suggestion** : vérifier que les scores et étiquettes du jeu restent lisibles sur + les 5 thèmes (Bois, Chat, Néon, Érable, Océan), surtout en plein soleil. + +### 6. Grosses cibles tactiles +Minimum **44–48 px** pour tout ce qui se touche. Espacer les boutons pour éviter les +fausses manip. +- **Suggestion** : sur le plateau, s'assurer que chaque case/pièce est assez grande + au doigt, avec un léger retour visuel quand on la touche. + +### 7. Retour immédiat (feedback) +Chaque action doit répondre : un bouton qui s'enfonce, une petite vibration, un message +de confirmation. +- **Fait** : messages de confirmation (« Lien copié », « Photo envoyée »). +- **Suggestion jeu** : animation légère quand une pièce se pose et quand un cube se + ferme (la « réaction en chaîne » de ton slogan mérite d'être vue). + +### 8. Chargement soigné (performance perçue) +Avant que le contenu arrive : afficher un **squelette** (shimmer) plutôt qu'un écran +blanc. Alléger les images. +- **Suggestion** : au démarrage, montrer tout de suite le plateau vide (ossature) + pendant que les données chargent — l'app paraît plus rapide. + +--- + +## Suggestions prioritaires pour Échec O Cube + +| Priorité | Suggestion | Où | +|---|---|---| +| Haute | Commandes de jeu dans le bas de l'écran (zone du pouce) | Écran de partie | +| Haute | Une seule action principale mise en avant par écran | Partout | +| Haute | Cibles ≥ 44 px + retour visuel au toucher | Plateau | +| Moyenne | Animation « pose » et « fermeture du cube » | Écran de partie | +| Moyenne | Vérifier lisibilité des textes sur les 5 thèmes | Thèmes | +| Moyenne | Squelette de chargement au démarrage | Lancement | +| Basse | Écran d'accueil avec 1 message clair + 1 bouton « Jouer » | Accueil | + +--- + +## Bon réflexe à garder + +Continue d'envoyer des exemples d'apps que tu trouves belles ou des vidéos qui +t'inspirent. À chaque fois, on en tire **1 ou 2 idées applicables** et on les teste +sur ton app — c'est comme ça qu'un design s'améliore, petit à petit, avant de +« couler dans le béton ». + +--- + +## Sources consultées + +- *7 ASTUCES pour créer un design magnifique d'application mobile* — Développeur Libre + (YouTube) : https://www.youtube.com/watch?v=t2ikO9jvB3M +- Design d'application mobile, le guide complet — codeur.com : + https://www.codeur.com/blog/design-application-mobile/ +- Le guide ultime du design d'application — 99designs : + https://99designs.com/blog/web-digital/how-to-design-an-app/ diff --git a/docs/klaviyo-plan-et-contenus.md b/docs/klaviyo-plan-et-contenus.md new file mode 100644 index 0000000..f7614e9 --- /dev/null +++ b/docs/klaviyo-plan-et-contenus.md @@ -0,0 +1,156 @@ +# Klaviyo — plan + contenus prêts (Échec O Cube) + +> Objectif : rendre réels le **programme de récompense** et la **liste d'attente** +> du jeu en bois via Klaviyo (emailing). Ce document contient tout le contenu prêt. +> Dès que la connexion Klaviyo est autorisée, je crée les listes et les emails. + +## Comment débloquer Klaviyo (ton action) + +Quand je tente d'agir dans Klaviyo, une **autorisation** est demandée de ton côté. +Pour la donner : +1. Regarde si une **fenêtre « Autoriser Klaviyo »** apparaît dans ton interface → clique **Autoriser**. +2. Sinon, va dans les **réglages des connecteurs** de ce chat et **active Klaviyo** (« enabled in chat »). +3. Redis-moi « c'est autorisé » et j'exécute tout ci-dessous automatiquement. + +--- + +## 1. Les listes à créer + +| Liste | Rôle | +|---|---| +| **Liste d'attente — Jeu en bois 2027** | Capter les gens intéressés par le jeu en bois avant le lancement La Ruche | +| **Joueurs de l'app** | Tous les inscrits de l'application (fidélisation, infolettre) | +| **Programme récompense** | Participants parrainage + concours photo | + +--- + +## 2. Courriel de bienvenue — liste d'attente + +**Objet :** Tu es sur la liste — le jeu Échec O Cube en bois arrive +**Aperçu :** Merci ! On te préviendra en premier pour La Ruche 2027. + +``` +Bonjour, + +Merci de ton intérêt pour Échec O Cube — le jeu de stratégie inventé au Québec en 1999. + +Tu es maintenant sur la liste d'attente de la version en bois massif. Voici ce que ça +veut dire : + +- Tu seras averti EN PREMIER au lancement de la campagne La Ruche, au printemps 2027. +- Tu auras droit au statut de Membre fondateur (avantages réservés aux premiers). +- Pas de spam : on t'écrit seulement quand c'est important. + +En attendant, joue gratuitement à l'application : jeu.echecocube.ca + +À bientôt, +L'équipe Échec O Cube +jeu.echecocube.ca · echecocube.ca +``` + +--- + +## 3. Courriel — programme de récompense (parrainage + photo) + +**Objet :** Gagne un mois gratuit sur Échec O Cube +**Aperçu :** Parraine 3 amis ou publie une photo — c'est tout. + +``` +Bonjour, + +Voici comment gagner un mois gratuit sur Échec O Cube : + +1) Parraine 3 amis. Dès qu'ils installent le jeu et jouent un mois, ton mois est offert. +2) Publie une photo de ta partie avec le mot-clic #EchecOCube. Tu reçois une semaine + gratuite — et chaque réseau en plus te donne une chance de plus au tirage du mois + (une année gratuite + le jeu en bois). + +Ton lien de parrainage est dans l'application : jeu.echecocube.ca + +Chaque récompense est vérifiée avant d'être remise. Bon jeu ! + +L'équipe Échec O Cube +``` + +--- + +## 4. Courriel — annonce La Ruche 2027 (à programmer plus tard) + +**Objet :** C'est parti : la campagne La Ruche pour le jeu en bois +**Aperçu :** Membre fondateur, c'est maintenant. + +``` +Bonjour, + +Le moment est arrivé : la campagne La Ruche pour lancer Échec O Cube en bois massif +est en ligne. + +Comme tu es sur notre liste d'attente, tu y accèdes en premier — et tu peux devenir +Membre fondateur (édition en micro-quantités, par grandeurs et couleurs). + +Découvre la campagne : [lien La Ruche] + +Merci de faire partie de l'aventure depuis le début. +L'équipe Échec O Cube +``` + +--- + +## 5. Courriel de relance — inscrit qui n'a pas encore joué + +**Objet :** Ta partie t'attend sur Échec O Cube +**Aperçu :** 2 minutes pour apprendre, une profondeur infinie. + +``` +Bonjour, + +Tu t'es inscrit, mais on ne t'a pas encore vu jouer — et c'est dommage, parce +qu'Échec O Cube s'apprend en 2 minutes. + +Place, relie, observe, ferme le cube. Des règles simples, une stratégie sans fin. + +Fais ta première partie maintenant, c'est gratuit : jeu.echecocube.ca + +Et si tu invites 3 amis qui jouent un mois, ton mois devient gratuit. + +À bientôt sur le plateau, +L'équipe Échec O Cube +``` + +--- + +## 6. Courriel de remerciement — après une action (parrainage / photo / partage) + +**Objet :** Merci — tu fais grandir Échec O Cube +**Aperçu :** Un petit geste qui compte beaucoup pour nous. + +``` +Bonjour, + +Merci ! Ton geste — que ce soit un parrainage, une photo de ta partie ou un +partage — aide un jeu de chez nous à se faire connaître. + +Voici où en est ta récompense : +- Parrainage : ton mois gratuit se débloque dès que 3 amis jouent un mois. +- Photo : ta semaine gratuite est en vérification, et chaque réseau te donne une + chance de plus au tirage du mois (une année gratuite + le jeu en bois). + +On revient vers toi dès que c'est confirmé. Merci de faire partie de l'aventure. + +L'équipe Échec O Cube +jeu.echecocube.ca +``` + +--- + +## 7. Ce que je ferai dès l'autorisation + +1. Créer les 3 listes ci-dessus. +2. Créer les 3 modèles de courriel (bienvenue, récompense, La Ruche) prêts à envoyer. +3. (Optionnel) Un **flux automatique** : quelqu'un s'inscrit à la liste d'attente → + reçoit automatiquement le courriel de bienvenue. +4. Te fournir un **formulaire d'inscription** (via Jotform ou Shopify) à mettre sur + ton site et dans l'app pour remplir ces listes. + +> Note : garder les envois **honnêtes et non intrusifs** (pas de spam, pas de fausse +> urgence) — c'est ce qui protège ta marque et ton public dès 14 ans. diff --git a/docs/legendes-reseaux-sociaux.md b/docs/legendes-reseaux-sociaux.md new file mode 100644 index 0000000..204ddc1 --- /dev/null +++ b/docs/legendes-reseaux-sociaux.md @@ -0,0 +1,110 @@ +# Légendes prêtes à publier — « Gagne un mois gratuit » + +> Textes à copier-coller pour lancer la campagne Échec O Cube. +> Adapte les liens si besoin. Mot-clic officiel : **#EchecOCube** +> (Volontairement **sans emoji**, comme tes visuels.) + +--- + +## Instagram — publication (feed) + +> Utilise l'affiche carrée `affiche-carre.png` (ou la version claire). + +**Version courte** + +``` +Gagne un MOIS GRATUIT sur Échec O Cube. + +1. Parraine 3 amis — ils jouent un mois, ton mois est offert. +2. Publie 1 photo de ta partie avec #EchecOCube — une semaine offerte. + +En prime : tirage du mois pour une année gratuite + le jeu physique. +Le lien est dans la bio. + +#EchecOCube #JeuDeStrategie #FaitAuQuebec #JeuxDeSociete #Quebec +``` + +**Version plus chaleureuse** + +``` +On a une belle offre pour toi, et c'est vraiment gratuit. + +Tu joues déjà à Échec O Cube ? Fais-toi offrir un mois complet : +- Parraine 3 amis qui jouent un mois : ton mois devient gratuit. +- Ou publie une photo de ta partie avec #EchecOCube : une semaine offerte. + +Et chaque mois, on pige un gagnant pour une année gratuite plus le jeu physique. +Tout est vérifié, c'est du vrai. + +Lien dans la bio : jeu.echecocube.ca + +#EchecOCube #JeuDeStrategie #FaitAuQuebec #Quebec #JeuxDeSociete +``` + +--- + +## Instagram / Facebook / TikTok — story + +> Utilise `affiche-story.png`. Ajoute un autocollant « lien » vers jeu.echecocube.ca. + +``` +UN MOIS GRATUIT +Parraine 3 amis ou publie 1 photo avec #EchecOCube +Le lien est juste ici : jeu.echecocube.ca +``` + +--- + +## Facebook — publication + +> Facebook permet un texte plus long. Utilise l'affiche carrée. + +``` +Gagne un mois gratuit sur Échec O Cube. + +Échec O Cube, c'est notre jeu de stratégie québécois : place, relie, observe, ferme le cube. Et là, on te récompense de jouer et d'en parler. + +1) Parrainage — Invite 3 amis. Dès qu'ils installent le jeu et jouent un mois, ton mois est gratuit. + +2) Photo — Publie une photo de ta partie (à l'app ou au jeu physique) avec le mot-clic #EchecOCube. Tu reçois une semaine gratuite. Publie sur plusieurs réseaux et tu obtiens plus de chances au tirage. + +Chaque mois, on pige un gagnant : une année gratuite plus le jeu physique offert. + +Chaque récompense est vérifiée avant d'être remise. Prêt à jouer ? +jeu.echecocube.ca + +#EchecOCube #JeuDeStrategie #FaitAuQuebec #Quebec #JeuxDeSociete +``` + +--- + +## TikTok — description de vidéo + +> Idéal avec une courte vidéo : quelqu'un qui joue, puis l'affiche. + +``` +Un mois gratuit sur Échec O Cube. Parraine 3 amis ou publie ta partie avec #EchecOCube. Tirage mensuel : une année gratuite plus le jeu physique. jeu.echecocube.ca + +#EchecOCube #JeuDeStrategie #Quebec #FaitAuQuebec #JeuxDeSociete +``` + +--- + +## X (Twitter) — publication courte + +``` +Gagne un mois gratuit sur Échec O Cube. +- Parraine 3 amis (ils jouent un mois) : ton mois offert +- Publie 1 photo avec #EchecOCube : une semaine offerte +Tirage du mois : une année gratuite plus le jeu physique. +jeu.echecocube.ca +``` + +--- + +## Conseils rapides + +- **Le lien** : sur Instagram, mets-le en bio (« lien dans la bio ») ; sur les stories, utilise l'autocollant de lien. +- **Le mot-clic** : garde toujours **#EchecOCube** identique partout — c'est lui qui te permet de retrouver les photos des participants. +- **Régularité** : republie l'offre 1 à 2 fois par semaine, en alternant l'affiche foncée et l'affiche claire pour ne pas lasser. +- **Preuve sociale** : repartage (avec permission) les meilleures photos des joueurs — ça donne envie aux autres de participer. diff --git a/docs/rapport-comportement-joueurs-echecocube.md b/docs/rapport-comportement-joueurs-echecocube.md new file mode 100644 index 0000000..5e0bffe --- /dev/null +++ b/docs/rapport-comportement-joueurs-echecocube.md @@ -0,0 +1,177 @@ +# Rapport — Comportement des joueurs & recommandations pour Échec O Cube + +> Recherche approfondie multi-sources (6 angles, 27 sources, 127 affirmations +> extraites, 25 vérifiées de façon adversariale : 17 confirmées, 8 rejetées). +> Chaque conclusion indique son **niveau de confiance** et ses **sources**. +> Objectif : tirer du monde des applis de jeux des outils concrets pour faire +> grandir et fidéliser Échec O Cube (app + jeu physique), joueurs 14-40 ans. + +--- + +## En bref — les 5 leviers + +1. **Ton genre est un avantage.** Les jeux « classiques » (plateau, casse-tête, + cartes) sont **les meilleurs en rétention moyen et long terme**. Ils accrochent + un peu moins fort au jour 1, mais gardent leurs joueurs grâce à l'habitude et à + la profondeur. → Vise **l'habitude et la profondeur**, pas un feu de paille au + jour 1. +2. **Onboarding = un seul objectif à la fois.** Enseigner *placer → relier → + observer → fermer le cube* une étape à la fois, en laissant vite jouer, avec un + tutoriel qu'on peut **sauter**. +3. **Difficulté qui s'adapte.** Ajuster la difficulté selon le **risque de décrochage + réel** du joueur (et non une rampe fixe) augmente le temps de jeu de façon + mesurée (+30 %). +4. **Une raison de revenir chaque jour — mais SAINE.** Un défi/casse-tête quotidien + (façon Chess.com / Wordle), pas des mécaniques culpabilisantes. +5. **Deux publics, deux besoins.** Les plus jeunes veulent compétition/social/ + multijoueur ; les plus vieux veulent se détendre et jouer en solo. → Offrir + **les deux pistes**. + +--- + +## Conclusions détaillées (avec confiance et sources) + +### 1. Rétention : ton genre part avec une longueur d'avance — confiance ÉLEVÉE +Les jeux de plateau/casse-tête/cartes **surperforment sur la rétention moyen/long +terme** ; les jeux d'arcade ne gagnent qu'au jour 1. Pour Échec O Cube, l'atout +structurel est la **durée**, pas le pic initial. +*Sources : GameAnalytics (via appagent.com), gamigion.com.* + +### 2. Chaque palier de rétention diagnostique un problème différent — confiance ÉLEVÉE +- **J1 faible** = problème d'**onboarding** / attentes mal calées. +- **Chute au J7** = échec de **formation d'habitude** (manque de progression et de + social gratifiants). +- **J30 faible** = manque de **profondeur / nouveautés** (événements, variété). + +→ On corrige **le palier qui décroche**, au lieu de tout changer. +*Sources : solsten.io, appagent.com.* + +### 3. Repères chiffrés (à prendre comme ordres de grandeur) — confiance MOYENNE +- Médianes du marché mobile (tous genres, 2024) : **J1 ≈ 23 %, J7 ≈ 4 %, J30 < 1 %**. +- Rétention considérée « saine » : **J1 45 %+, J7 20 %+, J30 10 %+**. + +⚠️ Ce sont des médianes **tous genres** (pas spécifiques stratégie/plateau) et +plusieurs seuils plus précis ont été **rejetés** par la vérification. À utiliser +comme bornes, pas comme cibles fines. +*Sources : GameAnalytics Q1 2024 (via gamedevreports, maf.ad).* + +### 4. Onboarding d'un jeu de réflexion — confiance ÉLEVÉE +Règles vérifiées mot pour mot sur le **guide officiel d'Apple** : +- Enseigner **un objectif à la fois**, en instructions **courtes** qui s'empilent + du simple au complexe ; demander de **réussir** avant d'avancer. +- Donner un **rôle actif** et amener le joueur en **jeu autonome le plus tôt possible**. +- **Rendre le tutoriel optionnel** (bouton « Jouer directement »). Le guide cite + même Carcassonne, un jeu de plateau — directement analogue à ton cas. +*Source : developer.apple.com/app-store/onboarding-for-games.* + +### 5. Difficulté adaptative — confiance ÉLEVÉE +Une étude contrôlée (100 participants, 7 genres dont la stratégie) montre qu'ajuster +la difficulté selon la **tendance au décrochage** du joueur augmente le temps de jeu +moyen de **181 → 237 min** et l'engagement (16,4 → 21,2). → Cale la difficulté sur +le risque d'abandon, pas sur une courbe fixe. +⚠️ La version *généralisée* de cette idée a été rejetée — on retient le **résultat +mesuré**, pas une loi absolue. +*Source : MDPI Applied Sciences 2025 (15/10/5610).* + +### 6. Revenir chaque jour, sainement — confiance ÉLEVÉE +Le retour routinier s'encourage par des **récompenses quotidiennes / événements à +durée limitée** et des **fonctions sociales**. Une chute J1→J7 est le signal pour +revoir l'onboarding. +⚠️ **Attention** : ce sont exactement ces mécaniques qui glissent vers le *dark +pattern* si on les rend agressives. À doser. +*Source : Apple (onboarding-for-games).* + +### 7. Les pièges à éviter — confiance ÉLEVÉE +Une étude sur 1 104 joueurs recense **35 techniques de monétisation** trompeuses/ +agressives (8 familles). Les *dark patterns* vont **de pair avec la monétisation +agressive** : **96,8 %** des jeux « sombres » sont gratuits-avec-achats et **93,6 %** +ont des achats intégrés (contre 54 % des jeux « sains »). Ces tactiques **imitent le +jeu d'argent** et **ciblent surtout les jeunes (15-24 ans)**. +→ Comme Échec O Cube vise **dès 14 ans**, c'est un argument fort pour **rester +propre** : pas de loot boxes, pas de monnaies opaques, pas de minuteurs anti-fun, +pas de comptes à rebours culpabilisants. +*Sources : Journal of Business Ethics 2022 ; Tripodos 2026 ; arXiv 2412.05039.* + +### 8. Âge & mode de jeu — confiance MOYENNE +- Motivations : **compétition / social / accomplissement** dominent chez les jeunes + et **déclinent avec l'âge** ; « **se détendre** » monte avec l'âge (et reste la + motivation n°1 pour tous). +- Mode : les plus jeunes jouent plus en **multijoueur**, les plus vieux en **solo**. + +→ Offrir **une piste multijoueur compétitive** ET **un solo satisfaisant**, avec un +cadrage « détente » pour la moitié plus âgée du 14-40. +⚠️ Nuance importante : pour un jeu de **stratégie pure**, la motivation est « la plus +**stable** avec l'âge » — donc l'effet de séparation par âge est **plus faible** que +pour les autres genres. Recommandations directionnelles. +*Sources : Strive/Newzoo 2021, Quantic Foundry.* + +--- + +## Recommandations priorisées pour Échec O Cube + +| Priorité | Action | Pourquoi (appui) | +|---|---|---| +| **Haute** | Onboarding « un objectif à la fois » pour placer/relier/observer/fermer, jouable vite, **tutoriel sautable** | Apple (élevé) | +| **Haute** | Assumer le J1 modéré ; **optimiser J7/J30** (habitude, profondeur) | Genre classique (élevé) | +| **Haute** | **Défi quotidien** (un casse-tête/puzzle du jour), sain, sans culpabilisation | Retour routinier (élevé) | +| **Haute** | **Difficulté adaptative** (IA qui suit le risque de décrochage) | MDPI EDDA (élevé) | +| **Moyenne** | **Deux pistes** : multijoueur classé (jeunes) + solo vs IA « détente » (plus vieux) | Âge/mode (moyen) | +| **Moyenne** | **Progression visible** + social léger (classement amical, partage de partie) | Moteur du J7 (élevé) | +| **Moyenne** | **Diagnostiquer par palier** (J1 → onboarding ; J7 → habitude ; J30 → variété) | Rétention par intervalle (élevé) | +| **Garde-fou** | **Zéro dark pattern** (pas de loot boxes / monnaies opaques / minuteurs) | Protège les 14 ans (élevé) | + +> Ton programme « Gagne un mois gratuit » (parrainage + photo) reste **sain** tant +> qu'il n'ajoute ni pression trompeuse ni fausse urgence — il coche la case +> « social/récompense » sans tomber dans le dark pattern. + +--- + +## Ce que la recherche a REJETÉ (à ne pas croire) + +- « Les jeux de casse-tête ont la meilleure rétention J7 » → **rejeté** (0-3). +- « La stratégie/casse-tête vise surtout les plus vieux » → **rejeté** (0-3) : tu + peux viser les jeunes aussi. +- Plusieurs seuils de rétention « précis » (ex. J1 40 %/J7 20 %/J30 10 % comme + standard) → **rejetés** : les chiffres exacts font débat, d'où « ordres de grandeur ». +- « Le jour 1 est LE moment décisif » → **nuancé/rejeté** (1-2) : pour ton genre, + le moyen/long terme compte plus. + +--- + +## Limites de l'étude (honnêteté) + +- Plusieurs repères datent de **2024** (rétention) et **2021** (démographie) → ordres + de grandeur, pas vérités figées. +- Peu de données **spécifiques à la stratégie abstraite** ; benchmarks surtout tous + genres. +- Le lien « monétisation agressive → dark patterns » est une **corrélation** (avec + biais d'échantillon militant), pas une causalité prouvée. +- **Aucune source** ne couvre précisément les PWA, les jeux à double version + (app + physique), ni le marché québécois/francophone. + +--- + +## Questions ouvertes / prochaines recherches utiles + +1. Benchmarks de rétention **spécifiques stratégie abstraite / plateau** (idéalement + sur PWA) pour caler des cibles réalistes. +2. Leviers viraux **sains** (sans dark pattern) qui marchent pour un jeu de stratégie + pur et gratuit. +3. La **boucle app ↔ jeu physique** : lequel fait vendre l'autre, et comment + l'exploiter dans l'onboarding. +4. Le **passage éventuel au payant au printemps 2027** : quel modèle sans dénaturer + le jeu ni perdre les 14 ans. + +--- + +## Sources principales + +- Apple — *Onboarding for Games* : https://developer.apple.com/app-store/onboarding-for-games/ +- MDPI Applied Sciences 2025 (difficulté adaptative EDDA) : https://www.mdpi.com/2076-3417/15/10/5610 +- Journal of Business Ethics 2022 (monétisation prédatrice) : https://link.springer.com/article/10.1007/s10551-021-04970-6 +- Tripodos 2026 (dark patterns & jeunes) : https://tripodos.com/index.php/Facultat_Comunicacio_Blanquerna/article/view/1738 +- Solsten (drivers J1/J7/J30) : https://solsten.io/blog/d1-d7-d30-retention-in-gaming +- GameAnalytics benchmarks (via appagent) : https://appagent.com/blog/mobile-game-retention-benchmarks/ +- gamigion (rétention par genre) : https://www.gamigion.com/mobile-gaming-benchmarks-2025/ +- Chess.com case study : https://medium.com/@ismailadebiyi/how-chess-com-turned-a-64-square-board-into-a-retention-machine-44e6104fa39e +- Strive/Newzoo 2021 (générations & modes) : https://strivesponsorship.com/wp-content/uploads/2021/08/How-Different-Generations-Engage-with-Games-Report.pdf diff --git a/docs/strategie-app-jeu-physique-et-2027.md b/docs/strategie-app-jeu-physique-et-2027.md new file mode 100644 index 0000000..b733962 --- /dev/null +++ b/docs/strategie-app-jeu-physique-et-2027.md @@ -0,0 +1,159 @@ +# Stratégie — Vendre le jeu physique via l'app & préparer le payant 2027 + +> Deux questions liées, traitées ensemble parce qu'elles se nourrissent : +> **A.** faire vendre le jeu en bois grâce à l'application ; +> **B.** préparer le passage au modèle payant au printemps 2027. +> Appuyé sur la recherche comportementale (rapport précédent) + recherche ciblée +> sur le freemium→payant et les apps compagnons de jeux de plateau. + +--- + +## L'idée maîtresse : une boucle vertueuse + +``` + L'APP fait connaître et DÉMONTRE le je + │ ▲ + ▼ │ + Le joueur ACHÈTE le jeu en bois │ + │ │ + ▼ │ + Le jeu en bois RAMÈNE vers l'app (QR, compagnon) + │ │ + ▼ │ + Joueur engagé ──► candidat PREMIUM 2027 ──┘ +``` + +- L'app est **la meilleure vitrine** du jeu physique : on apprend et on aime sur + l'écran, on veut la belle version en bois. +- Le jeu physique **ramène vers l'app** (compagnon, marque, communauté). +- Un joueur qui a acheté le bois **et** utilise l'app est ton **meilleur candidat** + pour payer en 2027. +- Les ventes de bois **financent et dérisquent** la transition payante. + +--- + +## PARTIE A — Faire vendre le jeu physique via l'app + +### A1. L'app comme démo et tutoriel du jeu physique — priorité HAUTE +Les apps compagnons qui **enrichissent** le jeu physique (au lieu de le remplacer) +**font grimper les ventes** du jeu de plateau (ex. *Mansions of Madness*, +*Descent*). Pour toi : quelqu'un apprend *placer / relier / fermer le cube* sur +l'app, adore, et veut **la version en bois** à mettre sur sa table. +- **Action** : après quelques parties, message doux « Tu aimes ? Découvre la + version en bois faite au Québec. » + +### A2. Un bouton « Boutique » clair dans l'app — priorité HAUTE +Rendre l'achat **sans friction** (quelques clics, paiement de confiance). +- **Action** : page « Le jeu en bois » dans l'app, avec la vraie photo, le prix, + et un bouton d'achat. Un **magasin en ligne** (ex. Shopify) branché derrière. + *(Je peux aider à monter cette boutique — les outils Shopify sont disponibles.)* + +### A3. Mode compagnon : l'app au service de la table — priorité MOYENNE +Garde le jeu physique **au centre**, l'app en soutien : minuteur, pointage, +rappel des règles, variantes, et pourquoi pas un **adversaire solo** quand on n'a +personne en face. +- **Action** : un mode « Je joue avec mon jeu en bois » (chrono + score + règles). + +### A4. Boucle physique → app : le QR code — priorité MOYENNE +Sur la boîte / le plateau en bois, un **QR code** qui ouvre l'app (règles animées, +défi du jour, communauté). Le bois vend l'app, l'app vend le bois. + +### A5. L'angle cadeau — priorité MOYENNE +Un beau jeu en bois « Inventé au Québec 1999 », c'est un **cadeau** idéal. +- **Action** : mettre en avant « à offrir » (fêtes, Noël), et laisser les joueurs + de l'app **acheter pour un ami** (ça recoupe ton programme de parrainage). + +### A6. Ton concours photo relie déjà les deux — priorité (déjà en place) +La photo « je joue à la vraie version » ramène du monde vers l'app **et** montre le +jeu physique en vrai — l'angle le plus viral. Continue de le mettre en avant. + +--- + +## PARTIE B — Préparer le passage au payant (printemps 2027) + +> Règle d'or (confirmée par la recherche) : **ne pas forcer, démontrer la valeur.** +> Et surtout — puisque tu vises dès 14 ans — **zéro dark pattern**, jamais de +> pay-to-win dans un jeu de stratégie. + +### B1. Choisir le bon modèle — priorité HAUTE +Recommandation pour un jeu de **stratégie pure** : +- **Garder un niveau GRATUIT vraiment jouable** (le cœur du jeu reste gratuit — ne + jamais le vider). +- **Ajouter un PREMIUM qui apporte de la valeur, pas un avantage de jeu** : + grands plateaux (11×11), difficulté adaptative de l'IA, archive des défis + quotidiens, thèmes exclusifs, multijoueur classé, sans pub. +- **Jamais vendre un avantage** (ce serait dénaturer la stratégie et frustrer). + +> Sous-modèles possibles : **abonnement** léger (mensuel/annuel) OU **achat unique** +> « Premium à vie ». L'abonnement rapporte plus dans la durée ; l'achat unique passe +> mieux au Québec pour un public qui déteste les abonnements. À tester. + +### B2. Construire la communauté MAINTENANT — priorité HAUTE +« Bâtis une bonne communauté, les conversions viendront. » La **période gratuite +jusqu'en 2027** est un cadeau : sers-t'en pour **accumuler des joueurs engagés** +(tes futurs abonnés). Ton programme « Gagne un mois gratuit » alimente exactement ça. + +### B3. Récompenser les fidèles (grandfathering) — priorité HAUTE +Pour éviter tout ressentiment au moment du passage payant : +- **Statut « Membre fondateur »** aux joueurs présents avant 2027 (badge + avantages + premium gratuits X mois). Ça transforme le changement en **récompense**, pas en + punition. + +### B4. Communiquer tôt et honnêtement — priorité HAUTE +Annonce **très à l'avance** : « Gratuit jusqu'au printemps 2027 ; ensuite, un +premium optionnel — le cœur du jeu restera jouable gratuitement. » La transparence +tue le ressentiment. + +### B5. Cibler d'abord les plus engagés — priorité MOYENNE +Segmente (les « Champions » : joueurs les plus actifs) et propose-leur le premium +**en premier** — ce sont les plus susceptibles de payer et de recommander. + +### B6. Le combo qui relie A et B — priorité HAUTE +- **Acheter le jeu en bois = X mois de Premium offerts.** Un seul achat, deux + produits, valeur perçue énorme. +- Le **prix du jeu en bois** rend l'abonnement app « pas cher » par comparaison + (ancrage de prix). +- Les **ventes physiques** apportent des revenus **avant** 2027 → tu n'es pas + dépendant du seul passage payant. + +--- + +## Feuille de route jusqu'au printemps 2027 + +| Quand | Priorité | +|---|---| +| **Maintenant → 6 mois** | Boutique du jeu en bois dans l'app (A2) · concours photo (A6) · mesurer J7/J30 · faire grossir la communauté (B2) | +| **6-12 mois** | Mode compagnon (A3) · QR code sur le bois (A4) · défi quotidien · statut « Membre fondateur » lancé (B3) | +| **~6 mois avant 2027** | Annoncer le premium, honnêtement (B4) · définir le contenu gratuit vs premium (B1) · combo bois + premium (B6) | +| **Printemps 2027** | Activer le premium · offrir aux fondateurs · cibler les Champions (B5) | + +--- + +## Les pièges à éviter (rappel de la recherche) + +- **Ne pas vider le gratuit** au moment du passage payant (les joueurs partent). +- **Pas de pay-to-win** ni de mécaniques agressives (dénature la stratégie, vise mal + les 14 ans). +- **Ne pas surprendre** les joueurs : annoncer le changement longtemps d'avance. +- **Ne pas rendre l'achat compliqué** : quelques clics, paiement de confiance. + +--- + +## Limites & prochaines vérifications + +- Les repères freemium→payant sont **généraux** (peu spécifiques stratégie + abstraite / marché québécois). +- Le choix **abonnement vs achat unique** mérite d'être **testé** sur ta vraie + communauté (sondage, A/B). +- Question ouverte : quel **prix** pour le premium et pour le jeu en bois, et quel + **ratio** offert au combo — à calibrer avec tes coûts réels. + +--- + +## Sources principales + +- GameAnalytics — Apps compagnons, fusion physique/digital : https://www.gameanalytics.com/blog/companion-apps-physical-digital +- Dized — Apps compagnons de jeux de plateau : https://getdized.medium.com/board-game-companion-apps-and-new-ways-to-play-the-controversial-marriage-of-analog-and-digital-c0059a5a756 +- Freemium → payant, bonnes pratiques : https://innerview.co/blog/mastering-the-freemium-model-strategies-for-converting-free-users-to-paying-customers +- Abonnement vs freemium (jeux mobiles) : https://www.sonamine.com/blog/subscription-vs-freemium-which-business-model-works-best-for-mobile-games +- Convertir les utilisateurs gratuits (onboarding) : https://cxl.com/blog/freemium-conversions/ diff --git a/docs/strategie-recompense-social-eoc.md b/docs/strategie-recompense-social-eoc.md new file mode 100644 index 0000000..1801d01 --- /dev/null +++ b/docs/strategie-recompense-social-eoc.md @@ -0,0 +1,159 @@ +# Stratégie de récompense sociale — Échec O Cube (EOC) + +> Programme « Partage & Gagne » : transformer les joueurs en ambassadeurs pour faire +> connaître **les 2 jeux** (application EOC + jeu physique) grâce au contenu publié +> sur les réseaux sociaux. + +**Statut :** proposition à valider · **Date :** 2026-07-15 + +--- + +## 1. Objectif + +Utiliser le contenu généré par les utilisateurs (UGC) et le parrainage comme **moteur +d'acquisition gratuit**, tout en créant un pont naturel entre l'application EOC et le +jeu physique (cross-promotion). + +Résultat visé : chaque joueur satisfait amène de **nouveaux joueurs réels**, pas +seulement des « likes ». + +--- + +## 2. Principe directeur + +> **Le geste doit être facile, la récompense doit être claire.** + +C'est la principale correction par rapport à l'idée initiale de « 100 posts » (ou +25 posts avec photo) : un seuil aussi élevé décourage presque tout le monde et pousse +au spam de contenu vide, qui nuit à l'image de marque. On remplace le **volume de +posts** par **une action ciblée à forte valeur**. + +--- + +## 3. Mécanique recommandée (2 leviers) + +### Levier A — Parrainage (moteur principal) + +| Élément | Détail | +|---|---| +| Action | Inviter des amis via un **code / lien de parrainage** unique | +| Condition | Le filleul **installe l'app et crée un compte** (validation réelle) | +| Récompense parrain | **3 amis inscrits → 1 mois gratuit** (crédité après **1 mois de jeu** des filleuls) | +| Récompense filleul | **1 semaine gratuite** à l'inscription (incite à finir l'installation) | +| Pourquoi | Mesurable, difficile à frauder, amène de vrais utilisateurs actifs | + +### Levier B — Concours photo mensuel (viralité + lien entre les 2 jeux) + +| Élément | Détail | +|---|---| +| Action | Publier **1 photo** en train de jouer (app **ou** jeu physique) avec le hashtag officiel | +| Récompense garantie | **1 semaine gratuite** par participation validée (max 1 / mois / personne) | +| Bonus multi-réseaux | **1 photo suffit** pour la semaine ; chaque **réseau supplémentaire** où la photo est publiée = **1 chance de plus** au tirage (récompensé, jamais exigé) | +| Gros lot | **Tirage mensuel** : ex. 1 an gratuit + jeu physique offert | +| Pourquoi | La photo « vraie vie » du jeu physique est bien plus virale qu'un screenshot ; le tirage crée l'excitation sans exiger de volume | + +**Comment fonctionne le tirage (loterie mensuelle) :** chaque photo valide donne +**1 billet**. À la fin du mois, on **pige au hasard un seul gagnant** qui remporte le +gros lot. Tous les autres gardent leur récompense garantie (la semaine gratuite). +Avantage : **un seul gros lot à financer par mois**, peu importe le nombre de +participants — c'est le moteur de viralité sans exploser le budget. Publier sur +plusieurs réseaux ajoute des billets (plus de chances), sans bloquer ceux qui n'ont +qu'un seul réseau. + +> **Angle clé — les 2 jeux :** la photo du jeu physique ramène vers l'app, et l'app +> fait connaître le jeu physique. On centre la communication visuelle sur ce +> cross-promotion. + +--- + +## 4. Seuils et plafonds (anti-abus économique) + +| Récompense | Seuil | Plafond | +|---|---|---| +| Mois gratuit (parrainage) | 3 filleuls inscrits | Illimité tant que filleuls **actifs 1 mois+** | +| Semaine gratuite (filleul) | À l'inscription validée | 1 / compte | +| Semaine gratuite (concours) | 1 photo validée | 1 / mois / personne | +| Chances bonus au tirage | 1 réseau supplémentaire = 1 billet | Plafonner (ex. 3 réseaux max) | +| Gros lot | Tirage | 1 gagnant / mois | + +**Règle de sécurité :** on ne débloque le mois gratuit du parrain que si le filleul +reste **actif au moins 1 mois** — évite les inscriptions jetables. + +--- + +## 5. Anti-fraude (indispensable) + +Sans garde-fous, les gens créent de faux comptes / faux posts. Mesures minimales : + +1. **Filleul = compte réel** : validation e-mail + appareil unique ; le crédit tombe + après **1 mois d'activité**, pas à l'inscription. +2. **Photo concours validée** : modération manuelle au lancement (photo réelle, + hashtag présent), puis semi-automatique quand le volume monte. +3. **1 récompense de concours / mois / personne** : bloque le spam. +4. **Détection des abus** : même appareil / même IP / même moyen de paiement → alerte. +5. **Conditions d'utilisation** claires : droit de retirer une récompense en cas de + triche. + +--- + +## 6. Comparatif marché (ce qui marche ailleurs) + +| Modèle | Effort demandé | Récompense | Exemple | +|---|---|---|---| +| Parrainage | Inviter 1-3 amis | Mois gratuit / crédits | Dropbox, Duolingo | +| Share-to-unlock | 1 partage | Badge / fonctionnalité | Jeux mobiles | +| Concours photo | 1 photo + hashtag | Tirage gros lot | Marques Instagram | +| Ambassadeur | Poster régulièrement | Abonnement gratuit continu | Gymshark | + +**Point commun :** 1 action bien ciblée — jamais 100. + +--- + +## 7. Budget indicatif + +Le coût d'un mois gratuit ≈ le **coût marginal** d'un utilisateur (souvent faible pour +une app), pas le prix affiché. À comparer au **coût d'acquisition payant** (pub) qui +est généralement bien plus élevé. + +| Poste | Coût estimé | Note | +|---|---|---| +| Mois gratuit offert | Coût marginal serveur | Faible si l'app scale bien | +| Gros lot mensuel | À budgéter (ex. 1 an + jeu physique) | Poste principal, plafonné à 1/mois | +| Modération photos | Temps humain au début | Automatisable plus tard | +| Développement | Écran + suivi codes + tirage | Voir §9 | + +**À valider avant lancement :** le prix de l'abonnement EOC et la marge, pour fixer le +gros lot sans se mettre en danger. + +--- + +## 8. Indicateurs de succès (KPI) + +- **Taux de parrainage** : % d'utilisateurs qui envoient ≥ 1 invitation +- **Taux de conversion filleul** : invitations → inscriptions réelles +- **Coût d'acquisition (CAC)** via ce programme vs pub payante +- **Rétention 7 j / 30 j** des filleuls (qualité, pas juste quantité) +- **Portée sociale** : nb de photos publiées, portée du hashtag +- **Ratio fraude** : récompenses annulées / accordées + +--- + +## 9. Étapes de mise en œuvre (MVP → v1) + +1. **MVP parrainage** : code/lien unique, suivi des inscriptions, déblocage du mois + gratuit après 1 mois d'activité du filleul. +2. **Écran « Gagne un mois gratuit »** dans l'app : explication, code à partager, + compteur de filleuls. +3. **Concours photo v1** : hashtag officiel + formulaire de participation + + modération manuelle. +4. **Tableau de bord admin** : suivi des KPI et des cas de fraude. +5. **Automatisation** de la modération et du tirage quand le volume le justifie. + +--- + +## 10. Verdict + +- ✅ Bonne intuition : UGC + cross-promotion des 2 jeux. +- ❌ « 100 posts » (ou 25 avec photo) : seuil à abandonner — contre-productif. +- 👉 **Parrainage** comme moteur principal + **1 concours photo mensuel** pour la + viralité et le lien entre l'app et le jeu physique. diff --git a/prototype/boutique-app.html b/prototype/boutique-app.html new file mode 100644 index 0000000..5cd005d --- /dev/null +++ b/prototype/boutique-app.html @@ -0,0 +1,112 @@ + + +Échec O Cube — Boutique (app) + + +
+
9:41Boutique
+ +
+ + + +

En vedette

+
+
Casquette Échec O Cube
+
+
Casquette Échec O Cube
+
69,00 $CAD
+
+ + + +
+ Acheter — 69,00 $ +
Quantité limitée
+
+
+ +

Aussi disponible

+
+
Cahier de notes Échec O Cube
+
+
Cahier de notes
+
19,00 $CAD
+ Acheter — 19,00 $ +
+
+ +

Bientôt

+
+
+
+
Échec O Cube — Édition bois
+
Campagne La Ruche · printemps 2027
+

Le vrai jeu en bois massif, en micro-quantités par grandeurs et couleurs. Sois averti en premier.

+ Rejoindre la liste d'attente +
+
+ +

Paiement sécurisé · echecocube.ca

+
+
+ + + diff --git a/prototype/boutique-jeu-bois.html b/prototype/boutique-jeu-bois.html new file mode 100644 index 0000000..2f875a4 --- /dev/null +++ b/prototype/boutique-jeu-bois.html @@ -0,0 +1,148 @@ + + + +Boutique — Échec O Cube, édition bois + + +
+ Échec O Cube + Boutique +
+ +
+
+
+
+
Emplacement — ta vraie photo du jeu en bois ici
+
+
+
Jeu de stratégie · Inventé au Québec 1999
+

Échec O Cube — Édition bois

+

Le vrai jeu, en bois massif : place, relie, observe, ferme le cube.

+
Bientôt · Lancement au printemps 2027
+
+ Offre app + jeu + À la sortie, ta commande inclura 3 mois de Premium offerts sur l'application Échec O Cube. +
+ +
+ Paiement sécurisé + Livraison au Québec et au Canada + Fait à la main +
+
+
+ +
+ Maquette — stratégie liste d'attente : le jeu en bois sort au printemps 2027. + Cette page sert à capter dès maintenant les gens intéressés (courriel), pour + lancer en force en 2027. Pour la publier sur ta boutique Shopify, il me faut : ta + photo du jeu en bois et ton autorisation Shopify. Design et textes prêts. +
+ +
+

Pourquoi la version en bois

+
+
Matière

Bois massif

Un objet durable et chaleureux, agréable à manipuler, qui a sa place sur une table.

+
Origine

Conçu au Québec

Un jeu de stratégie original inventé au Québec en 1999.

+
Cadeau

À offrir

Un beau cadeau pour les amateurs de jeux de réflexion, de 14 à 99 ans.

+
+
+ +
+
+
+

Pas encore sûr ? Essaie gratuitement

+

Apprends et joue à Échec O Cube sur l'application avant d'acheter la version bois.

+
+ Jouer sur l'app +
+
+
+ + +
Démo — ici on enregistrera ton courriel pour la liste d'attente.
+ + + diff --git a/prototype/courriel-bienvenue.html b/prototype/courriel-bienvenue.html new file mode 100644 index 0000000..ac26c80 --- /dev/null +++ b/prototype/courriel-bienvenue.html @@ -0,0 +1,100 @@ + + + + + + +Échec O Cube — Bienvenue sur la liste d'attente + + + +
Merci ! On te préviendra en premier pour la campagne La Ruche 2027.
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Échec O Cube +
 
+

Bienvenue

+

Tu es sur la liste.

+

+ Merci de ton intérêt pour Échec O Cube — le jeu de stratégie inventé + au Québec en 1999 : place, relie, observe, ferme le cube. +

+

+ Tu es maintenant inscrit à la liste d'attente de la version en bois massif. Ce que ça t'apporte : +

+
+ + + + + + + + + + + + + +
Averti en premier au lancement de la campagne La Ruche, au printemps 2027.
Le statut de Membre fondateur (avantages réservés aux premiers).
Pas de spam : on t'écrit seulement quand c'est important.
+
+ + + + +
+ Joue gratuitement maintenant +
+

En attendant, découvre l'application : jeu.echecocube.ca

+
 
+

+ Échec O Cube · Jeu de stratégie inventé au Québec, 1999
+ jeu.echecocube.ca  ·  + echecocube.ca +

+

+ Tu reçois ce courriel car tu t'es inscrit à la liste d'attente d'Échec O Cube. + Se désabonner : {% unsubscribe %} +

+
+
+ + diff --git a/prototype/courriel-la-ruche.html b/prototype/courriel-la-ruche.html new file mode 100644 index 0000000..102b556 --- /dev/null +++ b/prototype/courriel-la-ruche.html @@ -0,0 +1,83 @@ + + + + + + +Échec O Cube — La campagne La Ruche est lancée + + +
Membre fondateur, c'est maintenant. Accès en premier.
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Échec O Cube +
 
+ Campagne La Ruche · Printemps 2027 +
+

C'est parti

+

Le jeu en bois arrive.

+

+ La campagne La Ruche pour lancer Échec O Cube en bois massif est en ligne. +

+

+ Comme tu es sur notre liste d'attente, tu y accèdes en premier — et tu peux devenir + Membre fondateur : édition en micro-quantités, par grandeurs et couleurs. +

+
+ + + + +
+ Découvrir la campagne La Ruche +
+

Remplace ce lien par l'adresse de ta campagne La Ruche.

+
+

+ Merci de faire partie de l'aventure depuis le début. +

+
 
+

+ Échec O Cube · Jeu de stratégie inventé au Québec, 1999
+ jeu.echecocube.ca  ·  + echecocube.ca +

+

Se désabonner : {% unsubscribe %}

+
+
+ + diff --git a/prototype/courriel-recompense.html b/prototype/courriel-recompense.html new file mode 100644 index 0000000..42e039d --- /dev/null +++ b/prototype/courriel-recompense.html @@ -0,0 +1,94 @@ + + + + + + +Échec O Cube — Gagne un mois gratuit + + +
Parraine 3 amis ou publie une photo — c'est tout.
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Échec O Cube +
 
+

Récompense

+

Gagne un mois gratuit.

+

+ Deux façons simples d'y arriver sur Échec O Cube. Choisis la tienne : +

+
+ + + + + + + + +
+

1 · Parrainage

+

Parraine 3 amis. Dès qu'ils installent le jeu et jouent un mois, ton mois est offert.

+
 
+

2 · Photo

+

Publie 1 photo de ta partie avec le mot-clic #EchecOCube : une semaine offerte, et chaque réseau en plus te donne une chance de plus au tirage.

+
+
+

+ Tirage du mois : un gagnant pigé au hasard remporte une année gratuite + le jeu en bois. +

+
+ + + + +
+ Obtenir mon lien de parrainage +
+

Chaque récompense est vérifiée avant d'être remise.

+
 
+

+ Échec O Cube · Jeu de stratégie inventé au Québec, 1999
+ jeu.echecocube.ca  ·  + echecocube.ca +

+

Se désabonner : {% unsubscribe %}

+
+
+ + diff --git a/prototype/formulaire-liste-attente.html b/prototype/formulaire-liste-attente.html new file mode 100644 index 0000000..c8dd86d --- /dev/null +++ b/prototype/formulaire-liste-attente.html @@ -0,0 +1,94 @@ + + +Échec O Cube — Liste d'attente + + +
+
Échec O Cube
+
+
+
Lancement · printemps 2027
+
Liste d'attente
+

Sois averti en premier pour le jeu en bois

+

Le jeu de stratégie québécois arrive en bois massif via la campagne La Ruche. Inscris-toi pour être prévenu en premier et devenir Membre fondateur.

+ +
+ + + + + + + +
+ L'app gratuite + Le jeu en bois + Les deux +
+ + + + +

On t'écrit seulement quand c'est important.

+
+ +
+
Merci — tu es sur la liste.
+

On te préviendra en premier pour La Ruche 2027. En attendant, joue sur jeu.echecocube.ca

+
+
+
+ + diff --git a/prototype/gagne-mois-gratuit.html b/prototype/gagne-mois-gratuit.html new file mode 100644 index 0000000..035cec6 --- /dev/null +++ b/prototype/gagne-mois-gratuit.html @@ -0,0 +1,284 @@ + + + + + + + +Échec O Cube — Récompenses + + + +
+
9:41Échec O Cube
+
+ + + + +
+

Parrainage

+
+
+ Invite 3 amis + Ils installent Échec O Cube et jouent un mois : ton mois est offert. +
0/ 3 amis actifs
+
+
+
+ echecocube.ca/i/CUBE-7Q4K + +
+
+
+ + +
+

Photo

+
+
+ Publie 1 photo + Une photo de ta partie avec le mot-clic #EchecOCube. Une semaine offerte. Chaque réseau en plus : une chance de plus au tirage. +
+
+ +
+
+

Lien de ta publication

+ +

Où l’as-tu publiée ?

+
+ + + +
+
+ +
+
+
+
+ + +
+

Tirage du mois

+
+
+ Une année gratuite + le jeu physique + Chaque photo valide te donne un billet. En fin de mois, un seul gagnant est pigé au hasard. + Tes chances : 0 billet(s) +
+
+
+ + +
+

Mode démo — pour tester l’écran

+
+ + +
+
+ +
+
+ +

Récompenses créditées après vérification. Faux comptes et fausses photos refusés.

+
+
+ +
+ + + + diff --git a/prototype/jeu-zoom.html b/prototype/jeu-zoom.html new file mode 100644 index 0000000..7aa21cb --- /dev/null +++ b/prototype/jeu-zoom.html @@ -0,0 +1,229 @@ + + +Échec O Cube — Plateau, coordonnées et cadran + + +
+ Échec O Cube · Cadran + Case : + Plateau 9 × 9 +
+ +
+ + + + +
+
+
+
+
+
+
+
+
+ + + +
+ + +
+ + + + + + + +
Cadran numérique EOC — jouez au temps à deux : touche ton cadran après ton coup pour lancer celui de l'adversaire.
+
+ + +
+ + + +
100%
+ + +
Baisse le zoom pour voir tout le plateau · monte-le pour agrandir les pièces
+
+ + + diff --git a/prototype/presentation-echecocube.html b/prototype/presentation-echecocube.html new file mode 100644 index 0000000..8383dd0 --- /dev/null +++ b/prototype/presentation-echecocube.html @@ -0,0 +1,23 @@ + +Échec O Cube — Présentation + +
Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6
+
1 / 6
+
Flèches ← → ou clic sur la slide · F pour plein écran
+ \ No newline at end of file