Flask x Stripe Payment Links...
TL;DR
v0.2 of the Flask Powered CMS.
From Hugo Galleries to Mental Health and RealEstate managed via CMS (?)
+++ Testing Cursor/Appimage launcher +++ using Pagespeed and Google Search console API (GSC) here
Intro
I recently found this cool blog: https://kerkour.com/create-problems-to-sell-the-solution
While finding resources for PB.
The author seems to be the creator of Markdown Ninja: https://github.com/bloom42/markdown-ninja
Markdown-first CMS for bloggers, minimalists and startups. Open Source alternative to Medium, Mailchimp and Substack - https://markdown.ninja
I love the website design btw, also the trol part
In Markdown They Trust
It seems to be another markdown lover :)
Same to https://typlog.com/
Let ideas flow in your familiar editing environment with the complete markdown syntax.
Which some open sources themes like https://github.com/typlog/nezu
A CMS with Flask
Version 0.2 coming!
After tinkering with the v0.1 (vibecoding), each time I got a different result.
So how about to combine all the good sides of all those for a v0.2?
In the end, it would be great to just plug any OSS MIT Licensed Astro or HUGO SSG available.
But we have to get started with something first :)
Mental Health
And thaaats it: http://psikolognevinkeskin.info/
as per https://github.com/JAlcocerT/morita-web
With stripe, you can prefilled emails like: ?prefilled_email=whateverthatis@gmail.com
So users that are onboarded to your CMS/SaaS, will have that prefilled already.
For example something like: https://buy.stripe.com/28EdRb4CndpJctnbZ5cwg00?prefilled_email=whateverthatis@gmail.com
See how to create stripe payment links
For this one I did not required the CMS in the end: cal and whatsapp boubles were enough.
Cal.com + google +
https://www.springhealth.com/
plays well!
Checks:
https://pagespeed.web.dev/analysis/https-psikolognevinkeskin-info/akk4rhictv?form_factor=mobile
https://web-check.xyz/check/https%3A%2F%2Fpsikolognevinkeskin.info%2F
- No broken links
sudo apt-get install -y linkchecker
linkchecker ./public/ \
--ignore-url "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/" || echo "LinkChecker found errors, but continuing..."
How to Use LinkChecker with Docker ā¬
- Use LinkChecker with their GHCR Image
docker run --rm -it -u $(id -u):$(id -g) ghcr.io/linkchecker/linkchecker:latest --verbose https://www.example.com
Btw, the pages speed insights, can be done via API: see this .md
So if you want to scrap business websites + generate the analysis and propose a better solution….its up to you :)
Also…
…Google Search Console API? GSC š
Yes, you absolutely can access Google Search Console (GSC) data programmatically via an API.
The primary method is the Google Search Console API (formerly Webmaster Tools API). This is the official, direct interface Google provides for developers to pull data like search performance, crawl errors, and sitemaps.
The GSC API is a powerful RESTful interface that allows you to automate tasks and integrate GSC data into your own applications, reporting dashboards, or analysis tools.
Key API Capabilities:
- Search Analytics: This is the most used part. It allows you to query performance data (clicks, impressions, CTR, position) for specific queries, pages, countries, or devices over a defined date range.
- Sitemaps: You can submit new sitemaps, get information about already submitted ones, and delete old ones.
- URL Inspection: You can programmatically check the current indexing status of any URL on your site, including coverage, mobile usability, and rich results status.
- Crawl Errors: You can retrieve a list of crawl errors found by Googlebot.
Tools to Help Access the API
While you can write custom code in Python, JavaScript, or any language to interact with the API, several tools and libraries simplify the process:
- Python Libraries (Most Popular)
- Google API Client Library for Python: This is the official library and the most common way to interact with the GSC API. It handles authentication (OAuth 2.0) and data retrieval. This is often used for custom data pipelines and automation.
- Pandas: Once you pull the data using the API client, libraries like Pandas are essential for structuring, filtering, and analyzing the search data.
- Low-Code/No-Code Tools (Recommended for Automation)
For your use case of integrating with an n8n workflow, low-code/no-code tools are highly effective:
- n8n (Custom HTTP Request Node): While n8n may not have a dedicated GSC node (it focuses more on the standard Google services like Sheets or Drive), you can use the generic HTTP Request node or a Code node to make direct calls to the GSC REST API. This allows for deep customization within your existing workflow environment.
- Google Apps Script (GAS): If you want to pull GSC data directly into Google Sheets, GAS is the easiest solution. You can write a script that authenticates, queries the GSC API, and dumps the results into a sheet on a scheduled trigger.
- Third-Party Connectors (Supermetrics, Fivetran): These are commercial ETL tools that provide pre-built connectors to GSC, automating the process of pulling data into data warehouses or BI tools with zero coding required.
Summary for your Workflow
To integrate GSC data into an n8n workflow, the most practical approach is:
- Use the HTTP Request Node to call the GSC API endpoints directly.
- Authenticate using OAuth 2.0 credentials generated via the Google Cloud Console, which n8n handles well.
- Use the JSON data output from the HTTP Request node in subsequent nodes for reporting or analysis.
Real Estate
Time to put an end to this one!
Btw, you can track with webscrapping (via bs4) the price evolution: https://github.com/JAlcocerT/Scrap_Tools/tree/main/Idealista
And because having few separated services is a burdden.
I wanted to consolidate the ssg + admin authentication to add new properties + the last version of st scrapping
A workflow like n8n x (scrap+Github)+CICD to add a markdown post and get automatical SSG build….sounds like a plan!
This will need to be leveraged with scrapping, but it can be done!
So…the last version of realestate proposal with PB is a total and complete overkill.
Same for the thought of doing a Gitea API connection + n8n or Flask CMS v2.x
The vibe coded gradient in the landing of these flask web apps is veeery nice
Conclusions
Its definitely hard to sale sth to people.
I believe in some podcast from A. Hormozi he says: Sell to rich people, they pay more/better
It was such a very simple statement, and how much truth there is inside of it :)
With these 2 setups ends my custom/individual website creation. For good.
I will show the DIY way to anyone that can be interested, but it wont be a
Time to scale with all the learnings: bring more clients, automatically and ones that actually see/can get value on a site.
Because its not about the tech stack, but the solutions provided.
Simplicity always wins and it seems that for now there wont be a flaskcms2.0.
Lately I…
This year ive tried a lot, and lately these ones:
- Have tried Cursor: https://cursor.com/dashboard
As I consumed all windsurf tokens very fast recently…
#https://cursor.com/downloads
cd ~/Downloads
#mkdir ~/Applications
#cd ~/Applications
#chmod +x Cursor-*.AppImage
#./Cursor-*.AppImage
chmod +x Cursor-1.4.3-x86_64.AppImage
./Cursor-1.4.3-x86_64.AppImage
But that just executes it once.
Cursor has brought recently CLI support, similarly to Oterm with Ollama
- So I got to know: appimagelauncher
sudo add-apt-repository ppa:appimagelauncher-team/stable
sudo apt update
sudo apt install appimagelauncher
mkdir ~/Applications #place your *.AppImages there and they will integrate with your linux!
This is great for homelab as well!
I also saw this other IDE came out: https://www.dereference.dev/
These agentic IDEs consume a lot of resources, so I revisted Stacer to monitor my x13 status.
Learnt aout https://temporal.io/
What if your code was crash-proof?
Temporal.io is an open-source platform that enables the creation of durable and reliable distributed applications.
It acts as a workflow orchestration engine, allowing developers to write complex, long-running business processes as code in standard programming languages like Go, Java, Python, and TypeScript.
More about temporal… š
The platform handles the complexities of state management, retries, and failure recovery, essentially allowing you to write your application logic as if system failures don’t exist.
Core Concepts
At its core, Temporal is built on two main components:
Workflow Executions: A workflow is the durable, reliable, and stateful part of your application logic. You write a workflow as a function that describes the sequence of steps (activities) to be executed. The key feature of a workflow is its “durable execution,” which means its state is persisted and can be restored at any point, even if a server crashes or the process is interrupted. This enables workflows to run for seconds, days, or even years without losing state.
Activities: Activities are the individual, short-lived tasks that make up a workflow. They are the actual business logic that performs a specific job, such as making an API call, sending an email, or processing a payment. Activities are not durable and can be retried automatically by Temporal if they fail.
The Temporal Service acts as the central orchestrator, keeping track of the state of all workflows and managing task queues. Worker Processes, which you deploy and run, execute your workflow and activity code by polling these task queues for tasks.
How it Solves a Problem
In traditional microservices architecture, orchestrating a complex, multi-step business process can be challenging.
Developers often have to build custom logic to handle:
- Retries and Timeouts: Manually writing code to retry failed operations or handle timeouts.
- State Persistence: Ensuring the state of a long-running process is saved and can be recovered after a failure.
- Failure Recovery: Implementing logic to handle partial failures and resume a process from where it left off.
- Distributed Transactions: Coordinating a series of operations across multiple services to ensure atomicity.
Temporal simplifies these issues by providing a platform that handles them out-of-the-box.
If an activity fails, Temporal automatically retries it according to a predefined policy. If a worker process crashes, the workflow state is preserved, and a new worker can resume the execution from the last successful step.
This shifts the focus from building complex plumbing for reliability to simply writing the business logic.
Key Features and Use Cases
Temporal’s key features include:
- Durable Execution: Guarantees that your application code will execute to completion regardless of failures.
- Automatic Retries: Built-in retry mechanisms for activities and workflows.
- Developer-Friendly: Write workflows using standard code and SDKs for multiple languages.
- Scalability: Designed to handle a high volume of concurrent workflows.
- Observability: Provides tools like a Web UI and CLI to monitor and debug workflow executions.
Temporal is a great fit for a variety of use cases, including:
- Payment Processing: Orchestrating complex payment flows with multiple steps like authorization, capture, and refunds.
- SaaS Provisioning: Automating the process of setting up new user accounts or services, which often involves multiple steps across different systems.
- Data Pipelines: Managing and orchestrating complex data transformation and processing jobs.
- Human-in-the-Loop Workflows: Building processes that require human intervention, such as approving a document or a transaction.
- AI/ML Workflows: Coordinating the steps in a machine learning pipeline, from data ingestion to model training and deployment.
Stripe Payment Links
Yes, you can create a Stripe subscription link directly from the Stripe Dashboard, which allows people to subscribe, pay, and cancel.
This is a powerful feature called Payment Links that doesn’t require any coding.
How to Create a Stripe Subscription Link āļø
Here’s the step-by-step process to create a subscription link in the Stripe UI:
- Create a Product: In your Stripe Dashboard, go to the Products section. Click “Add product” and create a new product for your subscription service (e.g., “Premium Plan”).
- Add a Recurring Price: On the product page, add a new price. This is where you’ll define the subscription’s details, such as the currency, the amount, and the billing frequency (e.g., $15 per month). Make sure to set the pricing model to “Recurring”.
- Create a Payment Link: Go to the Payment Links section of your dashboard. Click the “+ New” button.
- Select Your Product: Choose the recurring product you created in the previous steps.
- Customize the Link: In the link creation interface, you can add details and customize the payment experience. You can:
- Add a custom message.
- Collect a customer’s billing or shipping address.
- Set up a free trial period.
- Allow customers to use promotion codes.
- Redirect to a specific URL after a successful payment.
- Share the Link: Once you’ve configured the link, Stripe will generate a unique URL. You can then copy this URL and share it with your customers via email, social media, or your website.
Subscription Management Features š
Using a Stripe Payment Link for a subscription provides a complete, self-contained solution for both you and your customers.
- Payment and Subscription: When a customer clicks the link, they’re taken to a Stripe-hosted checkout page where they can enter their payment information and securely subscribe. Stripe automatically handles the recurring billing on the schedule you defined.
- Cancellation and Management: Stripe provides a Customer Portal where your customers can manage their own subscriptions. This portal is a secure, Stripe-hosted page that your customers can access to:
- Update their payment method.
- View their billing history and download invoices.
- Change their subscription plan (e.g., upgrade or downgrade).
- Cancel their subscription. To enable this, you need to configure the Customer Portal in your Stripe Dashboard and provide a link to it for your customers (you can often do this via automated emails from Stripe). This allows your customers to manage their subscriptions themselves, which significantly reduces the administrative burden on you.
FAQ
Cloudflare Free Tier
On Cloudflare’s free tier, there is no explicit limit on the number of domains (websites) you can add.
You can add and protect many domains under a single free account.
However, there are some associated limits relevant to usage and features on the free plan:
- For Cloudflare Pages projects, the free plan allows up to 100 custom domains per project.
- For Workers usage on the free tier, there is a daily request limit of 100,000 requests.
- Other feature limits and quotas apply to DNS rules, applications, and workers but are generally generous for typical free-tier usage.
Overall, while there’s no strict cap on the total domains, daily usage limits or feature quotas might impact very heavy use scenarios. For most personal or small business needs, the free tier supports multiple domains without direct domain number limits.