{"id":1463455,"date":"2026-08-27T10:40:15","date_gmt":"2026-08-27T09:40:15","guid":{"rendered":"https:\/\/webpixelia.com\/portfolio\/zeky-app\/"},"modified":"2026-08-27T10:40:15","modified_gmt":"2026-08-27T09:40:15","slug":"zeky-app","status":"publish","type":"project","link":"https:\/\/webpixelia.com\/en\/portfolio\/zeky-app\/","title":{"rendered":"Zeky.app"},"content":{"rendered":"","protected":false},"excerpt":{"rendered":"<p>A SaaS platform that uses AI to transform any document into ready-to-use Anki flashcards. Zeky App automates the creation of voiced and transliterated decks for Arabic, with a credit and subscription system managed via Stripe.<\/p>\n","protected":false},"featured_media":1463454,"template":"","meta":{"_seopress_titles_title":"Zeky App \u2013 Anki Flashcard Generator powered by AI | Webpixelia","_seopress_titles_desc":"Development of Zeky App, a Python\/Flask SaaS that generates Anki packages using AI (Claude) from PDFs, images or Word documents, with Stripe payment and Supabase authentication.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_uag_custom_page_level_css":"","image_header":1463449,"url_video":"","url_site":"https:\/\/zeky.app","cms":"Application SaaS full-stack (Python \/ Flask \/ Supabase \/ Stripe)","cahier_des_charges":"The Zeky App project was born from a very real need faced by teachers and learners of Arabic: creating high-quality Anki flashcard decks, respecting the specificities of Arabic script (RTL direction, vocalization\/harak\u0101t, transliteration), remains a long and tedious task when done manually.\n\nBetween formatting each card individually, managing categories and subcategories, and adding vocalization or audio, producing a complete deck could take several hours for a simple vocabulary chapter.\n\nThe main objective was therefore to transform a local flashcard creation tool into a true SaaS application: maintaining a complete and free editor, while adding AI-assisted card generation capable of transforming any course material (PDF, image, Word, text) into a structured and ready-to-use Anki deck, with a credit-based and subscription-based business model.","apercu_developpemants":"<h3>Redesign of a local tool into a monetizable SaaS application<\/h3>\nZeky App started as a local flashcard editor (using Flask + file storage) and evolved into a connected application: user authentication, cloud database, online payment, and a credit system, all while maintaining the original tool's ease of use.\n<h3>Complete flashcard editor<\/h3>\n<ul>\n \t<li>Front and back with automatic writing direction detection (RTL conversion for Arabic)<\/li>\n \t<li>Dedicated Arabic mode: word, transliteration, and translation in three separate fields<\/li>\n \t<li>Formatting bar (bold, italic, underlined, strikethrough) and real-time preview<\/li>\n \t<li>Hierarchical organization: Category &gt; Subcategory &gt; Card, fully drag-and-drop control<br \/><br \/><\/li>\n \t<li>CSV\/Excel import, import of existing .apkg packages<\/li>\n<\/ul>\n<h3>AI-powered flashcard generation (Claude \/ Anthropic)<\/h3>\n<ul>\n \t<li>Upload of any source document (PDF, scanned image, Word, plain text) with automatic content extraction (pymupdf, python-docx)<\/li>\n \t<li>Call to the Claude API with a dedicated prompt system: generation of structured flashcards, automatic addition of harak\u0101t to Arabic words, transliteration, and hierarchical tags (Vocabulary::Verbs)<\/li>\n \t<li>Interactive preview before import: card-by-card selection, inline editing, batch import into the active deck<\/li>\n<\/ul>\n<h3>System of Stripe Credits and Payments<\/h3>\n<ul>\n \t<li>Four offers (one-off credit packs and unlimited monthly subscriptions) managed via Stripe Checkout and the Stripe billing portal<\/li>\n \t<li>Stripe webhooks to automatically credit the user account upon payment confirmation, with tracking of active subscriptions<\/li>\n \t<li>Credit is only debited if AI generation is successful, ensuring users are never penalized for failure<\/li>\n<\/ul>\n<h3>Authentication and Account Management via Supabase<\/h3>\n<ul>\n \t<li>Registration, login, and session refresh based on Supabase Auth (JWT)<\/li>\n \t<li>Password recovery with a strength indicator and toggleable input fields<\/li>\n \t<li>Dedicated PostgreSQL RPC functions for debiting and crediting user balances, designed to remain atomic and reliable<\/li>\n<\/ul>\n<h3>Export and Media<\/h3>\n<ul>\n \t<li>Generation of native .apkg files, compatible with Anki desktop and mobile (via genanki)<\/li>\n \t<li>Integrated text-to-speech (edge-tts) on the front or back of cards<\/li>\n \t<li>Four visual themes and a saved dark mode<\/li>\n<\/ul>\n<h3>Interface Responsive design and mobile navigation<\/h3>\n<ul>\n \t<li>Redesigned navigation for small screens (hamburger menu, dedicated mobile overlay)<\/li>\n \t<li>Creation popups and modals to streamline each step (AI upload, preview, payment, help)<\/li>\n<\/ul>","details_techniques":"<h3>Results<\/h3>\nA SaaS application that transforms creating Anki flashcards from a manual and repetitive task into a fast, structured process accessible to all levels:\n\n<strong>Product Experience &amp; Innovation<\/strong>\n\nA new way to prepare your revision materials, designed to eliminate the friction of formatting:\n<ul>\n \t<li>Generate a complete deck from a simple PDF lesson, a photo of a textbook, or a Word file.<\/li>\n \t<li>Automatic voice and transliteration for Arabic, usually the most time-consuming step.<\/li>\n \t<li>Preview and validate each card before importing, to maintain complete control over the generated content.<\/li>\n \t<li>A 100% self-guided workflow: upload, generate, select, and export, all without ever leaving the application.<\/li>\n<\/ul>\nThis approach reduces a task that would normally take hours to just a few minutes, while maintaining the pedagogical quality expected by Arabic language teachers.\n\n<strong>Viable Business Model<\/strong>\nTransition from a local, free tool to a monetized, sustainable product, with a hybrid model designed to adapt to all use cases:\n<ul>\n \t<li>One-off credits for occasional needs, unlimited subscriptions for regular users<\/li>\n \t<li>Billing and subscription management delegated to Stripe (Checkout + customer portal), without developing a custom payment interface<\/li>\n \t<li>Improved reliability of payment flows in production: correction of a Stripe webhook pointing to an obsolete Railway URL, a source of silent account credit failures<\/li>\n<\/ul>\n<strong>Technical Reliability<\/strong>\n<ul>\n \t<li>AI generation processing in the background to avoid Gunicorn timeouts on large files<\/li>\n \t<li>Secure authentication via JWT with automatic session refresh<\/li>\n \t<li>Database and business logic centralized on Supabase (PostgreSQL), with RPC functions to guarantee the integrity of credit balances<\/li>\n<\/ul>","screens":"[{\"screen_titre\":\"Page Accueil Desktop\",\"screen_image_id\":1463448},{\"screen_titre\":\"Page Accueil Tablette\",\"screen_image_id\":1463453},{\"screen_titre\":\"Page Accueil Mobile\",\"screen_image_id\":1463450},{\"screen_titre\":\"Page Compte\",\"screen_image_id\":1463447},{\"screen_titre\":\"Page Prix\",\"screen_image_id\":1463452},{\"screen_titre\":\"Page Editeur de paquets\",\"screen_image_id\":1463451}]","technique":"[\"D\u00e9veloppement sur mesure\"]","technologies":"[\"HTML\",\"CSS\",\"JS\",\"API\",\"PostgreSQL\",\"Python\",\"Flask\",\"SupaBase\",\"Stripe\",\"Anthropic Claude API\",\"edge-tts\",\"Railway\"]","resultats_images":"[]"},"project_category":[177],"project_tag":[202,206,209,188,189,213],"class_list":["post-1463455","project","type-project","status-publish","has-post-thumbnail","project_category-saas","project_tag-anki-education","project_tag-ia-claude-api","project_tag-python-flask","project_tag-saas","project_tag-stripe","project_tag-supabase"],"uagb_featured_image_src":{"full":["https:\/\/webpixelia.com\/wp-content\/uploads\/2026\/07\/zeky-devices-mockup.webp",960,640,false],"thumbnail":["https:\/\/webpixelia.com\/wp-content\/uploads\/2026\/07\/zeky-devices-mockup-150x150.webp",150,150,true],"medium":["https:\/\/webpixelia.com\/wp-content\/uploads\/2026\/07\/zeky-devices-mockup-300x200.webp",300,200,true],"medium_large":["https:\/\/webpixelia.com\/wp-content\/uploads\/2026\/07\/zeky-devices-mockup-768x512.webp",768,512,true],"large":["https:\/\/webpixelia.com\/wp-content\/uploads\/2026\/07\/zeky-devices-mockup.webp",960,640,false],"1536x1536":["https:\/\/webpixelia.com\/wp-content\/uploads\/2026\/07\/zeky-devices-mockup.webp",960,640,false],"2048x2048":["https:\/\/webpixelia.com\/wp-content\/uploads\/2026\/07\/zeky-devices-mockup.webp",960,640,false]},"uagb_author_info":{"display_name":"Jonathan Webpixelia","author_link":"https:\/\/webpixelia.com\/en\/"},"uagb_comment_info":0,"uagb_excerpt":"A SaaS platform that uses AI to transform any document into ready-to-use Anki flashcards. Zeky App automates the creation of voiced and transliterated decks for Arabic, with a credit and subscription system managed via Stripe.","_links":{"self":[{"href":"https:\/\/webpixelia.com\/en\/wp-json\/wp\/v2\/project\/1463455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webpixelia.com\/en\/wp-json\/wp\/v2\/project"}],"about":[{"href":"https:\/\/webpixelia.com\/en\/wp-json\/wp\/v2\/types\/project"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webpixelia.com\/en\/wp-json\/wp\/v2\/media\/1463454"}],"wp:attachment":[{"href":"https:\/\/webpixelia.com\/en\/wp-json\/wp\/v2\/media?parent=1463455"}],"wp:term":[{"taxonomy":"project_category","embeddable":true,"href":"https:\/\/webpixelia.com\/en\/wp-json\/wp\/v2\/project_category?post=1463455"},{"taxonomy":"project_tag","embeddable":true,"href":"https:\/\/webpixelia.com\/en\/wp-json\/wp\/v2\/project_tag?post=1463455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}