{"version":"https://jsonfeed.org/version/1.1","title":"Stephen Ajulu","home_page_url":"https://ajulu.netlify.app/","feed_url":"https://ajulu.netlify.app/tags/premium/feed.json","description":"Hello, I'm Stephen Ajulu, a seasoned multidisciplinary tech professional with over a decade of experience. I build impactful solutions using design, tech, and engineering in the pursuit of impact.","icon":"https://ajulu.netlify.app/images/me.jpg","authors":[{"name":"Stephen Ajulu","url":"https://stephenajulu.com","avatar":"https://ajulu.netlify.app/images/me.jpg"}],"items":[{"id":"https://ajulu.netlify.app/posts/premium-test-post/","url":"https://ajulu.netlify.app/posts/premium-test-post/","title":"Premium Member Test: The Future of aju.lu","summary":"Welcome to the first premium-enabled post on aju.lu. This page is designed to test our new membership infrastructure and content gating.\nBelow this paragraph, you will see a gated section. If you are a Premium Member, you will see the secret roadmap. If you are a free member or logged out, you will see the locked access message.\n🚀 Secret Roadmap (Premium Only) Because you are a Premium Member, you are seeing this exclusive content:\n","content_html":"\u003cp\u003eWelcome to the first premium-enabled post on \u003cstrong\u003eaju.lu\u003c/strong\u003e. This page is designed to test our new membership infrastructure and content gating.\u003c/p\u003e\n\u003cp\u003eBelow this paragraph, you will see a gated section. If you are a \u003cstrong\u003ePremium Member\u003c/strong\u003e, you will see the secret roadmap. If you are a free member or logged out, you will see the locked access message.\u003c/p\u003e\n\u003chr\u003e\n\u003cdiv class=\"member-gate\" data-role=\"premium\"\u003e\n    \u003cdiv class=\"unlocked-content\" style=\"display:none;\"\u003e\n        \u003ch3 id=\"-secret-roadmap-premium-only\"\u003e🚀 Secret Roadmap (Premium Only)\u003c/h3\u003e\n\u003cp\u003eBecause you are a Premium Member, you are seeing this exclusive content:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eDirect M-Pesa Integration:\u003c/strong\u003e We are refining the automated role assignment via Paystack.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePrivate Discord/Telegram:\u003c/strong\u003e Plans to launch a members-only backchannel for direct consulting and advice.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEarly Access:\u003c/strong\u003e You will receive full-length tech deep-dives 7 days before they go public.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePremium Notes:\u003c/strong\u003e Raw, unedited thoughts on craft and engineering shared only with our core supporters.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"thank-you-for-supporting-the-craft\"\u003eThank you for supporting the craft!\u003c/h2\u003e\n    \u003c/div\u003e\n    \u003cdiv class=\"locked-message\"\u003e\n        \u003cdiv class=\"gate-overlay\"\u003e\n            \u003cspan class=\"gate-icon\"\u003e🔒\u003c/span\u003e\n            \u003ch3\u003ePremium Insight\u003c/h3\u003e\n            \u003cp\u003eThis deep-dive is exclusive to \u003cstrong\u003ePremium Members\u003c/strong\u003e.\u003c/p\u003e\n            \u003cdiv class=\"gate-actions\"\u003e\n                \u003ca href=\"/membership\" class=\"btn\"\u003eUnlock Access\u003c/a\u003e\n                \u003cbutton class=\"btn-secondary\" onclick=\"netlifyIdentity.open('login')\"\u003eAlready a member? Log in\u003c/button\u003e\n            \u003c/div\u003e\n        \u003c/div\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\n    (function() {\n        function checkAccess() {\n            const user = window.netlifyIdentity \u0026\u0026 netlifyIdentity.currentUser();\n            const isPremium = user \u0026\u0026 user.app_metadata \u0026\u0026 user.app_metadata.roles \u0026\u0026 user.app_metadata.roles.includes('premium');\n            \n            document.querySelectorAll('.member-gate').forEach(gate =\u003e {\n                const unlocked = gate.querySelector('.unlocked-content');\n                const locked = gate.querySelector('.locked-message');\n                if (isPremium) {\n                    unlocked.style.display = 'block';\n                    locked.style.display = 'none';\n                } else {\n                    unlocked.style.display = 'none';\n                    locked.style.display = 'block';\n                }\n            });\n        }\n\n        if (window.netlifyIdentity) {\n            netlifyIdentity.on('init', checkAccess);\n            netlifyIdentity.on('login', checkAccess);\n            netlifyIdentity.on('logout', checkAccess);\n        }\n    })();\n\u003c/script\u003e\n\n\u003cstyle\u003e\n.locked-message {\n    padding: 40px;\n    background: var(--base-offset-color);\n    border-radius: 8px;\n    border: 1px dashed var(--highlight-color);\n    text-align: center;\n    margin: 30px 0;\n}\n\n.gate-icon {\n    font-size: 2rem;\n    display: block;\n    margin-bottom: 10px;\n}\n\n.gate-actions {\n    display: flex;\n    gap: 15px;\n    justify-content: center;\n    margin-top: 20px;\n}\n\n.btn-secondary {\n    background: transparent;\n    border: 1px solid var(--highlight-color);\n    color: var(--highlight-color);\n    padding: 10px 20px;\n    border-radius: 6px;\n    cursor: pointer;\n    font-weight: 600;\n}\n\u003c/style\u003e\n\n\u003chr\u003e\n\u003ch3 id=\"public-closing\"\u003ePublic Closing\u003c/h3\u003e\n\u003cp\u003eThe content above is protected by our Netlify Identity + Paystack automation bridge. This ensures that only those who support the platform can access high-value insights.\u003c/p\u003e\n","date_published":"2026-05-02T00:00:00Z","image":"https://ajulu.netlify.app/images/hero.png","tags":["membership","premium","roadmap"]}]}